版本:3.1.3
1.准备工作:
更新和安装组件
1. yum install -y epel-release
2. yum install -y net-tools
3. yum install -y vim
防火墙的关闭和禁止开启自动启动
1. systemctl stop firewalld
2. systemctl disable firewalld.service
创建 sea 用户,并修改 sea 用户的密码:(***为自己的用户名)
给用户赋予root权限
1.配置文件 /etc/sudoers
在%wheel 这行下面添加一行
chown sea:sea /opt/module
chown sea:sea /opt/software
主机IP静态配置
配置文件:vim /etc/sysconfig/network-scripts/ifcfg ens33
BOOTPROTO=static
IPADDR=192.168.10.102
GATEWAY=192.168.10.2
DNS1=192.168.10.2
主机名称的配置
配置文件 vim /etc/hostname
配置 Linux 克隆机主机名称映射 hosts 文件
vim /etc/hosts
格式为:
192.168.11.100 hadoop100
192.168.11.101 hadoop101
192.168.11.101 hadoop102
同步xsync的配置和安装
在/home/sea/bin 目录下创建 xsync 文件
vim xsync
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop104 hadoop105 hadoop106
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
1.进入目录 /home/sea/.ssh
运行
ssh-keygen -t rsa
将公钥拷贝到要免密登录的目标机器上包括自己
ssh-copy-id 主机名
jdk的安装:
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
环境变量配置
在/etc/profile.d创建一个 my_env.sh用于配置环境变量
vim my_env.sh
配置文件: vim /etc/profile.d/my_env.sh
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
生效:source /etc/profile
2.安装hadoop的安装
优化配置,将消耗资源较大的分在不同的机子上
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
文件配置
1. core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:8020</value>
</property>
<!-- 指定 hadoop 数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置 HDFS 网页登录使用的静态用户为 sea -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>sea</value>
</property>
</configuration>
(2)HDFS 配置文件
配置hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- nn web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop101:9870</value>
</property>
<!-- 2nn web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop103:9868</value>
</property>
</configuration>
(3)YARN 配置文件
配置 yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop102</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>
</configuration>
(4)MapReduce 配置文件
配置 mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(5) workers文件,这里面是自己集群的主机名
hadoop101
hadoop102
hadoop103
即在里面添加集群的机子的主机名称或地址,而且地址后面不能有空格和空行
配置完成后记得分发到其他的机子上
xsync + 文件名 (xsync 是上边自己写的一个分发脚本)
初始化成功后为有两个文件 data 和logs 就是在上面配置时定义的文件、
在/opt/module/hadoop-3.1.3/data/dfs/name/current中为出现如下文件
开打VERSION有id、版本号等
![](https://i-blog.csdnimg.cn/blog_migrate/0a844cd2b6562ee0e7f015f6e15efabd.png)
在hadoop102上出现的进程为
在hadoop103上出现的进程为
如果hadoop101上没有NameNode优先检查 core-site.xml是否配置错误
NameNode没有出现的解决办法为: