一、 集羣部署規劃:
首先要對HDFS 和 YARN 兩個組件進行規劃,並根據規劃進行部署。
node1 | node2 | node3 | |
HDFS |
NameNode DataNode |
DataNode |
Secondary NameNode DataNode |
YARN |
NodeManager |
ResourceManager NodeManager |
NodeManger |
1. NameNode 和 SecondaryNameNode 儘量不要放到一個節點,佔用內存,當 node1的 NameNode 崩潰時,node3 的SecondaryNameNode 可以接管 NameNode 。
2. NameNode 和 Resource Manager 最好分開放。這兩個組件都比較佔用內存,分開放可以讓集羣穩定。另外,集羣運行時節點要頻繁與兩個組件進行通信,如果放在一起容易出現單點通信瓶頸。
二、 配置文件:
相關細節本教程不再說明,可參考之前的僞分佈式搭建教程。
1. 核心文件 core-site.xml:
添加如下文件內容。
<!--指定HDFS中NameNode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<!--指定Hadoop運行時產生文件的存儲路徑-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.7.2/data/tmp</value>
</property>
2. HDFS 配置文件:
編輯 hadoop-env.sh ,加入JAVA_HOME。
編輯 hdfs-site.xml,添加如下內容,注意根據實際情況修改相關參數。
<!--指定HDFS副本數量-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--指定Hadoop Secondary NameNode配置-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop3:50090</value>
</property>
3. Yarn 配置文件:
編輯 yarn-env.sh,加入JAVA_HOME。
編輯 yarn-site.xml,加入如下內容。
<!--Reducer獲取數據的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定Yarn的ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node2</value>
</property>
<!--防止無法訪問-->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.31.42:8088</value>
</property>
4. MapReduce 配置文件:
編輯 mapred-env.sh,加入JAVA_HOME,
複製文件 cp mapred-site.xml.template mapred-site.xml
編輯 mapred-site.xml,加入如下內容。
<!--指定MR運行在Yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
三、 分發配置文件:
xsync /usr/local/hadoop-2.7.2/etc/hadoop
進入其它主機對應文件夾,查看文件分發情況。