hadoop3节点hdfs ha,yarn ha配置
2019獨角獸企業重金招聘Python工程師標準>>>
0 各機器職責
| 進程 | node1 | node2 | node3 | |
| NN | NameNode | 1 | 1 | |
| DN | DateNode | 1 | 1 | 1 |
| JN | JournalNode | 1 | 1 | 1 |
| YARN | ResourceManage | 1 | 1 | |
| NodeManager | 1 | 1 | 1 | |
| ZOO | QuorumPeerMain | 1 | 1 | 1 |
| ZKFC | DFSZKFailoverController | 1 | 1 |
1 系統ip,hostname,hosts,環境變量配置
這里三臺機器如下,具體配置略,java環境配置略
192.168.158.101 node1
192.168.158.102 node2
192.168.158.103 node3
每臺機器環境變量 配置:
執行vi ~/.bash_profile,加入如下內容(目錄大家根據自己實際情況更改)
export?ZOOKEEPER_HOME=/home/hadoop/app/zookeeper export?HADOOP_HOME=/home/hadoop/app/hadoop export?PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin2 免密碼配置
?1 檢查每臺機器的防火墻是否關閉 ,防火墻需要關閉(必須,博主這一步忘了后面zookeeper怎么也不能啟動成功)
?2 關閉Selinux,避免對其他服務影響,具體影響博主還不清楚,知道后更新
?3 配置免密碼登錄
a) 如果用戶路徑下存在.ssh文件夾,需要先刪除?
b) 所有節點生成RSA密鑰對,命令如下:?
ssh-keygen?-t?rsa一路回車就好
c) 在所有節點之間建立兩兩互信。?
步驟如下:?
將每個機器生成的公鑰id_rsa.pub的內容復制到本機的 ~/.ssh/ 的authorized_keys 文件 里。命令如下:?
cp id_rsa.pub authorized_keys?
然后,將各個機器的 authorized_keys 文件中的內容追加到其余機器上的 ~/.ssh/ authorized_keys 文件中(包括
namenode和datanode)?
d) 修改權限?
chmod 700 ~/.ssh?
?chmod 600 ~/.ssh/*
e) 經過以上步驟,ssh配置也已完成。通過以下命令驗證:?
ssh?節點名第一次連接需要密碼,輸入yes和機器密碼就可以,以后即不用再輸入。?
注意: .ssh是700 ? ?.ssh下的文件是600 這一步也千萬別忘了,博主吃過虧的
3 配置zookeeper
1) 下載zookeeper包,并解壓到/home/hadoop/app/?
2) 編輯安裝路徑下conf/zoo.cfg文件,加入以下內容:?
tickTime=2000?
initLimit=10?
syncLimit=5?
dataDir=/home/hadoop/data/zookeeper?
clientPort=2181?
#server.x=主機名:F和F之間同步和通信端口:選舉端口?
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
右邊可以配置兩個端口,第一個端口用于 F和L之間的數據同步和其它通信,第二個端口用于Leader 選舉過程中投票通信。?
在 Node1、Node2、Node3 的$dataDir 下新建 myid 文件,分別放入各自的 server.id,比如 Node3 的 myid
文件中寫入3.?
3) 將zookeeper的文件夾分發到node2、node3?
4) 配置環境變量?
5) Zookeeper啟動并檢查狀態??
啟動zkServer.sh start
查看狀態zkServer.sh?status?
注意:每個節點啟動后再查看狀態,三節點的話必須兩個以上啟動成功才算成功
4 HDFS 集群 HA 環境搭建?
1 配置hadoop-env.sh
將JAVA_HOME設置為具體路徑,如下
export?JAVA_HOME=/home/hadoop/app/jdk1.8.0_052 配置core-site.xml
<configuration><property><name>fs.defaultFS</name><value>hdfs://cluster1</value></property><property><name>hadoop.tmp.dir</name><value>/home/hadoop/data/tmp</value></property><property><name>ha.zookeeper.quorum</name><value>node1:2181,node2:2181,node3:2181</value></property> </configuration>3 配置hdfs-site.xml?
<configuration><property><name>dfs.permissions</name><value>false</value></property><property><name>dfs.permissions.enabled</name><value>false</value></property><property><name>dfs.name.dir</name><value>/home/hadoop/data/hdfs/name</value></property><property><name>dfs.data.dir</name><value>/home/hadoop/data/hdfs/data</value></property><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.nameservices</name><value>cluster1</value></property><property><name>dfs.ha.namenodes.cluster1</name><value>node1,node2</value></property><property><name>dfs.namenode.rpc-address.cluster1.node1</name><value>node1:9000</value></property><property><name>dfs.namenode.http-address.cluster1.node1</name><value>node1:50070</value></property><property><name>dfs.namenode.rpc-address.cluster1.node2</name><value>node2:9000</value></property><property><name>dfs.namenode.http-address.cluster1.node2</name><value>node2:50070</value></property><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://node1:8485;node2:8485;node3:8485/cluster1</value></property><property><name>dfs.ha.automatic-failover.enabled.cluster1</name><value>true</value></property><property><name>dfs.client.failover.proxy.provider.cluster1</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><property><name>dfs.journalnode.edits.dir</name><value>/home/hadoop/data/journaldata/jn</value></property><property><name>dfs.ha.fencing.methods</name><value>shell(/bin/true)</value></property><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/hadoop/.ssh/id_rsa</value></property><property><name>dfs.namenode.handler.count</name><value>100</value></property> </configuration>4 配置slave
node1 node2 node35 啟動
1、啟動Zookeeper集群
分別在node1、node2、node3上執行
zkServer.sh start
然后執行
zkServer.sh status
查看是否啟動,確保啟動后執行后面的步驟
2、格式化Zookeeper集群,目的是在Zookeeper集群上建立HA的相應節點
在node1上執行(任選一節點)
hdfs zkfc ?-formatZK
3、啟動Journal集群
分別在node1、node2、node3分別上執行
hadoop-daemon.sh start journalnode
4、格式化集群上的一個NameNode
從node1和node2上任選一個即可,這里我是在os1
hdfs namenode -format?
5、啟動集群中步驟4中的NameNode
啟動os1上的NameNode
hadoop-daemon.sh start namenode
6、把NameNode的數據同步到另一個NameNode上
把NameNode的數據同步到node2上,在node2中執行
hdfs namenode –bootstrapStandby
7、啟動另個一NameNode
在node2上執行
hadoop-daemon.sh start namenode
8、啟動所有的DataNode
在node1中執行
hadoop-daemons.sh start datanode
9、啟動ZKFC
分別在node1、node2上執行
hadoop-daemon.sh start zkfc
6 YARN-HA環境搭建?
1 配置mapred-site.xml?
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property> </configuration>2 配置yarn-site.xml
<property><name>yarn.resourcemanager.ha.enabled</name><value>true</value> </property> <!--是否啟用自動故障轉移。默認情況下,在啟用?HA?時,啟用自動故障轉移。--> <property><name>yarn.resourcemanager.ha.automatic-failover.enabled</name><value>true</value> </property> <!--啟用內置的自動故障轉移。默認情況下,在啟用?HA?時,啟用內置的自動故障轉移。-->? <property><name>yarn.resourcemanager.ha.automatic-failover.embedded</name><value>true</value> </property> <property><name>yarn.resourcemanager.cluster-id</name><value>yarn-rm-cluster</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> <!--啟用?resourcemanager?自動恢復-->? <property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value> </property> <!--配置?Zookeeper?地址-->? <property><name>yarn.resourcemanager.zk.state-store.address</name><value>node1:2181,node2:2181,node3:2181</value> </property> <property><name>yarn.resourcemanager.zk-address</name><value>node1:2181,node2:2181,node3:2181</value> </property> <property><name>yarn.resourcemanager.address.rm1</name><value>node1:8032</value> </property> <property><name>yarn.resourcemanager.address.rm2</name><value>node2:8032</value> </property> <property><name>yarn.resourcemanager.scheduler.address.rm1</name><value>node1:8034</value> </property> <property><name>yarn.resourcemanager.webapp.address.rm1</name><value>node1:8088</value> </property> <property><name>yarn.resourcemanager.scheduler.address.rm2</name><value>node2:8034</value> </property> <property><name>yarn.resourcemanager.webapp.address.rm2</name><value>node2:8088</value> </property> <property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value> </property> <!--執行?MapReduce?需要配置的?shuffle?過程-->? <property><name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value> </property>3 將上面兩個配置文件分發到各節點,然后按下面步驟啟動
a)在node1執行?sbin/start-yarn.sh
jps查看ResourceManager進程是否啟動,如果沒有看日志排查問題后重新執行?
b) node1中成功啟動ResourceManager進城后在node2執行
?sbin/yarn-daemon.sh?start?resourcemanager同時打開一下web界面。?
http://node1:8088
http://node2:8088?
關閉其中一個resourcemanager,然后再啟動,看看這個過程的web界面變化。?
4?檢查一下ResourceManager狀態
bin/yarn?rmadmin?-getServiceState?rm1? bin/yarn?rmadmin?-getServiceState?rm27 Wordcount示例測試?
? ?1. 準備test.txt文件,內容如下:
????hello world hello hadoop
????2 .hdfs中創建test目錄并上傳測試文件,然后執行hadooop自帶wordcount程序
?hadoop?fs?-?mkdir?-p?/testhadoop?fs?-put?test.txt?/testhadoop?jar?share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar?wordcount?/test/test.txt?/test/out/出現下圖代表執行成功,大家可以通過”hadoop fs -ls?輸出目錄“自行去看下執行結果
轉載于:https://my.oschina.net/firstBlooded/blog/550198
總結
以上是生活随笔為你收集整理的hadoop3节点hdfs ha,yarn ha配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: objective-c 逐帧动画
- 下一篇: 查看oracle连接客户端