Hadoop完全分布式搭建![](https://img-blog.csdnimg.cn/e6621c78492f4fb6b3c48a4d73155ee3.jpeg)
目录
1、修改hostname,配置hosts
1.1修改hostname
[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]# bash
查看hostname文件
关闭防火墙
systemctl stop firewalld & systemctl disable firewalld
1.2配置hosts
[root@master ~]# vi /etc/hosts
2、安装JDK
在/opt下创建software和module文件夹,并修改权限
[root@master ~]# cd /opt/
[root@master opt]# mkidr software
[root@master opt]# mkidr module
[root@master opt]# chmod 777 software/ module/
打开xftp,将搭建包传输到software下
将jdk解压到module文件夹下,并配置环境变量。配置完记得source /etc/profile让环境变量生效。
[root@master software]# tar -zxvf jdk-8u181-linux-x64.tar.gz -C /opt/module/
[root@master software]# vi /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_181
export PATH=$PATH:$JAVA_HOME/bin
3、安装并配置Hadoop
3.1解压安装包,并配置环境变量
记得source /etc/profile
[root@master software]# tar -zxvf hadoop-2.7.6.tar.gz -C /opt/module/
[root@master software]# vi /etc/profile
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
3.2修改配置文件
cd /opt/module/hadoop-2.7.6/etc/hadoop/下查看配置文件
修改core-site.xml。按i进入插入模式后在复制粘贴。
<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.6/data/tmp</value>
</property>
</configuration>
修改hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
修改hdfs-site.xml
<configuration>
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:50090</value>
</property>
</configuration>
修改yarn-env.sh
/opt/module/jdk1.8.0_181
修改yarn-site.xml
<configuration>
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave1</value>
</property>
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
修改mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_181
修改mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
<configuration>
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.61.130:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.61.130:19888</value>
</property>
</configuration>
修改 slaves
master
slave1
slave2
到此,配置文件已全部修改完毕。重新准备2台虚拟机,或者克隆这台虚拟机(建议重新创建2台)。如果是克隆的,记得分别把克隆的2台虚拟机的hostname改为slave1和slave2,并修改IP地址为xxx.xxx.xxx.131和xxx.xxx.xxx.132
创建好新的虚拟机后,配置好IP、修改hostname和hosts。在主节点下准备分发脚本。
cd到root,并创建bin文件夹,给777权限
[root@master hadoop-2.7.6]# cd
[root@master ~]# mkdir bin
[root@master ~]# chmod 777 bin/
[root@master bin]# yum install rsync -y
[root@master bin]# touch xsync
[root@master bin]# vi xsync
i进入插入模式后再粘贴,保存后在source下/etc/profile
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in 192.168.61.130 192.168.61.131 192.168.61.132
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4. 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
3.3配置免密登录
[root@master ~]# cd ~/.ssh
[root@master .ssh]# ssh-keygen -t rsa
回车三下
[root@master .ssh]# ssh-copy-id 192.168.61.130
[root@master .ssh]# ssh-copy-id 192.168.61.131
[root@master .ssh]# ssh-copy-id 192.168.61.132
然后再slave1和slave2上重复以上操作
ssh登录其他虚拟机,进行测试。
3.4分发文件
你也可以使用scp命令,这里就是用上面创建的分发脚本。
[root@master hadoop-2.7.2]# scp -r /opt/module slave1:/opt/module
[root@master module]# xsync /etc/profile
[root@master module]# xsync /opt/module/
分发完成后在各节点source /etc/profile
4、格式化NameNode
[root@master hadoop-2.7.6]# bin/hdfs namenode -format
如果格式化完成结果出现SHUTDOWN_MSG:Shutting down NameNode at,不用管。
只需要看 common.Storage:Storage directory ***** has been successfully formatted.
如果格式化失败,检查配置文件,最后一定要删除hadoop目录下的data和logs文件再重新格式化。
5、启动hadoop集群
在master启动hdfs
[root@master hadoop-2.7.6]# start-dfs.sh
在slave1启动yarn
[root@slave1 ~]# start-yarn.sh
访问50070。
总结
要特别注意hosts、hadoop配置文件的修改。