Hive高可用配置

news2025/1/9 16:39:14

在hive的商用上没有集群一说,而且它本身也不是数据库,只是hadoop的数据sql化工具,但是hive可以配置高可用,通常业内对元数据服务会开5个,而HS2服务开3个,来保证hive服务的高可用

配置方式也很简单,你只需在原有的hive-site.xml文件上,配置如下信息即可

<!--启用hiveserver2高可用-->
<property>
    <name>hive.server2.support.dynamic.service.discovery</name>
    <value>true</value>
</property>
<!--hiveserver2高可用向zookeeper注册的信息路径名-->
<property>
    <name>hive.server2.zookeeper.namespace</name>
    <value>hiveserver2_zk</value>
</property>
<!--zookeeper集群-->
<property>
    <name>hive.zookeeper.quorum</name>
    <value>node1:2181,node2:2181,node3:2181</value>
</property>
<!--hive访问zookeeper集群的端口号-->
<property>
    <name>hive.zookeeper.client.port</name>
    <value>2181</value>
</property>
<!--HS2高可用的服务节点,可以具体节点改这个配置也可以改成4个0-->
<property>
 	<name>hive.server2.thrift.bind.host</name>
  	<value>node2</value>
</property>
<!--配置metastore高可用,所有HS2服务节点统一设置即可-->
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://node2:9083,thrift://node3:9083</value>
</property>

随后将hive整体同步到高可用服务对应的节点上,并在对应的节点上,使用下面的命令启动对应的服务

/opt/hive313/bin/hive --service metastore &
/opt/hive313/bin/hive --service hiveserver2 &

随后进入zkCli里面确保配置文件里面写的的zk节点已经注册
在这里插入图片描述
验证连接,此时连接的jdbc路径就要变一种格式了,原来单一hive节点用如下简单的格式即可

/opt/hive-3.1.3/bin/beeline -u jdbc:hive2://node2:10000

当然上面这个命令还是能用的,只是但和直接访问一个namenode的9000端口一样,是直接访问一个定死的服务,而高可用的连接路径需要使用如下格式

jdbc:hive2://node1:2181,node2:2181,node3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk;user=root;password=123456

上面这个格式你可以简写成如下格式,前提是你的zk用的就是2181端口,后面的用户名和密码看情况携带

jdbc:hive2://node1,node2,node3/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk root 123456

但是!!!!坑爹的来了,有三个天坑!!!!你要知道

第一个天坑!!beeline要连接高可用的HS2,不能用-u参数了,必须进去之后操作

就是说下面这个命令不能用了
/opt/hive-3.1.3/bin/beeline -u 

你需要进入beeline
[root@node3 ~]# /opt/hive313/bin/beeline 
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hive313/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop323/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Beeline version 3.1.3 by Apache Hive
----------------------------》进入bee后用!connect 方式才能连接
beeline> !connect jdbc:hive2://node1,node2,node3/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk
Connecting to jdbc:hive2://node1,node2,node3/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk
Enter username for jdbc:hive2://node1,node2,node3/: 12345
Enter password for jdbc:hive2://node1,node2,node3/: *****
24/11/30 17:18:43 [main]: INFO jdbc.HiveConnection: Connected to node3:10000
Connected to: Apache Hive (version 3.1.3)
Driver: Hive JDBC (version 3.1.3)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://node1,node2,node3/> show tables;
INFO  : Compiling command(queryId=root_20241130172336_02962b8a-b8cd-4b10-bd3d-4eee69993b74): show tables
INFO  : Concurrency mode is disabled, not creating a lock manager
INFO  : Semantic Analysis Completed (retrial = false)
INFO  : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:tab_name, type:string, comment:from deserializer)], properties:null)
INFO  : Completed compiling command(queryId=root_20241130172336_02962b8a-b8cd-4b10-bd3d-4eee69993b74); Time taken: 0.585 seconds
INFO  : Concurrency mode is disabled, not creating a lock manager
INFO  : Executing command(queryId=root_20241130172336_02962b8a-b8cd-4b10-bd3d-4eee69993b74): show tables
INFO  : Starting task [Stage-0:DDL] in serial mode
INFO  : Completed executing command(queryId=root_20241130172336_02962b8a-b8cd-4b10-bd3d-4eee69993b74); Time taken: 0.03 seconds
INFO  : OK
INFO  : Concurrency mode is disabled, not creating a lock manager
+-----------+
| tab_name  |
+-----------+
| t         |
+-----------+
1 row selected (0.814 seconds)
0: jdbc:hive2://node1,node2,node3/>

