Hadoop-2.7.3 HA高可用搭建
阿新 • • 發佈:2018-11-23
0.zookeeper叢集的搭
略,自行百度
1.hadoop2.7.3下載
http://hadoop.apache.org/releases.html
2.tar 解壓,mv到 /data,並將資料夾改為hadoop(也可以不改,看心情)。
3.vi /etc/profile 新增hadoop路徑
export HADOOP_HOME=/data/hadoop
export PATH=$PATH :$HADOOP_HOME/bin
4.配置hadoop-env.sh
檔案位置 /data/hadoop/etc/hadoop
export JAVA_HOME=/usr/java/jdk1.8.0_121
5.配置core-site.xml檔案
12.格式化HDFS檔案系統 hdfs zkfc -formatZK 格式化zkfc,讓在zookeeper中生成ha節點 (注意,這條命令最好手動輸入,直接copy執行有可能會有問題,注意短橫線) hadoop namenode -format hdfs namenode -format 13.啟動hadoop 叢集啟動 啟動journalnode叢集 在nb1上執行如下命令完成JournalNode叢集的啟動 hadoop-daemons.sh start journalnode 格式化hdfs,執行一次 hadoop namenode -format 格式化zkfc,讓在zookeeper中生成ha節點 在nb1上執行如下命令,完成格式化,執行一次 hdfs zkfc -formatZK 首先在nb1上啟動active節點,在nb1上執行如下命令 hadoop-daemon.sh start namenode 在mast2上同步namenode的資料,同時啟動standby的namenod,命令如下 #把NameNode的資料同步到mast2上 hdfs namenode -bootstrapStandby #啟動mast2上的namenode作為standby hadoop-daemon.sh start namenode 啟動datanode 在mast1上執行如下命令 hadoop-daemons.sh start datanode 啟動yarn 在作為資源管理器上的機器上啟動 start-yarn.sh 啟動ZKFC 在mast1上執行如下命令,完成ZKFC的啟動 hadoop-daemons.sh start zkfc 14.關閉系統 stop-dfs.sh stop-yarn.sh 15.zookeeper 1.zkCli.sh 2.ls /
6.配置hdfs-site.xml檔案<configuration> <property> <!--檔案系統依賴的基本配置 --> <name>hadoop.tmp.dir</name> <value>/data/hadoop/tmp</value> </property> <property> <!-- 指定hdfs的nameservice為nameservices,可以自行命名--> <name>fs.defaultFS</name> <value>hdfs://nameservice</value> </property> <property> <name>io.file.buffer.size</name> <value>4096/value> </property> <property> <!-- 指定zookeeper。我搭了三臺,伺服器名分別是nb1,nb2,nb3 --> <name>ha.zookeeper.quorum</name> <value>nb1:2181,nb2:2181,nb3:2181</value> </property> </configuration>
8.配置mapred-site.xml檔案 修改Hadoop中MapReduce的配置檔案,配置的是JobTracker的地址和埠。<configuration> <property> <!--指定hdfs的nameservice為nameservice,需要和core-site.xml中的保持一致 --> <name>dfs.nameservices</name> <value>nameservice</value> </property> <property> <!-- nameservice下面有兩個NameNode,分別是namenode1,namenode2,名字自己定義--> <name>dfs.ha.namenodes.nameservice</name> <value>namenode1,namenode2</value> </property> <property> <!-- namenode1的RPC通訊地址 --> <name>dfs.namenode.rpc-address.nameservice.namenode1</name> <value>nb2:9000</value> </property> <property> <!-- namenode1的http通訊地址 --> <name>dfs.namenode.http-address.nameservice.namenode1</name> <value>nb2:50070</value> </property> <property> <!-- namenode2的RPC通訊地址 --> <name>dfs.namenode.rpc-address.nameservice.namenode2</name> <value>nb1:9000</value> </property> <property> <!-- namenode2的http通訊地址 --> <name>dfs.namenode.http-address.nameservice.namenode2</name> <value>nb1:50070</value> </property> <property> <!-- 指定NameNode的元資料在JournalNode上的存放位置--> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://nb1:8485;nb2:8485;nb3:8485/nameservice</value> </property> <property> <!-- 指定JournalNode在本地磁碟存放資料的位置 --> <name>dfs.journalnode.edits.dir</name> <value>/home/hadoop/workspace/journal</value> </property> <property> <!-- 開啟NameNode故障時自動切換 --> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <property> <!-- nameservice 需跟 core-site.xml一致 --> <name>dfs.client.failover.proxy.provider.nameservice</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <!-- 配置隔離機制 --> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <property> <!-- 使用隔離機制時需要ssh免登陸。叢集間必須ssh免登入,方法自行百度 --> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <!-- 以下都是正經配置 --> <property> <!-- replication 是資料副本數量,預設為3,salve少於3臺就會報錯 --> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/data/hadoop/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/data/hadoop/hdfs/data</value> </property> </configuration>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>nb2:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>nb2:19888</value>
</property>
</configuration>
配置yarn-site.xml
<configuration>
<property>
<!-- 設定nodemanager 總記憶體大小為3G -->
<name>yarn.nodemanager.resource.memory-mb</name>
<value>3072</value>
</property>
<property>
<!--Container記憶體最大2G -->
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>nb2</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>nb2:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>nb2:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>nb2:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>nb2:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>nb2:8088</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/home/fibo/hadooplog/hadoop-yarn</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://nb2:19888/jobhistory/logs/</value>
</property>
</configuration>
9.配置masters檔案(這個也可以沒有)
vi masters
新增本機ip
10.配置slaves檔案
vi slaves
叢集其他節點的ip
11.將hadoop移動到其他機子
scp -r /data/hadoop [email protected]:/data/
scp -r /data/hadoop [email protected]:/data/12.格式化HDFS檔案系統 hdfs zkfc -formatZK 格式化zkfc,讓在zookeeper中生成ha節點 (注意,這條命令最好手動輸入,直接copy執行有可能會有問題,注意短橫線) hadoop namenode -format hdfs namenode -format 13.啟動hadoop 叢集啟動 啟動journalnode叢集 在nb1上執行如下命令完成JournalNode叢集的啟動 hadoop-daemons.sh start journalnode 格式化hdfs,執行一次 hadoop namenode -format 格式化zkfc,讓在zookeeper中生成ha節點 在nb1上執行如下命令,完成格式化,執行一次 hdfs zkfc -formatZK 首先在nb1上啟動active節點,在nb1上執行如下命令 hadoop-daemon.sh start namenode 在mast2上同步namenode的資料,同時啟動standby的namenod,命令如下 #把NameNode的資料同步到mast2上 hdfs namenode -bootstrapStandby #啟動mast2上的namenode作為standby hadoop-daemon.sh start namenode 啟動datanode 在mast1上執行如下命令 hadoop-daemons.sh start datanode 啟動yarn 在作為資源管理器上的機器上啟動 start-yarn.sh 啟動ZKFC 在mast1上執行如下命令,完成ZKFC的啟動 hadoop-daemons.sh start zkfc 14.關閉系統 stop-dfs.sh stop-yarn.sh 15.zookeeper 1.zkCli.sh 2.ls /