5.完全分布式运行模式
准备三台客户机(关闭防火墙、静态 IP、主机名称)——已完成(hadoop102、hadoop103、hadoop104)
安装 JDK——hadoop102 已完成
配置环境变量——hadoop102 已完成
安装 Hadoop——hadoop102 已完成
配置环境变量——hadoop102 已完成
配置集群
单点启动
配置 ssh
集群启动并测试集群
5.1 文件复制同步
1.scp 安全拷贝
将 hadoop102 中的 JDK 拷贝到 hadoop103——在 hadoop102 中操作
cd /opt/module
scp -r jdk1.8.0_212/ duan@hadoop103:/opt/module将 hadoop102 中的 Hadoop 拉取到 hadoop103——在 hadoop103 中操作
cd /opt/module
scp -r duan@hadoop102:/opt/module/hadoop-3.1.3 ./在 hadoop103 上操作,将 hadoop102 中/opt/module 目录下所有目录拷贝到 hadoop104 上
scp -r duan@hadoop102:/opt/module/* duan@hadoop104:/opt/module此时三个主机 module 中均包含 hadoop 和 java 软件包,且 hadoop102 已安装两个软件包。
2.rsync 同步工具
安装 rsync
sudo yum install rsync 5.2 xsync 集群分发
1.配置 IP 与主机名称映射
vim /etc/hosts2.xsync 配置
cd
mkdir bin
cd bin/
vim xsync增加以下内容
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo "Not Enough Arguement!"
exit
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
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 xsync测试脚本——其它主机也要安装 rsync 工具
xsync /home/duan/bin将脚本复制到/bin 中,以便全局调用
cd
cd bin
sudo cp xsync /bin/分发环境变量
sudo ./bin/xsync /etc/profile.d/my_env.sh分发后在接收到的服务器中,让环境变量生效
source /etc/profile #hadoop103
source /etc/profile #hadoop104测试
java
hadoop5.3. SSH 无密登录集群配置
在 hadoop102 中进行 ssh 连接 hadoop103
ssh hadoop103返回 hadoop102
exit
ls -al出现.ssh 文件
密钥对生成和发送
cd .ssh/生成密钥对
ssh-keygen -t rsa一直回车
ll出现公钥和私钥

公钥发到需要连接的节点
ssh-copy-id hadoop102
ll
依次执行
ssh-copy-id hadoop103
ssh-copy-id hadoop104
分别连接 hadoop103、hadoop104 服务器执行密钥对的生成和发送:
cd .ssh/
ssh-keygen -t rsa
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104配置 hadoop102 的 root 无密访问
su
ssh hadoop103
eixt
cd .ssh
ssh-keygen -t rsa
ssh-copy-id hadoop103
ssh-copy-id hadoop104测试无密登录
在 hadoop102 中输入
ssh hadoop103
表明配置完成
6.集群配置
通过前面的操作,现在三台服务器已经配置好静态 IP、JDK、主机名映射、Hadoop,但 Hadoop 之间并没有联系,因此接下来通过配置实现集群部署。
6.1 集群部署规划
NameNode 与 SecondaryNameNode 不要部署于同一服务器,资源占用高
ResourceManager、NameNode 和 SecondaryNameNode 尽量不要部署于同一服务器
6.2 配置文件说明
1.默认配置
Hadoop 四大模块对应四个配置文件
2.自定义配置
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件存放在$HADOOP_HOME/etc/hadoop 这个路径上,用户可以根据项目需求重新进行修改配置。
6.3 配置集群
1.核心配置——core-site.xml
#在hadoop102中执行
su duan
cd $HADOOP_HOME/etc/hadoop
vim core-site.xml修改以下内容
<configuration>
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为duan -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>duan</value>
</property>
</configuration>2.HDFS 配置
vim hdfs-site.xml修改以下内容:
<configuration>
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
</configuration>3.YARN 配置
vim 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>
</configuration>4.MapReduce 配置文件
vim mapred-site.xml修改以下内容:
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>5.集群分发配置
xsync /opt/module/hadoop-3.1.3/etc/hadoop/6.查看分发情况
hadoop102: cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
hadoop103: cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml7.启动集群
7.1 配置 workers
#在hadoop102中执行
cd $HADOOP_HOME/etc/hadoop
vim workers修改以下内容: 注意一定不要有任何空格!!!
hadoop102
hadoop103
hadoop104同步所有节点配置文件
xsync /opt/module/hadoop-3.1.3/etc7.2 启动集群
cd ..
cd ..
pwd
#返回[duan@hadoop102 hadoop-3.1.3]$ 此路径下1.第一次启动——初始化!
需先在 hadoop101 节点进行格式化 NamaNode
(注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。)
hdfs namenode -format2.启动 HDFS
sbin/start-dfs.shWeb 端查看 HDFS 的 NameNode,浏览器中输入:http://hadoop102:9870,查看 HDFS 上存储的数据信息
3.在配置了 ResourceManager 的节点(hadoop103)启动 YARN
sbin/start-yarn.shWeb 端查看 YARN 的 ResourceManager,浏览器中输入:http://hadoop103:8088,查看 YARN 上运行的 Job 信息
集群启动完成!