配置其他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日志中的此錯誤:
-- ::, FATAL master.HMaster (HMaster.java:abort()) - Unhandled exception. Starting shutdown.
java.lang.IllegalArgumentException: java.net.UnknownHostException: ha-nn
at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:)
at org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy(NameNodeProxies.java:)
at org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:)
...
如果是這樣,請确認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的值。