CDH5 HDFS HA部署

Configuring HardWare For HDFS HAjava


爲了使用Quorum-based存儲去部署一個HA集羣,應該作以下準備node

1.NameNode:運行Active和Standbye的NameNode應該有等價的配置。apache

2.JournalNode:運行Journalnode的節點ssh

3.JounalNode進程相對輕量,所以這些進程能夠相對合理的和其餘的進程並存,例如NameNode,JobTracker或者YARN。ide

4.Cloudera建議將JournalNode部署在「master」節點或者NameNode,Standby NameNode,Jobtracker等。oop

5.至少應該有3個JournalNode,edit log 的修改必須寫入大多數的JournalNode,這樣集羣可以容忍節點出錯的數量是一個;可是爲了提升集羣可以容忍出錯節點的數量,咱們能夠有大於3個的JournalNode,而且數量爲奇數個,spa

6.當運行N個JournalNode的時候,集羣容許出錯的數量最大爲(N-1)/2,當超過限制後,將不能工做,會看見相似下面的錯誤code

12/10/01 17:34:18 WARN namenode.FSEditLog: Unable to determine input streams from QJM to [10.0.1.10:8485, 10.0.1.10:8486, 10.0.1.10:8487]. Skipping.
java.io.IOException: Timed out waiting 20000ms for a quorum of nodes to respond.


Configuring SoftWare For HDFS HAorm


Core-site.xml配置
server

針對YARN的配置:

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://pezy</value>

</property>

<property> <name>ha.zookeeper.quorum</name> <value>hadoop001:2181,hadoop002:2181,hadoop003:2181</value>

</property>

【配置zookeeper集羣】


針對MR1的配置

<property>
  <name>fs.default.name</name>
  <value>hdfs://pezy</value>
</property>




hdfs-site.xml配置


<property>
  <name>dfs.nameservices</name>
  <value>pezy</value>

</property>

【這是集羣的邏輯名,能夠本身定義,需和core-site.xml中配置的名字一致】

<property> <name>dfs.ha.namenodes.pezy</name> <value>nn1,nn2</value>

</property>

【這是配置NameNode節點的邏輯名字,用逗號分隔,這個配置可讓DataNode知道集羣中全部的NameNode】

<property> <name>dfs.namenode.rpc-address.pezy.nn1</name> <value>hadoop001:8020</value> </property> <property> <name>dfs.namenode.rpc-address.pezy.nn2</name> <value>hadoop002:8020</value>

</property>

【爲NameNode進程設置完整地址和RPC端口】

<property> <name>dfs.namenode.http-address.pezy.nn1</name> <value>hadoop001:50070</value> </property> <property> <name>dfs.namenode.http-address.pezy.nn2</name> <value>hadoop002:50070</value> </property>

【設置NameNode的HTTP地址】

<property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://hadoop001:8485;hadoop002:8485;hadoop003:8485/mycluster</value> </property>

【設置JournalNode的共享文件目錄,Active NameNode負責寫入,Standby NameNode負責讀取】

<property> <name>dfs.journalnode.edits.dir</name> <value>/data/journalnode</value>

</property>

【每個journalNode節點中存儲edits和其餘的本地數據的位置】

<property> <name>dfs.client.failover.proxy.provider.pezy</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>

【HDFS客戶端經過這個JAVA類去和Active NameNode會話,經過該類可讓HDFS客戶端知道哪一個NameNode是Active狀態】

<property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/exampleuser/.ssh/id_rsa</value>

</property>

【配置NameNode宕機後的恢復策略】

<property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value>

</property>

【開啓自動恢復策略】


啓動過程:

1.各個節點啓動zookeeper

2.在一個NameNode節點:hadoop zkfc -formatZK

3.格式化一個NameNode:hdfs namenode -format

4.啓動剛格式化的NameNode:hadoop-daemon.sh start namenode

5.在另外一個NameNode中複製前面格式化的信息:

6.啓動這個NameNode

7.啓動zkfc

8.啓動全部DataNode:hadoop-daemons.sh start datanode(注意S)

相關文章
相關標籤/搜索