0
点赞
收藏
分享

微信扫一扫

0665-6.2.0-如何在CDH中配置HMS高可用

作者:朱超杰


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服务页面,选择“实例” -> “添加角色实例”


0665-6.2.0-如何在CDH中配置HMS高可用_hive


2.在自定义角色分配页面,为HMS服务选择安装的主机


0665-6.2.0-如何在CDH中配置HMS高可用_hive_02


3.审核更改,单击“完成”。


0665-6.2.0-如何在CDH中配置HMS高可用_高可用_03


4.重启过时服务配置


0665-6.2.0-如何在CDH中配置HMS高可用_hadoop_04


重启完成后,单击“完成”


0665-6.2.0-如何在CDH中配置HMS高可用_hive_05


进入Hive实例页面,查看当前有两个HMS服务正常运行


0665-6.2.0-如何在CDH中配置HMS高可用_hive_06


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';


0665-6.2.0-如何在CDH中配置HMS高可用_高可用_07


2.向表中插入数据


0: jdbc:hive2://hadoop1.macro.com:10000> load data local inpath "/data0/hms_test.txt" into table hms_test;


0665-6.2.0-如何在CDH中配置HMS高可用_hadoop_08


3.查询数据


0665-6.2.0-如何在CDH中配置HMS高可用_hadoop_09


3.2

模拟HMS服务宕机


使用CM,进入Hive实例页面,停止其中一个HMS服务


0665-6.2.0-如何在CDH中配置HMS高可用_高可用_10


1.使用beeline连接HiveServer2,可以正常连接访问


0665-6.2.0-如何在CDH中配置HMS高可用_hive_11


2.查看Hive表,并执行SELECT查询


0: jdbc:hive2://hadoop1.macro.com:10000> show tables;


0665-6.2.0-如何在CDH中配置HMS高可用_hive_12


由上图可知,可以正常查看上一节创建的hms_test表


0: jdbc:hive2://hadoop1.macro.com:10000>select * from hms_test;


0665-6.2.0-如何在CDH中配置HMS高可用_高可用_13


由上图可以看出,当其中一个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';


0665-6.2.0-如何在CDH中配置HMS高可用_hadoop_14


4.数据插入测试


0: jdbc:hive2://hadoop1.macro.com:10000> load data local inpath "/data0/hms_test.txt" into table hms_test2;


0665-6.2.0-如何在CDH中配置HMS高可用_高可用_15


数据插入正常


3.3

两个HMS服务同时宕机


1.使用CM,在Hive实例页面停止所有HMS服务


0665-6.2.0-如何在CDH中配置HMS高可用_高可用_16


2.使用Beeline连接HiveServer2


0665-6.2.0-如何在CDH中配置HMS高可用_hive_17


由上图可以看出,依然可以正常连接访问


3.查看Hive表


0: jdbc:hive2://hadoop1.macro.com:10000> show tables;


0665-6.2.0-如何在CDH中配置HMS高可用_hive_18


执行报错,初始化MetaStroe失败


4.查询表中数据


0: jdbc:hive2://hadoop1.macro.com:10000> select * from hms_test;


0665-6.2.0-如何在CDH中配置HMS高可用_hive_19


执行报错,同样时初始化MetaStore失败


4

总结


配置HMS服务的高可用之后,当有HMS服务宕机,但只要有一个HMS服务是正常工作的,Hive client操作都可以正常使用,当所有HMS服务都宕机时,Hive client不能提供任何操作。因此,HMS服务的高可用可以解决HMS服务的不正常工作问题,避免了单点故障。但是前提是HMS服务要安装在集群的不同主机上,才能突出高可用的作用。



举报

相关推荐

0 条评论