Hiveserver2高可用实现
在生产环境中使用Hive,强烈建议使用HiveServer2来提供服务,好处有:
- 在应用端不用部署Hadoop和Hive客户端;
- 相比hive-cli方式,HiveServer2不用直接将HDFS和Metastore暴漏给用户;
- 有安全认证机制,并且支持自定义权限校验;
- 有HA机制,解决应用端的并发和负载均衡问题
- JDBC方式,可以使用任何语言,方便与应用进行数据交互;
- 从2.0开始,HiveServer2提供了WEB UI。
Hive从0.14开始,使用Zookeeper实现了HiveServer2的HA功能(ZooKeeperService Discovery),Client端可以通过指定一个nameSpace来连接HiveServer2,而不是指定某一个host和port。
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. Hiveserver2启动
nohup hive --service hiveserver2 --hiveconf hive.server2.thrift.port= \
--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
3.jdbc连接hive server方式
JDBC Url
jdbc:hive2://<zookeeper quorum>/<dbName>;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
参数说明
a) <zookeeper quorum> 为Zookeeper的集群链接串,如zkNode1:2181,zkNode2:2181,zkNode3:2181
b) <dbName> 为Hive数据库,默认为default
c) serviceDiscoveryMode=zooKeeper 指定模式为zooKeeper
d) zooKeeperNamespace=hiveserver2 指定ZK中的nameSpace,即参数hive.server2.zookeeper.namespace所定义,我定义为hiveserver2_zk
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连接驱动
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连接驱动
Hiveserver2高可用实现的更多相关文章
- HiveServer2的负载均衡高可用与ActicePassive高可用浅析
负载均衡的高可用 最近在工作中遇到了hiveserver2需要部署高可用的场景,去网上搜索了解过后,用了绝大多数人推荐的共同方法: Property_name Property_value Descr ...
- Hive扩展功能(五)--HiveServer2服务高可用
软件环境: linux系统: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8 主机配置: 一共m1, m2, m3这五部机, 每部主机的用户名都为centos ...
- CentOS7+Hadoop2.7.2(HA高可用+Federation联邦)+Hive1.2.1+Spark2.1.0 完全分布式集群安装
1 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.9.1 2.9.2 2.9.2.1 2.9.2.2 2.9.3 2.9.3.1 2.9.3.2 2.9.3.3 2. ...
- day11hadoop高可用和Hive
PS:视频一直就是在演示 高可用(比较偏运维一点) PS:Active是对外提供服务的,standBy是从属备用的:但是他们是怎样保证同步的数据的呢?一个运行中zookeeper上的第三方那个工具 ...
- 在一台服务器上搭建相对高可用HiveServer实践
本文来自网易云社区 作者:刘杰 问题及原因 组里之前搭建了一个hiveserver提供给猛犸上的ETL程序调用,hiveserver隔三差五地挂掉重启,网上查了些资料,也咨询了猛犸那边维护hivese ...
- spark的thriftservr的高可用
triftserver是基于jdbc的一个spark的服务,可以做web查询,多客户端访问,但是thriftserver没有高可用,服务挂掉后就无法在访问,所有使用注册到zk的方式来实现高可用 一.版 ...
- Nginx反向代理,负载均衡,redis session共享,keepalived高可用
相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...
- HA 高可用软件系统保养指南
又过了一年 618,六月是公司一年一度的大促月,一般提前一个月各系统就会减少需求和功能的开发,转而更多去关注系统可用性.稳定性和管控性等方面的非功能需求.大促前的准备工作一般叫作「备战」,可以把线上运 ...
- asp.net core 实战之 redis 负载均衡和"高可用"实现
1.概述 分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的"高可用"实现, 呵呵双引号的"高可用"并不是 ...
随机推荐
- CodeBlocks中去掉下划线的方法
[问题] 如上图所示,某些字符下面会出现红色下划线,看着挺难受后的,决定想办法去掉. 这是拼写检查插件在作怪,把这个插件屏蔽掉就OK了. [步骤一]点击[插件]下的[管理插件]按钮 [步骤二]点击[管 ...
- JS中encodeURIComponent函数用php解码的代码
JS中encodeURIComponent函数给中文编码后,如何用php解码?? 前提:编码前的中文可能是gbk,gb2312,utf-8等. 复制代码 代码如下: urldecode() iconv ...
- HappytimeOnvif Client V8.3的使用
1.system-->system settings-->勾选RTP RTSP 2.start video poll
- 自动化部署--shell脚本--2
node1和node2都装apache [root@linux-node1 ~]# yum install httpd -y Loaded plugins: fastestmirror Loadi ...
- AI三巨头获2018年图灵奖!
ACM 宣布,2018 年图灵奖获得者是号称深度学习三巨头的 Yoshua Bengio, Yann LeCun 和 Geoffrey Hinton,得奖理由是:他们在概念和工程上取得的巨大突破,使得 ...
- JDK8新增时间类型用在JPA中的问题
之前数据库存储日期时间类型时一般POJO实体对应属性为java.util.Date,然后通过JPA注解指定它是日期格式或是日期时间格式,JDK8中新增了更好的时间API,如表示本地日期的LocalDa ...
- 第1节 常用DOS(磁盘操作系统)命令
一.打开DOS命令窗口 1)快捷键:win + r,打开命令提示符窗口: 2)左击“开始”菜单,在运行里输入cmd,按回车打开命令提示符窗口: 二.常见命令 1)文件夹操作: d:+ 回车:盘符切换 ...
- JDK动态代理实例
最近看<深入浅出MyBatis技术原理与实战>这本书时,里面讲到Mapper接口的内部实现是通过JDK动态代理生成实现类,联想到之前看<SPRING技术内幕>这本书里也常常提到 ...
- redis之 Redis持久化配置
Redis持久化配置 Redis的持久化有2种方式 1快照 2是日志 Rdb快照的配置选项 save 900 1 // 900内,有1条写入,则产生快照 save 300 1000 ...
- 如何编译运行HanLP自然语言处理包
master分支 对于master分支,编译方法如下: git clone https://github.com/hankcs/HanLP.git mvn install -DskipTests · ...