由于NameNode、SencondaryNameNode、ResourceManager都非常消耗内存,所以它们不要安装在同一台机器上,至少需要三台虚拟机。
hadoop102 | hadoop103 | hadoop104 | |
---|---|---|---|
hdfs | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
yarn | NodeManager | ResourceManager NodeManager | NodeManager |
需要配置的文件:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml
打开core-site.xml文件:
vim /software/hadoop-3.1.3/etc/hadoop/core-site.xml
在 configuration 标签中添加如下内容:
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<!-- 指定 hadoop 数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/software/hadoop-3.1.3/data</value>
</property>
<!-- 配置 HDFS 网页登录的静态用户 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
打开hdfs-site.xml文件:
vim /software/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
在 configuration 标签中添加如下内容:
<!-- NameNode web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- SecondaryNameNode web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
打开yarn-site.xml文件:
vim /software/hadoop-3.1.3/etc/hadoop/yarn-site.xml
在 configuration 标签中添加如下内容:
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,
CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
</value>
</property>
打开mapred-site.xml文件:
vim /software/hadoop-3.1.3/etc/hadoop/mapred-site.xml
在 configuration 标签中添加如下内容:
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
通过 xsync 脚本分发文件。
1)进入用户 bin 目录,创建 xsync 文件
vim xsync
2)编写xsync文件
#!/bin/bash
#遍历集群所有机器
for host in 主机名1 主机名2 主机名3
do
echo =========$host=========
#遍历所有目录,挨个发送
for file in $@
do
if [ -e $file ]
then
#获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exist!
fi
done
done
3)为文件添加可执行的权限
chmod +x xsync
4)为hadoop103、hadoop104分发四个配置文件
xsync /software/hadoop-3.1.3/etc/hadoop/core-site.xml
xsync /software/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
xsync /software/hadoop-3.1.3/etc/hadoop/yarn-site.xml
xsync /software/hadoop-3.1.3/etc/hadoop/mapred-site.xml
原文:https://www.cnblogs.com/qgb-xy/p/14590055.html