hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager
hdfs dfsadmin -repor
檢查集羣的狀態yarm rmadmin
start-balancer.sh -threshold 5
(單個節點的使用率跟平均節點使用率的差值)hdfs fsck /
來掃描確認文件是否正常hdfs dfs -setrep -w 3 -R /lin
(副本數可大於節點數,不要對根目錄進行該操做)節點硬件故障或者任務運行在該節點比較吃力java
下線前要先確保沒有任務在運行,不然會下線得特別慢node
背景:存在單個Namenode負載過大的問題apache
分配
避免相互干擾bootstrap
配置步驟服務器
core-site.xml網絡
修改core-site.xml配置負載均衡
添加配置指向cmt.xml <configuration xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include href="cmt.xml"/> <property> <name>fs.defaultFS</name> <value>viewfs://nsX</value> </property> <property> <name>hadoop.tmp.dir</name> <value>$HADOOP_HOME/tmp</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>$HADOOP_HOME/journalnode/data</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>slave1:2181,slave2:2181,hadoop04:2181</value> </property> </configuration>
cmt.xml
配置虛擬路徑和物理路徑的映射關係運維
//將集羣中的/view_ns1目錄掛載到namenode1中的根目錄 //也就是說以後/view_ns1下文件的操做都僅跟namenode1有關 <property> <name>fs.viewfs.mounttable.nsX.link./view_ns1</name> <value>hdfs://ns1/</value> // 按照規劃master就是namenode1 </property> <property> <name>fs.viewfs.mounttable.nsX.link./view_ns2</name> <value>hdfs://ns2/</value> // 按照規劃master就是namenode2 </property>
hdfs-site.xml
配置兩個命名服務以及rpc、http服務地址ssh
<property> <name>dfs.nameservices</name> <value>ns1,ns2</value> </property> ## 配置nameservice1的ha <property> <name>dfs.ha.namenodes.ns1</name> <value>nn1,nn2</value> </property> ## 配置nameservice2的ha <property> <name>dfs.ha.namenodes.ns2</name> <value>nn3,nn4</value> </property> ## 配置這四個namenode的RPC通訊端口 <property> <name>dfs.namenode.rpc-address.ns1.nn1</name> <value>master:9000</value> </property> <property> <name>dfs.namenode.rpc-address.ns2.nn3</name> <value>slave1:9000</value> </property> <property> <name>dfs.namenode.rpc-address.ns1.nn2</name> <value>hadoop04:9000</value> </property> <property> <name>dfs.namenode.rpc-address.ns2.nn4</name> <value>slave2:9000</value> </property> ## 配置這四個namenode的HTTP通訊端口 <property> <name>dfs.namenode.http-address.ns1.nn1</name> <value>master:50070</value> </property> <property> <name>dfs.namenode.http-address.ns2.nn3</name> <value>slave1:50070</value> </property> <property> <name>dfs.namenode.http-address.ns1.nn2</name> <value>hadoop04:50070</value> </property> <property> <name>dfs.namenode.http-address.ns2.nn4</name> <value>slave2:50070</value> </property> ## 配置四個namenode的編輯日誌存放地址 <property> <name>dfs.namenode.shared.edits.dir</name> ## ns1的nn1和nn2用這個值 <value>qjournal://hadoop04:8485;slave1:8485;slave2:8485/ns1</value> ## ns2的nn3和nn4用這個值 <value>qjournal://hadoop04:8485;slave1:8485;slave2:8485/ns2</value> </property> ## 配置錯誤恢復 <property> <name>dfs.client.failover.proxy.provider.ns1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfigureFailoverProxyProvider</value> </property> <property> <name>dfs.client.failover.proxy.provider.ns2</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfigureFailoverProxyProvider</value> </property> ## 配置ha的fence <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/hadoop/.ssh/id_rsa</value> </property> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property>
啓動服務ide
訪問hdfs
經過 hdfs dfsadmin -repor 檢查集羣節點狀態
hdfs fsck / 檢查文件是否都正常
啓動
hadoop-daemons.sh --hostnames 'slave1 slave2' start namenode
hadoop-daemons.sh start datanode //默認是啓動全部的
hadoop-daemons.sh --hostnames 'slave1 slave2 slave*' start zkfc
將hadoop經常使用的運維操做記錄下來,方便從此的維護工做