配置其他CDH组件以使用HDFS HA
可以将HDFS高可用性NameNodes与CDH的其他组件一起使用。
配置HBase以使用HDFS HA
配置HBase以使用HDFS HA使用Cloudera Manager
如果您将HBase配置为使用启用HA的HDFS实例,则Cloudera Manager会自动为您处理HA配置。
使用命令行配置HBase以使用HDFS HA
要配置HBase使用HDFS HA,请按以下步骤操作。
1.关闭HBase群集
1.1停止Thrift服务器和客户端:
sudo service hbase-thrift stop
1.2通过关闭Master和RegionServers来停止集群:
在主控主机上使用以下命令:
sudo service hbase-master stop
在承载RegionServer的每个主机上使用以下命令:
sudo service hbase-regionserver stop
2.配置hbase.rootdir
将hbase-site.xml中的分布式文件系统URI更改为hdfs-site.xml中dfs.nameservices属性中指定的名称。客户端还必须能够访问hdfs-site.xml的dfs.client。*设置才能正确使用HA。
例如,假设HDFS高可用性属性dfs.nameservices在hdfs-site.xml中设置为ha-nn。要将HBase配置为使用HA NameNode,请将相同的值指定为hbase-site.xml的hbase.rootdir值的一部分:
<!-- Configure HBase to use the HA NameNode nameservice -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://ha-nn/hbase</value>
</property>
3.重新启动HBase
启动HBase Master。
启动每个HBase RegionServers。
4.HBase-HDFS HA故障排除
问题:HMasters无法启动。
解决方案:检查HMaster日志中的此错误:
2012-05-17 12:21:28,929 FATAL master.HMaster (HMaster.java:abort(1317)) - Unhandled exception. Starting shutdown.
java.lang.IllegalArgumentException: java.net.UnknownHostException: ha-nn
at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:431)
at org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy(NameNodeProxies.java:161)
at org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:126)
...
如果是这样,请确认Hadoop的hdfs-site.xml和core-site.xml文件位于hbase / conf目录中。如果你把你的配置放在非标准的地方,这可能是必要的。
升级Hive Metastore以使用HDFS HA
Hive Metastore可以配置为使用HDFS高可用性。
使用Cloudera Manager升级Hive Metastore以使用HDFS HA
1.去Hive服务。
2.选择操作>停止。
注意:您可能需要先停止Hue和Impala服务(如果存在),因为它们依赖于Hive服务。
单击停止以确认该命令。
3.备份Hive Metastore数据库。
4.选择“操作”>“更新Hive Metastore NameNodes”并确认该命令。
5.选择操作>开始。
如果在更新Metastore之前停止了它们,请重新启动Hue和Impala服务。
使用命令行升级Hive Metastore以使用HDFS HA
重要:
在不使用Cloudera Manager的系统上遵循这些命令行指示信息。 此信息特别适用于CDH 5.11.x.有关其他版本的信息,请参阅Cloudera文档。
要配置Hive Metastore以使用HDFS HA,请更改记录以反映在dfs.nameservices属性中指定的位置,使用Hive metatool获取和更改位置。
注意:在尝试升级Hive Metastore以使用HDFS HA之前,请关闭Metastore并将其备份到持久存储区。
如果您不确定使用哪个版本的Avro SerDe,请同时使用serdePropKey和tablePropKey参数。例如:
$ hive --service metatool -listFSRoot
.
.
.
hdfs://<oldnamenode>.com/user/hive/warehouse
$ hive --service metatool -updateLocation hdfs://<new_nameservice1>
hdfs://<oldnamenode>.com -tablePropKey <avro.schema.url>
-serdePropKey <schema.url>
.
.
.
$ hive --service metatool -listFSRoot
.
.
.
hdfs://nameservice1/user/hive/warehouse
其中:
hdfs://oldnamenode.com/user/hive/warehouse 标识NameNode的位置
hdfs://nameservice1 指定新的位置并且应该匹配dfs.nameservices属性的值。
tablePropKey是一个表属性键,其值字段可能引用HDFS NameNode位置,因此可能需要更新。要更新Avro SerDe模式URL,请为此参数指定avro.schema.url。
serdePropKey是SerDe属性键,其值域可能引用HDFS NameNode位置,因此可能需要更新。要更新Haivvero模式URL,请为此参数指定schema.url。
注意:Hive metatool是尽力更新尽可能多的Hive Metastore记录的尽力服务。如果在记录更新期间遇到错误,则跳到下一条记录。
使用Cloudera Manager将Hue配置为使用HDFS HA
1添加HttpFS角色。
2命令完成后,转到Hue服务。
3单击配置选项卡。
4找到HDFS Web界面角色属性或通过在搜索框中键入其名称来搜索它。
5选择您刚创建的HttpFS角色而不是NameNode角色,然后保存更改。
6重新启动Hue服务。
配置Impala以使用HDFS HA
1如上一节所述,完成重新配置Hive Metastore数据库的步骤。 Impala与Hive共享相同的底层数据库,以管理数据库,表格等的元数据。
2从Impala shell发出INVALIDATE METADATA语句。此一次性操作使群集中的所有Impala守护程序都知道Hive Metastore数据库的最新设置。或者,重新启动Impala服务。
配置Oozie以使用HDFS HA
要将Oozie工作流配置为使用HDFS HA,请使用HDFS名称服务,而不是工作流的元素中的NameNode URI。
例如:
<action name="mr-node">
<map-reduce>
<job-tracker>${jobTracker}</job-tracker>
<name-node>hdfs://ha-nn
其中ha-nn是hdfs-site.xml中dfs.nameservices的值。