第二个天坑!!!!无论你后面是用Java的JDBC连接还是其他的方式,连接路径中zk集群地址后面的/不能少!!必须是jdbc:hive2://zk集群/;。。。。格式,即使你指定连接的库也要在末尾有一个斜杠jdbc:hive2://zk集群/default-----就是这里末尾的斜杠------>>/<<-----------------;。。。。

第三个天坑!!!高可用连接和Tez不兼容,这就导致你要是用高可用连接那就不能把任务跑在Tez引擎上面,不然会发生guava包掉包的问题。格外的要说一下这个掉包的问题,如果看过我分享的hadoop测试集群3.x搭建方式的朋友,应该都知道hadoop3.x和hive3.x搭配的时候,需要将hadoop的guava包替换给hive,因为hive3.x自带的guava包版本较低,使得启动的时候报错,而在这个基础上再配置一个本身和hive不是完全兼容的tez时,需要从源码开始编译,并且手动强制的在hive-env.sh中将guava包声明给hive,就是为了解决任务跑在tez上面会掉guava包,从而导致任务刚启动就会报java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V的错误,而当你以高可用的方式连接HS2,并且任务跑在tez上,你会发现,任务能正常起来,但是在reduce阶段,guava包就掉了,这个问题我在工作中和产品线上的rd去聊过,他们当时二次封装的时候也发现了这个问题,但是没解决方法,最后默认hive还时用MR,底层逻辑判断了一下,如果用户的提交参数带了tez引擎,那么跑任务用的HS2连接用的是当前服务中存活的单一服务连接方式,至于这个存活节点列表是写了一套寻址的逻辑,导致任务的日志里面,会出现WARE级别的ipc相关的寻址信息,每次用户用的时候都会很疑惑这是个报错吗?前段时间干脆下线了对用户直接开放的hive任务类型,实在需要才以白名单的方式提供,来减少维护成本,真的能笑死。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2251242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用数学方法实现K-Nearest Neighbors(KNN)算法

目录 ​编辑 引言 KNN算法的数学基础 1. 距离度量 欧氏距离 曼哈顿距离 2. 寻找最近邻 3. 决策规则 分类 回归 4. 权重 KNN算法的实现步骤 1. 参数选择 2. 实现 导入必要的库 加载数据集 划分训练集和测试集 创建KNN模型 训练模型 预测测试集 计算准确率 …

提升用户体验、创新产品与高效运营,企业发展三驾马车

​在当今竞争激烈的市场环境中&#xff0c;企业要想脱颖而出并持续发展&#xff0c;需同时在提升用户体验、推动产品创新以及实现内部高效运营方面下功夫。 提升用户体验至关重要。它能提高用户满意度和忠诚度&#xff0c;增加用户口碑与推荐&#xff0c;提升企业品牌形象。可通…

在 Mac(ARM 架构)上安装 JDK 8 环境

文章目录 步骤 1&#xff1a;检查系统版本步骤 2&#xff1a;下载支持 ARM 的 JDK 8步骤 3&#xff1a;安装 JDK步骤 4&#xff1a;配置环境变量步骤 5&#xff1a;验证安装步骤 6&#xff1a;注意事项步骤7&#xff1a;查看Java的安装路径 在 Mac&#xff08;ARM 架构&#xf…

【Redis】—0.1、Ubuntu20.04源码编译部署redis6.2.7

1、Redis下载 创建redis的目录&#xff1a;mkdir -p /data/db/redis 下载redis&#xff1a;https://redis.io/download/ 2、上传文件到目录后解压 tar xvf redis-6.2.7.tar.gz 3、安装redis的依赖软件更新gcc&#xff0c;装一系列软件包&#xff0c;gcc&#xff0c;g和make。 s…

redis都有哪些用法

1. 缓存&#xff08;Caching&#xff09;&#xff1a; • Redis常被用作缓存层&#xff0c;存储那些频繁访问但更新不频繁的数据&#xff0c;以减少数据库的访问压力&#xff0c;提高数据读取速度。 • LRU&#xff08;Least Recently Used&#xff09;淘汰策略&#xff1a;Red…

npm install -g@vue/cli报错解决:npm error code ENOENT npm error syscall open

这里写目录标题 报错信息1解决方案 报错信息2解决方案 报错信息1 使用npm install -gvue/cli时&#xff0c;发生报错&#xff0c;报错图片如下&#xff1a; 根据报错信息可以知道&#xff0c;缺少package.json文件。 解决方案 缺什么补什么&#xff0c;这里我们使用命令npm…

爬取boss直聘上海市人工智能招聘信息+LDA主题建模

爬取boss直聘上海市人工智能招聘信息 import time import tqdm import random import requests import json import pandas as pd import os from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriv…

【STM32+HAL】FreeRTOS学习小札

