高可用完全分佈式搭建

高可用的完全分佈式搭建

HA HDFS結構圖

在這裏插入圖片描述

這種設計模式的特點:

①採用了兩個namenode,一個對外提供服務,一個同步備份namenode元數據以待切換,防止發生異常,導致namenode掛掉。
②所有的datenode同時向兩個NameNode彙報數據塊信息。
③JN集羣用於備份傳遞ANN的信息和文件
④兩個NN,啓動時一個會處於activity,一個會處於standby狀態
⑤處於standby狀態的節點,用於備份和完成edits.log文件的合併,併產生新的image,推送回處於actiity狀態的NN

兩種切換模式

①手動切換:通過命令實現主備之間的切換,可以用HDFS升級等場合
②自動切換:基於Zookeeper實現

Zookeeper自動切換方案

①ZooKeeper Failover Controller:監控NameNode健康狀態
②並向Zookeeper註冊NameNode
③NameNode掛掉後,ZKFC爲NameNode競爭鎖,獲得ZKFC 鎖的NameNode變爲active

JN權值分配

選舉規則:大於半數以上,則獲得選舉權

HA HDFS配置節點表

在這裏插入圖片描述

集羣搭建步驟

配置免密登錄

node01->node01  
node01->node02  
node01->node03 
node01->node04
node02->node01

配置所有節點的JDK

修改hdfs-site.xml配置文件

<property>
 		    <name>dfs.nameservices</name>
 		    <value>mycluster</value>
</property>
<property>
  			<name>dfs.ha.namenodes.mycluster</name>
 			 <value>nn1,nn2</value>
</property>
<property>
 			 <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  			<value>node01:8020</value>
</property>
<property>
 			 <name>dfs.namenode.rpc-address.mycluster.nn2</name>
 			 <value>node02:8020</value>
</property>
<property>
 			 <name>dfs.namenode.http-address.mycluster.nn1</name>
 			 <value>node01:50070</value>
</property>
<property>
			  <name>dfs.namenode.http-address.mycluster.nn2</name>
 			  <value>node02:50070</value>
</property>
<property>
 		 	  <name>dfs.namenode.shared.edits.dir</name>
 		      <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
</property>
<property>
  			  <name>dfs.journalnode.edits.dir</name>
 			  <value>/var/sxt/hadoop/ha/jn</value>
</property>
<property>
  		<name>dfs.client.failover.proxy.provider.mycluster</name>  		
  		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
 		 <name>dfs.ha.fencing.methods</name>
 		 <value>sshfence</value>
</property>
<property>
  		  <name>dfs.ha.fencing.ssh.private-key-files</name>
  		  <value>/root/.ssh/id_rsa</value>
</property>
<property>
  		  <name>dfs.ha.automatic-failover.enabled</name>
   		  <value>true</value>
 </property>

修改core-site.xml配置文件

<property>
	 <name>fs.defaultFS</name>
 	 <value>hdfs://mycluster</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/var/abc/hadoop/cluster</value>
</property>
<property>
	<name>ha.zookeeper.quorum</name>
    <value>node02:2181,node03: 2181,node04:2181</value>
</property>

修改slaves配置文件

node02 
node03 
node04

將配置好的HDFS安裝包拷貝到node02 node03 node04

格式化NameNode(創建目錄以及文件)

① 在node01、node02、node03分別執行如下命令

hadoop-daemon.sh start journalnode

② 隨機選擇一臺NameNode執行:

hdfs namenode -format
hadoop-daemon.sh start namenode

③ 另外一臺NameNode節點執行:

hdfs namenode  -bootstrapStandby

格式化ZKFC

hdfs zkfc -formatZK

關閉所有節點上的進程

stop-dfs.sh

啓動HDFS

start-dfs.sh

搭建zookeeper集羣

1,解壓

2,修改conf目錄下的zoo_sample.cfg的名稱,改爲zoo.cfg

mv zoo_sample.cfg zoo.cfg

3,修改zoo.cfg

dataDir=/var/zfg/zookeeper
server.1=node02:2888:3888
server.2=node03:2888:3888
server.3=node04:2888:3888

4,在dataDir目錄下創建一個myid文件,在這個文件中寫上當前節點ID號
5,將配置好的zookeeper安裝包拷貝到node03 node04
6,拷貝完畢後,在各自節點上創建myid號,ID號要依次遞增

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章