作者:朱超杰
1
文档编写目的
Metastore HA解决方案被设计用来处理metastore服务故障。当一个部署的metastore宕机时,metastore服务可能持续相当长的时间不可用,直到服务被重新拉起。为了避免这种服务中断情况,需要部署Hive Metastore HA模式。Cloudera建议Metastore的每个实例在单独的集群主机上运行,突出高可用作用
1.使用CM启用HMS HA
2.HMS HA功能测试
3.总结
1.CM和CDH版本为5.16.1
2.集群未启用kerberos
3.采用root用户
前置条件
1.CDH集群已安装成功并正常运行
2.集群已添加Hive服务
3.拥有Cloudera Manager的管理员账号
2
使用CM启用HMS HA
使用Cloudera Manager管理员登录CM主页。
1.进入Hive服务页面,选择“实例” -> “添加角色实例”
2.在自定义角色分配页面,为HMS服务选择安装的主机
3.审核更改,单击“完成”。
4.重启过时服务配置
重启完成后,单击“完成”
进入Hive实例页面,查看当前有两个HMS服务正常运行
3
HMS HA功能测试
3.1
HMS服务正常运行
1.使用Beeline连接HiveServer2,并进行建表测试
[root@hadoop1 ~]# beeline
beeline> !connect jdbc:hive2://hadoop1.macro.com:10000
0: jdbc:hive2://hadoop1.macro.com:10000> CREATE TABLE HMS_test(s1 int, s2 string)
. . . . . . . . . . . . . . . . . . . .> row format delimited fields terminated by '\t';
2.向表中插入数据
0: jdbc:hive2://hadoop1.macro.com:10000> load data local inpath "/data0/hms_test.txt" into table hms_test;
3.查询数据
3.2
模拟HMS服务宕机
使用CM,进入Hive实例页面,停止其中一个HMS服务
1.使用beeline连接HiveServer2,可以正常连接访问
2.查看Hive表,并执行SELECT查询
0: jdbc:hive2://hadoop1.macro.com:10000> show tables;
由上图可知,可以正常查看上一节创建的hms_test表
0: jdbc:hive2://hadoop1.macro.com:10000>select * from hms_test;
由上图可以看出,当其中一个HMS服务宕机后,依然可以访问之前创建的hms_test表,并执行查询。
3.建表测试
0: jdbc:hive2://hadoop1.macro.com:10000> CREATE TABLE hms_test2
. . . . . . . . . . . . . . . . . . . .> (s3 int,
. . . . . . . . . . . . . . . . . . . .> s4 string
. . . . . . . . . . . . . . . . . . . .> )
. . . . . . . . . . . . . . . . . . . .> row format delimited fields terminated by '\t';
4.数据插入测试
0: jdbc:hive2://hadoop1.macro.com:10000> load data local inpath "/data0/hms_test.txt" into table hms_test2;
数据插入正常
3.3
两个HMS服务同时宕机
1.使用CM,在Hive实例页面停止所有HMS服务
2.使用Beeline连接HiveServer2
由上图可以看出,依然可以正常连接访问
3.查看Hive表
0: jdbc:hive2://hadoop1.macro.com:10000> show tables;
执行报错,初始化MetaStroe失败
4.查询表中数据
0: jdbc:hive2://hadoop1.macro.com:10000> select * from hms_test;
执行报错,同样时初始化MetaStore失败
4
总结
配置HMS服务的高可用之后,当有HMS服务宕机,但只要有一个HMS服务是正常工作的,Hive client操作都可以正常使用,当所有HMS服务都宕机时,Hive client不能提供任何操作。因此,HMS服务的高可用可以解决HMS服务的不正常工作问题,避免了单点故障。但是前提是HMS服务要安装在集群的不同主机上,才能突出高可用的作用。