大數據組件HA配置大全

一.Hadoop的HA

/usr/local/hadoop-2.8.4/etc/hadoop 下是所有hadoop配置文件
1.HDFS HA配置:
core-site.xml

<configuration>
	<property>
	  <name>fs.defaultFS</name>
	  <value>hdfs://mycluster</value>
	</property>
	<property>
	   <name>ha.zookeeper.quorum</name>
	   <value>node3:2181,node4:2181,node5:2181</value>
	</property>
	<property>
	  <name>hadoop.tmp.dir</name>
	  <value>/opt/hadoop</value>:
	</property>
	</configuration>

hdfs-site.xml

<configuration>
	<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>node1:8020</value>
	</property>
	<property>
	  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
	  <value>node2:8020</value>
	</property>
	<property>
	  <name>dfs.namenode.http-address.mycluster.nn1</name>
	  <value>node1:50070</value>
	</property>
	<property>
	  <name>dfs.namenode.http-address.mycluster.nn2</name>
	  <value>node2:50070</value>
	</property>
	<property>
	  <name>dfs.namenode.shared.edits.dir</name>
	  <value>qjournal://node5:8485;node3:8485;node4:8485/mycluster</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_dsa</value>
	</property>
	<property>
	   <name>dfs.ha.automatic-failover.enabled</name>
	   <value>true</value>
	 </property>
	</configuration>

開啓ha後不需要配置SecondaryNameNode了,因爲SecondaryNameNode節點是通過checkpoint來加載合併日誌生成鏡像給namenode,當namenode宕機後,SecondaryNameNode還是會丟失一段時間的數據,所以沒有根本上解決單點故障問題,ha可以通過zookeeper(zkfc)來監控,standbynamenode則通過zkfc更新最新的namenode信息,解決了單點故障的問題

2.YARN的HA配置
yarn-site.xml

<configuration>

	<!-- Site specific YARN configuration properties -->
	<!-- Site specific YARN configuration properties -->
	<property>
	  <name>yarn.resourcemanager.recovery.enabled</name>
	  <value>true</value>
	</property>
	<property>
	  <name>yarn.resourcemanager.store.class</name>
	  <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
	</property>
	<property>
			<name>yarn.nodemanager.aux-services</name>
			<value>mapreduce_shuffle</value>
		</property>
	<property>
	   <name>yarn.resourcemanager.ha.enabled</name>
	   <value>true</value>
	 </property>
	 <property>
	   <name>yarn.resourcemanager.cluster-id</name>
	   <value>yarncluster</value>
	 </property>
	 <property>
	   <name>yarn.resourcemanager.ha.rm-ids</name>
	   <value>rm1,rm2</value>
	 </property>
	 <property>
	   <name>yarn.resourcemanager.hostname.rm1</name>
	   <value>node1</value>
	 </property>
	
	<property>
	   <name>yarn.resourcemanager.hostname.rm2</name>
	   <value>node2</value>
	 </property>
	 <property>
	   <name>yarn.resourcemanager.zk-address</name>
	   <value>node3,node4,node5</value>
	 </property>
	<property>
	   <name>yarn.scheduler.maximum-allocation-mb</name>
	   <value>32768</value>
	</property>
	<property>
		<name>yarn.nodemanager.resource.memory-mb</name>
		<value>32768</value>
	</property>
	<property>
		<name>yarn.scheduler.minimum-allocation-mb</name>
		<value>4096</value>
	</property>
	 <property>
	   <name>yarn.nodemanager.resource.cpu-vcores</name>
		<value>24</value>
	</property>
	<property>
			<name>yarn.log-aggregation-enable</name>
			<value>true</value>
	</property>
	<property>
			<name>yarn.nodemanager.remote-app-log-dir</name>
			<value>/tmp/yarn-logs</value>
	</property>
	</configuration>

配置好後,分發到所有節點,啓動zookeeper後
start-all.sh 即可啓動所有

