Hiveserver2的高可用搭建


1 部署启动hiveserver2

1.1 配置hive-site.xml

利用Xshell工具连接虚拟机

进入hive安装目录下的conf文件夹,更改hive-site.xml配置文件其中的配置hive-site.xml

你会发现/usr/hive/apache-hive-2.3.3-bin/conf/并没有hive-site.xml文件直接新建一个就行

[root@master hive]# cd apache-hive-2.3.3-bin/conf/
#创建文件
[root@master conf]# touch hive-site.xml
#编辑
[root@master conf]# vim hive-site.xml 

在hive-site.xml中写入

ip改为自己的

<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://192.168.134.154:3306/hive</value>
        </property>

        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>com.mysql.jdbc.Driver</value>
        </property>

        <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>root</value>
        </property>

        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>root</value>
        </property>

        <property>
                <name>hive.metastore.schema.verification</name>
                <value>false</value>
        </property>
	<property> 
   		 <name>hive.cli.print.current.db</name>
		 <value>true</value>
	</property>
	<property> 
	         <name>hive.cli.print.header</name>
	         <value>true</value>
	</property>
	<!-- 这是hiveserver2 -->
	<property>
       		 <name>hive.server2.thrift.port</name>
     		 <value>10000</value>
	</property>

    	<property>
       		<name>hive.server2.thrift.bind.host</name>
       		<value>192.168.134.154</value>
     	</property>

</configuration>

1.2 配置hadoop中的core-site.xml文件

进入到hadoop的安装目录下的etc/hadoop文件夹,配置其中的core-site.xml文件

注意:如果是hadoop集群而不是单机版,需要更改所有虚拟机上的core-site.xml文件

在最后追加

<!-- 如果连接不上10000 -->

<property>     
	<name>hadoop.proxyuser.root.hosts</name>     
	<value>*</value>
 </property> 
<property>     
	<name>hadoop.proxyuser.root.groups</name>    
    <value>*</value> 
</property>
<property>     
	<name>hadoop.proxyuser.zhaoshb.hosts</name>     
	<value>*</value> 
</property> 
<property>     
	<name>hadoop.proxyuser.zhaoshb.groups</name>     
	<value>*</value> 
</property>

1.3 测试

首先启动你集群中的Zookeeper和Hadoop

然后在安装hive的主机上启动hiveserver2

因为配置好了hive的环境变量.所以我们可以直接在任何文件夹下运行
不然的话需要进到hive安装目录的bin下

[root@master ~]# hiveserver2
#或者
[root@master ~]# hive --service hiveserver2
123

这个时候你的页面会一直卡在这里,这是正常的,因为你是启动了一个服务
在这里插入图片描述

你只需要再开一个Xshell窗口连接即可

在这里插入图片描述

在新开的窗口操作

#进入beeline
[root@master ~]# beeline
#连接10000端口
beeline> !connect jdbc:hive2://192.168.134.154:10000
Connecting to jdbc:hive2://192.168.134.154:10000
Enter username for jdbc:hive2://192.168.134.154:10000: root #用户名root
Enter password for jdbc:hive2://192.168.134.154:10000: **** #密码root

然后使用浏览器在你的192.168.134.154(安装hive的主机ip地址):10002查看

在这里插入图片描述

接下来可以在hiveserver2中操作,基本操作和hive中一样

0: jdbc:hive2://192.168.134.154:10000> show databases;
+----------------+
| database_name  |
+----------------+
| default        |
+----------------+
1 row selected (2.51 seconds)

2 高可用部署

2.1 hive-site.xml添加配置

<property>
    <name>hive.server2.support.dynamic.service.discovery</name>
    <value>true</value>
</property>
<property>
    <name>hive.server2.zookeeper.namespace</name>
    <value>hiveserver2_zk</value>
</property>
<property>
    <name>hive.zookeeper.quorum</name>
    <value>zkNode1:2181,zkNode2:2181,zkNode3:2181</value>
</property>
<property>
    <name>hive.zookeeper.client.port</name>
    <value>2181</value>
</property>
<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>0.0.0.0</value>
</property>
<property>
    <name>hive.server2.thrift.port</name>
    <value>10001</value> 
    <!--//两个HiveServer2实例的端口号要一致 --!>
</property>

2.2 Hiveserver2启动