一、RTOS程序任务结构 如上图所示&#xff0c;在实时操作系统中&#xff0c;开发人员可以把要实现的功能划分为多个任务&#xff0c;每个任务负责实现其中的一部分&#xff0c;每个任务都是一个很简单的程序&#xff0c;通常是一个死循环。 二、多任务系统基本概念 1、FreeRTO…

路径规划之启发式算法之二:遗传算法(Genetic Algorithm)

遗传算法&#xff08;Genetic Algorithm, GA&#xff09;是一种基于自然选择和遗传学原理的优化搜索算法&#xff0c;它通过模拟自然界的进化过程来寻找最优解。 一、基本原理 遗传算法的基本原理是模拟自然选择、遗传和突变等生物进化过程。它通过将问题的求解过程转换成类似…

【ubuntu24.04】GTX4700 配置安装cuda

筛选显卡驱动显卡驱动 NVIDIA-Linux-x86_64-550.135.run 而后重启:最新的是12.6 用于ubuntu24.04 ,但是我的4700的显卡驱动要求12.4 cuda

Springboot的文件上传与下载

Springboot的文件上传与下载 文章说明配置路径映射实体类、服务与控制器前端页面前端服务器搭建 文章说明 文件上传实现了&#xff0c;文件下载是非常简单的&#xff0c;只需要通过浏览器即可下载成功&#xff1b;于是就没有实现专门的接口 配置路径映射 通过 public void addR…

多方法做配对样本t检验(三)

Wilcoxon符号秩检验 Wilcoxon符号秩检验&#xff08;Wilcoxon Signed-Rank Test&#xff09; 是一种非参数统计方法&#xff0c;用于检验两组相关样本&#xff08;配对样本&#xff09;之间的差异是否显著。它通常用来代替配对样本t检验&#xff0c;特别是在数据不符合正态分布…

如何选择最适合企业的ETL解决方案?

在今天的大数据时代&#xff0c;企业的数据管理和处理变得愈发重要。企业也越来越依赖于数据仓库和数据湖来提取、转换和加载&#xff08;ETL&#xff09;关键业务信息。一个高效、灵活的ETL解决方案不仅能提升数据处理能力&#xff0c;还能为企业决策提供有力支持。然而&#…

前端node.js

一.什么是node.js 官网解释:Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。 二.初步使用node.js 需要区分开的是node.js和javascript互通的只有console和定时器两个API. 三.Buffer Buffer 是一个类似于数组的 对象&#xff0c;用于表示固定长度的字节序列。Buffer…

Facebook的开源项目解析:推动开发者社区的技术进步

Facebook&#xff0c;作为全球领先的社交平台之一&#xff0c;其在技术领域的创新不仅体现在产品功能的实现上&#xff0c;也积极推动开源社区的发展。开源项目已经成为Facebook技术战略的重要组成部分&#xff0c;通过开源&#xff0c;Facebook不仅加速了技术进步&#xff0c;…

本地学习axios源码-如何在本地打印axios里面的信息

1. 下载axios到本地 git clone https://github.com/axios/axios.git 2. 下载react项目, 用vite按照提示命令配置一下vite react ts项目 npm create vite my-vue-app --template react 3. 下载koa, 搭建一个axios请求地址的服务端 a.初始化package.json mkdir koa-server…

电阻可靠性的内容

一、影响电阻可靠性的因素&#xff1a; 影响电阻可靠性的因素有温度系数、额定功率&#xff0c;最大工作电压、固有噪声和电压系数 &#xff08;一&#xff09;温度系数 电阻的温度系数表示当温度改变1摄氏度时&#xff0c;电阻阻值的相对变化&#xff0c;单位为ppm/℃.电阻温…

uniapp联系我们页的设计和实现

联系我们页 代码 map文档&#xff1a;map | uni-app官网 (dcloud.net.cn) <template><view class"contact"><image class"img" src"http://www.itcast.cn/2018czydz/images/gywmban.jpg"></image><view class"…

算法竞赛进阶指南——位运算

算法竞赛进阶指南——位运算 与或非异或and&#xff0c;&or&#xff0c;|not&#xff0c;~xor&#xff0c;^ 在m位二进制数中&#xff0c;通常称最低位为第0位&#xff0c;从右到左以此类推&#xff0c;最高位是第m-1位 补码&#xff1a; unsigned int&#xff1a; 直接把…

【科研】9如何高效阅读和理解学术论文

【科研】9如何高效阅读和理解学术论文 写在最前面一、为什么需要系统的阅读方法&#xff1f;二、阅读论文的11步方法三、实践示例四、常见问题解答五、结语 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你的陪伴与支持 ~ …