天天看點

CDH中配置HDFS HA

我一共安裝了三個節點的叢集,對于 ha 方案來說,三個節點準備安裝如下服務:

cdh1:hadoop-hdfs-namenode(primary) 、hadoop-hdfs-journalnode、hadoop-hdfs-zkfc

cdh2:hadoop-hdfs-namenode(standby)、hadoop-hdfs-journalnode、hadoop-hdfs-zkfc

cdh3: hadoop-hdfs-journalnode

根據上面規劃,在對應節點上安裝相應的服務。

停掉叢集上所有服務。

停止服務叢集的所有用戶端程式,包括定時任務。

a,查找本地配置的檔案目錄(屬性名為 dfs.name.dir 或者 dfs.namenode.name.dir或者hadoop.tmp.dir )

通過上面的指令,可以看到類似以下資訊:

b,對hdfs資料進行備份

在 cdh1、cdh2、cdh3 上安裝 hadoop-hdfs-journalnode

在 cdh1、cdh2 上安裝 hadoop-hdfs-zkfc:

修改/etc/hadoop/conf/core-site.xml,做如下修改:

修改/etc/hadoop/conf/hdfs-site.xml,删掉一些原來的 namenode 配置,增加如下:

将配置檔案同步到叢集其他節點:

在journalnode的三個節點上建立目錄:

在兩個nn上配置hdfs使用者間無密碼登陸:

對于 cdh1:

對于 cdh2:

啟動cdh1、cdh2、cdh3上的 hadoop-hdfs-journalnode 服務

在namenode上初始化共享存儲,如果沒有格式化,則先格式化:

啟動namenode:

cdh2作為 standby namenode,在該節點上先安裝namenode服務

再運作:

如果是使用了kerberos,則先擷取hdfs的ticket再執行:

然後,啟動 standby namenode:

在兩個namenode上,即cdh1和cdh2,安裝hadoop-hdfs-zkfc

在任意一個namenode上下面指令,其會建立一個znode用于自動故障轉移。

然後再兩個 namenode 節點上啟動zkfc:

分别通路 http://cdh1:50070/ 和 http://cdh2:50070/ 檢視誰是 active namenode,誰是 standyby namenode。

檢視某namenode的狀态:

執行手動切換:

再次通路 http://cdh1:50070/ 和 http://cdh2:50070/ 檢視誰是 active namenode,誰是 standyby namenode。

先停掉 hbase,然後修改/etc/hbase/conf/hbase-site.xml,做如下修改:

在 zookeeper 節點上運作/usr/lib/zookeeper/bin/zkcli.sh

最後啟動 hbase 服務。

運作下面指令将hive的metastore的root位址的hdfs nameservice。

不需要做什麼修改,但是一定要記住 core-site.xml 中 <code>fs.defaultfs</code> 參數值要帶上端口号,在cdh中為 8020。

繼續閱讀