本例系统版本 CentOS-7.8,已安装jdk1.8
vi /etc/hosts
添加如下内容,然后保存
192.168.56.131 hadoop131
192.168.56.132 hadoop132
192.168.56.133 hadoop133
关闭防火墙
systemctl stop firewalld
三台服务器都要操作一遍
ssh-keygen -t rsa -N '' -f /root/.ssh/id_rsa -q
ssh-copy-id -i /root/.ssh/id_rsa.pub root@hadoop131
ssh-copy-id -i /root/.ssh/id_rsa.pub root@hadoop132
ssh-copy-id -i /root/.ssh/id_rsa.pub root@hadoop133
Xsync
分发指令rsync
是Linux系统下的一个非常实用的数据备份和同步工具,它可以在本地或远程系统之间进行文件或目录的同步和备份。这个指令的基本原理是通过对比源文件和目标文件的差异,只复制差异部分,从而提高数据传输的效率。
由于 xsync
是对 rsync 的再封装,因此需要先安装 rsync
yum install -y rsync
三台服务器都要安装
rsync
本节内容参考:xsync 集群同步工具
在 /usr/bin 下新建 xsync.sh
vi /usr/bin/xsync.sh
将以下内容粘贴到 xsync.sh
脚本中
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop131 hadoop132 hadoop133
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
修改文件权限
chmod 777 /usr/bin/xsync.sh
xcall.sh
创建文件xcall.sh
vi /usr/bin/xcall.sh
# 修改文件权限
chmod 777 /usr/bin/xcall.sh
复制如下内容
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop131 hadoop132 hadoop133
do
echo ------ $host ------
ssh $host "$*"
done
# 下载Hadoop软件包
wget --no-check-certificate https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
# 解压安装
tar -xzvf hadoop-3.3.6.tar.gz
#创建Hdoop程序&数据目录;
mkdir -p /data/
#将Hadoop程序部署至/data/hadoop目录下;
mv hadoop-3.3.6/ /data/hadoop/
#查看Hadoop是否部署成功;
ls -l /data/hadoop/
配置环境变量,/etc/profile.d/hadoop_env.sh
export HADOOP_HOME=/data/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
使用source让新增环境生效
source /etc/profile
配置完成后分发到其他服务器
xsync.sh /etc/profile.d/hadoop_env.sh
1)配置 core-site.xml
vi /data/hadoop/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://hadoop131:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/data/hadoop/datavalue>
<description>A base for other temporary directories.description>
property>
<property>
<name>hadoop.http.staticuser.username>
<value>hadoopuservalue>
property>
<property>
<name>hadoop.proxyuser.hadoopuser.hostsname>
<value>*value>
property>
<property>
<name>hadoop.proxyuser.hadoopuser.groupsname>
<value>*value>
property>
<property>
<name>hadoop.proxyuser.hadoopuser.usersname>
<value>*value>
property>
configuration>
2)配置 hdfs-site.xml
vi /data/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.http-addressname>
<value>hadoop131:9870value>
property>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>hadoop133:9868value>
property>
<property>
<name>dfs.replicationname>
<value>1value>
property>
configuration>
3)配置 mapred-site.xml
vi /data/hadoop/etc/hadoop/mapred-site.xml
使用yarn,如下配置
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
configuration>
4)配置 yarn-site.xml
vi /data/hadoop/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>hadoop131value>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.nodemanager.resource.memory-mbname>
<value>8192value>
property>
<property>
<name>yarn.scheduler.minimum-allocation-mbname>
<value>1024value>
property>
<property>
<name>yarn.scheduler.maximum-allocation-mbname>
<value>8192value>
property>
<property>
<name>yarn.scheduler.minimum-allocation-vcoresname>
<value>1value>
property>
<property>
<name>yarn.scheduler.maximum-allocation-vcoresname>
<value>4value>
property>
configuration>
4)修改 workers
vi /data/hadoop/etc/hadoop/workers
hadoop131
hadoop132
hadoop133
5)修改Hadoop默认启动、关闭脚本,添加root执行权限
cd /data/hadoop/sbin/
for i in `ls start*.sh stop*.sh`;do sed -i "1a\HDFS_DATANODE_USER=root\nHDFS_DATANODE_SECURE_USER=root\nHDFS_NAMENODE_USER=root\nHDFS_SECONDARYNAMENODE_USER=root\nYARN_RESOURCEMANAGER_USER=root\n\YARN_NODEMANAGER_USER=root" $i ;done
6)将hadoop131部署完成的hadoop所有文件、目录同步至其他两个节点
xsync.sh /data/hadoop/
在启动hadoop之前,我们需要做一步非常关键的步骤,需要在Namenode上执行初始化命令,初始化name目录和数据目录。
#初始化集群;
/data/hadoop/bin/hdfs namenode -format
#停止所有服务;
/data/hadoop/sbin/stop-all.sh
#kill方式停止服务;
ps -ef|grep hadoop|grep java |grep -v grep |awk '{print $2}'|xargs kill -9
sleep 2
#启动所有服务;
/data/hadoop/sbin/start-all.sh
使用上面的xcall.sh命令查看进程
xcall.sh jps
结果如下
------ hadoop131 jps ------
7640 ResourceManager
7864 NodeManager
7260 DataNode
8877 Jps
7086 NameNode
------ hadoop132 jps ------
4549 DataNode
5479 Jps
4654 NodeManager
------ hadoop133 jps ------
4896 NodeManager
5733 Jps
4715 DataNode
4813 SecondaryNameNode
也可以分别查看3个节点Hadoop服务进程和端口信息
#查看服务进程;
ps -ef|grep -aiE hadoop
#查看服务监听端口;
netstat -ntpl
#执行JPS命令查看JAVA进程;
jps
#查看Hadoop日志内容;
tail -fn 100 /data/hadoop/logs/*.log
根据如上Hadoop配置,Hadoop大数据平台部署成功,访问hadoop131 9870端口 http://192.168.56.131:9870/,可以看见如下页面:
访问Hadoop集群WEB地址:http://192.168.56.131:8088/,可以看见如下页面:
至此,Hadoop集群环境部署完成!