nohup hive --service hiveserver2 --hiveconf  hive.server2.thrift.port=10001 \ 
--hiveconf hive.metastore.uris='thrift://192.168.1.252:9083,thrift://192.168.1.253:9084' \
--hiveconf hive.server2.zookeeper.namespace=hiveserver2/lenmom--hiveconf hive.log.dir=/hive/logs/server2_10001 \
--hiveconf hive.exec.scratchdir=/user/lenmom/tmpdata &

参数说明:
a) hiveserver2端口:10001
b) metastore的uri:thrift://192.168.10.34:9083,thrift://192.168.10.35:9084,
c) hiveserver2的轮询分组命名空间:hiveserver2/lenmom
d) 日志目录:/hive/logs/server2_10001
e) 临时文件目录:/user/lenmom/tmpdata

2.3 jdbc连接hive server方式

JDBC Url

jdbc:hive2://<zookeeper quorum>/<dbName>;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2

参数说明
a) 为Zookeeper的集群链接串,如zkNode1:2181,zkNode2:2181,zkNode3:2181
b) 为Hive数据库,默认为default
c) serviceDiscoveryMode=zooKeeper 指定模式为zooKeeper
d) zooKeeperNamespace=hiveserver2 指定ZK中的nameSpace,即参数hive.server2.zookeeper.namespace所定义,我定义为hiveserver2_zk

2.4. 客户端轮询方式连接

beeline -u "jdbc:hive2://jfhadoop005:9501,jfhadoop006:9501,jfhadoop007:9501/ssjf;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2/lenmom;?mapreduce.job.queuename=root.ssfj" -n lenmom -plenmom -d org.apache.hive.jdbc.HiveDriver

参数说明:
-u
jfhadoop005:9501 三个zk的9501端口,轮询用
lenmom 租户对应的hiveserver库
serviceDiscoveryMode=zooKeeper; zk轮询发现hs2
zooKeeperNamespace=hiveserver2/lenmom 轮询的命名空间,指定轮询服务器的范围 和 hiveserver2的轮询分组命名空间对应。
?mapreduce.job.queuename=root.lenmom 对照的yarn资源分组队列
-n 多租户用户名
-p 多租户用户密码
-d org.apache.hive.jdbc.HiveDriver hive连接驱动

2.5 客户端直连方式连接

beeline -u "jdbc:hive2://192.168.1.252:10000/lenmom" -n  lenmom -p lenmom -d org.apache.hive.jdbc.HiveDriver 

参数说明:
hs2地址和端口:192.168.10.32:10000
lenmom 租户对应的hiveserver库
-n 多租户用户名
-p 多租户用户密码
-d org.apache.hive.jdbc.HiveDriver hive连接驱动

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
高可用集群(High Availability Cluster)是指通过一系列技术和设计,使得系统能够在面对硬件故障、网络中断或大规模并发访问时,仍能保持服务的连续性和数据的完整性。Hive作为基于Hadoop的数据仓库工具,可以通过搭建高可用集群来提高其服务的可靠性。以下是搭建高可用Hive集群的基本步骤和关键组件: 1. **Hadoop HA(High Availability)基础**: - HDFS Federation: 将HDFS划分为多个相互独立但共享元数据的集群,每个集群有自己的NameNode。 - YARN HA: 提供ResourceManager和NodeManager的备用实例,保证资源管理和任务调度的可用性。 2. **Hive Metastore HA**: - 使用Hive的Metastore HA模式(如ZooKeeper或Oracle数据库)来管理元数据,保证多个Metastore实例之间的数据一致性。 - 使用HiveServer2的HQuorum模式,选择多个HiveServer2实例,客户端通过ZooKeeper进行负载均衡。 3. **Master选举机制**: - NameNode和ResourceManager都采用心跳检测和选举机制,当主节点失效时自动切换到备节点。 4. **数据复制**: - 可以考虑在不同节点间复制Hive数据目录,比如使用HBase作为底层存储,提供更高的容错性和并行读写能力。 5. **监控和报警**: - 安装和配置监控工具(如Ganglia、Prometheus等),实时监控各节点状态,及时发现和处理问题。 6. **负载均衡**: - 使用HAProxy或类似的负载均衡器,将客户端请求分发到各个HiveServer2实例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵广陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值