yarn.resourcemanager.ha.enabled:開啓RM HA功能。
yarn.resourcemanager.cluster-id:標識集羣中的RM。如果設置該選項,需要確保所有的RMs在配置中都有自己的id。
yarn.resourcemanager.ha.rm-ids:RMs的邏輯id列表。可以自定義,此處設置爲“rm1,rm2”。後面的配置將引用該id。
yarn.resourcemanager.hostname.rm1:指定RM對應的主機名。另外,可以設置RM的每個服務地址。
yarn.resourcemanager.webapp.address.rm1:指定RM的Web端訪問地址。
yarn.resourcemanager.zk-address:指定集成的ZooKeeper的服務地址。
yarn.resourcemanager.recovery.enabled:啓用RM重啓的功能,默認爲false。
yarn.resourcemanager.store.class:用於狀態存儲的類,默認爲org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore,基於Hadoop文件系統的實現。還可以爲org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore,該類爲基於ZooKeeper的實現。此處指定該類。

二、Hbase HA

修改配置文件,分發到所有幾點,啓動即可
注意:要啓動兩個master,其中一個需要手動啓動

注意:Hbase安裝時,需要對應Hadoop版本
hbase hbase-2.1.4 對應 hadoop 2.8.4

通常情況下,把Hadoop core-site hdfs-site 拷貝到hbase conf下

修改 hbase-env.sh
修改 hbase-site.xml

hbase-env.sh--------------------
export JAVA_HOME=/usr/java/jdk1.8.0_201
export HBASE_MANAGES_ZK=false

關閉hbase自帶的zookeeper 使用集羣zookeeper

hbase-site.xml

<configuration>
	<property>
		<name>hbase.cluster.distributed</name>
		<value>true</value>
	  </property>
	  <property>
		<name>hbase.rootdir</name>
		<value>hdfs://mycluster/hbase</value>
	  </property>
	  <property>
		<name>hbase.zookeeper.quorum</name>
		<value>node3,node4,node5</value>
	  </property>
	  <property>
		<name>hbase.zookeeper.property.clientPort</name>
		<value>2181</value>
	  </property>
	  <property>
		<name>zookeeper.session.timeout</name>
		<value>120000</value>
	  </property>
	  <property>
		<name>hbase.zookeeper.property.tickTime</name>
		<value>6000</value>
	  </property>
	</configuration>

啓動hbbase
需要從另一臺服務器上單獨啓動master
hbase-daemon.sh start master

通過以下網站可以看到信息
http://192.168.109.132:16010/master-status

三.Spark 的 HA

(1)基於文件目錄的單點恢復


			(*)本質:還是隻有一個主節點Master,創建了一個恢復目錄,保存集羣狀態和任務的信息。
				當Master掛掉,重新啓動時,會從恢復目錄下讀取狀態信息,恢復出來原來的狀態
				
				用途:用於開發和測試,生產用zookeeper
				export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM 
				-Dspark.deploy.recoveryDirectory=/usr/local/spark-2.1.0-bin-hadoop2.7/recovery"

(2)基於Zookeeper :和Hadoop類似


			(*)複習一下zookeeper:
				相當於一個數據庫,把一些信息存放在zookeeper中,比如集羣的信息。
				數據同步功能,選舉功能,分佈式鎖功能
				
				數據同步:給一個節點中寫入數據,可以同步到其他節點
				
				選舉:Zookeeper中存在不同的角色,Leader Follower。如果Leader掛掉,重新選舉Leader
				
				分佈式鎖:秒殺。以目錄節點的方式來保存數據。
			修改 spark-env.sh
			export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER 
			-Dspark.deploy.zookeeper.url=node3:2181,node4:2181,node5:2181 
			-Dspark.deploy.zookeeper.dir=/spark"
			
			同步到其他兩臺服務器。
			
			在node3 start-all  node3 master  node4 Worker node5 Worker
			在node4 start-master node3 master node4 master(standby) node4 Worker node5 Worker
			
			在node3上kill master
			node4 master(Active) node4 Worker node5 Worker
			
			在網頁http://192.168.109.134:8080/ 可以看到相應信息
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章