本文所用虚拟机为九台16gb 云服务器
如果您未使用云主机,则请确保虚拟机基本配置可用。
虚拟机环境准备
****首先确保
ping www.baidu.com
虚拟机网络畅通
安装epel-release
yum install -y epel-release
工具包集合,包含ifconfig等命令
yum install -y net-tools
编辑器
yum install -y vim
关闭防火墙,关闭防火墙开机自启
systemctl stop firewalld
systemctl disable firewalld.service
创建用户
useradd xxx;
/# 设置用户密码,请自行修改,后面以xxx为例
echo "123456" | passwd --stdin xxx
/# 配置sudo免密
echo 'xxx ALL=(ALL) NOPASSWD: NOPASSWD: ALL' >>/etc/sudoers
sed -i 's/Defaults requirett//#Defaults requirett/g' /etc/sudoers
vi /etc/hosts
/#add ip hostname
10.3.xxx.xxx node01
10.3.xxx.xxx node02 10.3.xxx.xxx node03 10.3.xxx.xxx node04
10.3.xxx.xxx node05
10.3.xxx.xxx node06
10.3.xxx.xxx node07
10.3.xxx.xxx node08
10.3.xxx.xxx node09
在/opt目录下创建module、software文件夹
mkdir /opt/module
mkdir /opt/software
修改module、software文件夹的所有者和所属组均为xxx用户
chown xxx:xxx /opt/module
chown xxx:xxx /opt/softwore
关于jdk,如果虚拟机最小化安装则无需卸载,否则请执行
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
来卸载jdk
安装jdk
将** jdk-8u212-linux-x64.tar.gz**,hadoop-3.1.3.tar.gz 上传到software
解压安装文件到/opt/module下面****
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
将Hadoop****添加到环境变量
pwd
/opt/module/hadoop-3.1.3
pwd
/opt/module/jdk1.8.0_212
打开/etc/profile.d/my_env.sh文件
sudo vi /etc/profile.d/my_env.sh
/#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
/#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
source /etc/profile /# 让配置生效
hadoop version /# 测试Hadoop版本
java -version /# java版本
ssh免密登录
cd ~
cd .ssh/
ssh-keygen -t rsa
ssh-copy-id -p 10002 xxx@node-01
ssh-copy-id -p 10002 xxx@node-02
ssh-copy-id -p 10002 xxx@node-03
....
请在各台服务器均执行免密配置
node1上root用户同样也配置一份免密登录
配置集群分发脚本 xsync
vi /home/xxx/bin
/#!/bin/bash
/#1. 判断参数个数
if [ $/# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
/#2. 遍历集群所有机器
for host in node-01 ... node-09
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 -p 10002 "mkdir -p $pdir"
rsync -av -e 'ssh -p 10002 ' $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
chmod +x xsync 赋予权限
cp xsync /usr/bin/
cd /opt/module/hadoop-3.1.3/etc/hadoop/
配置core-site.xml
<configuration>
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://10.3.xxx.01:8020</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为xxx -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>xxx</value>
</property>
</configuration>
配置hdfs-site.xml
<configuration>
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>10.3.xxx.01:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>10.3.xxx.02:9868</value>
</property>
</configuration>
配置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>nod03</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>
MapReduce配置文件
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
分发配置文件
xsync/opt/module/hadoop-3.1.3/etc/hadoop/
查看各台服务器分发情况
cat/opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
vi /opt/module/hadoop-3.1.3/etc/hadoop/workers
node01
node02
node03
node04
node05
node06
node07
node08
node09
分发各节点
xsync /opt/module/hadoop-3.1.3/etc
由于在生产环境下,ssh的端口被修改成xxx,不是使用的默认端口,
但是hadoop在启动相应进程的时候,会使用的ssh默认端口22
解决:
1、命令行(临时),这种方式会导致关闭当前终端,该值失效。
export HADOOP_SSH_OPTS="-p xxx"
2、永久修改:把上述的命令添加到hadoop的hadoop-env.sh文件,添加以后就可以正常启动hadoop进程。
格式化namenode
[xxx@node01 hadoop-3.1.3]$ hdfs namenode -format
(2)启动HDFS
[xxx@node01 hadoop-3.1.3]$ sbin/start-dfs.sh
(3)在配置了ResourceManager的节点node03启动YARN
[xxx@node03 hadoop-3.1.3]$ sbin/start-yarn.sh
4)Web端查看HDFS的NameNode
(a)浏览器中输入:http://node01:9870
(b)查看HDFS上存储的数据信息
(5)Web端查看YARN的ResourceManager
(a)浏览器中输入:http://node03:8088
(b)查看YARN上运行的Job信息
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://mp.weixin.qq.com/s/jjL-23oGICtTclMq0-1CzA
内容来源于网络,如有侵权,请联系作者删除!