一.准备三台虚拟机(静态IP配置,修改主机名称,免密登录)
1. 静态IP配置
1) 修改配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=76324532-0034-4043-9c01-0ba641369c44
DEVICE=ens33
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.10.111
GATEWAY=192.168.10.2
DNS1=192.168.10.2
将配置文件中的BOOTPRPOTO=dhcp修改为static,ONBOOT=yes
添加NETMASK(子网掩码),IPADDR(IP地址),GATEWAY(网关),DNS(DNS服务器,与网关地址相同即可)
2)重启网络服务
使用命令:service network restart重启网络服务
如果失败,需要查看一下本机上的虚拟网络服务是否启动.
右键我的电脑,点击管理,在点击服务和应用程序,找到VMware 相关的应用程序,查看状态,如果没有启动,右键启动即可.
3) 修改主机名称,在hosts配置文件中添加虚拟机名称和地址.
使用命令hostnamectl set-hostname xxx(新的名称)进行修改
在hosts文件中配置 vi /etc/hosts
添加
192.168.10.111 hadoop11
192.168.10.112 hadoop12
192.168.10.113 hadoop13
4)免密登录设置
永久关闭防火墙
systemctl disable firewalld
使用命令
ssh localhost
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
一路yes即可.
每个虚拟机都要进行这一步
将ssh复制到其他虚拟机
ssh-copy-id hadoop11
ssh-copy-id hadoop12
ssh-copy-id hadoop13
尝试登录其他虚拟机
ssh hadoop12 登录成功不需要密码即可.
二. xsync分发脚本和安装hadoop和JDK
1.xsync分发脚本
1) 安装rsycn
yum install -y rsync 每个虚拟机都需要进行安装
2) 在~目录下创建bin目录,并创建xsync文件并写入shell脚本
vi xsync
写入
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=11; host<14; host++)); do
echo ------------------- cdh$host --------------
rsync -rvl $pdir/$fname $user@cdh$host:$pdir
done
3) 赋予xsync权限
赋予xsync权限 chmod 777 xsync
4) 分发文件
xsync ~/bin
2.安装JDK和Hadoop
1) 创建文件夹
在opt文件夹下创建software和moudle文件加,并将hadoo和jdk压缩包放入software中
jdk版本需要与hadoop版本对应,jdk最好使用1.8版本
jdk版本和Hadoop版本兼容即可
2) 安装和分发hadoop和jdk
在software目录下,使用命令
tar -zxvf hadoop-3.2.2.tar.gz -C /opt/moudle/
tar -zxvf jdk-8u291-linux-x64.tar.gz -C /opt/moudle/
将压缩包解压到moudle下
使用命令
xsync /opt
将opt目录分发给其他虚拟机
3) 修改名称
改名
mv hadoop-3.2.2/ hadoop
mv jdk1.8.0_291/ jdk1.8
三. 配置相关文件
1.系统环境变量配置
HADOOP_HOME和JAVA_HOME
vi /ete/profile
在文件最后添加
##JAVA_HOME
export JAVA_HOME=/opt/moudle/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
##HADOOP_HOME
export HADOOP_HOME=/opt/moudle/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
分发该文件
xsync /etc/profile
使用source /etc/profile时环境立即生效
java -version 查看是否配置成功
2.HDFS文件配置
1) hadoop-env.sh
vi etc/hadoop/hadoop-env.sh
找到export JAVA_HOME=
将jdk的绝对路径复制进去.保存退出
2).core-site.xml
vi etc/hadoop/core-site.xml
配置namenode服务器地址
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop11:9000</value>
</property>
配置HDFS文件保存路径
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/moudle/hadoop/data/tmp</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
3). hdfs-site.xml
设置hdfs的副本数,根据完全分布式服务器的数目进行配置
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
设置2NN的服务器
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop13:50090</value>
</property>
3. YARN相关配置
1)yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
设置sesourcemanager的服务器,伪分布式时将value值设置为本地服务器,完全分布式根据需要设置服务器
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop12</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>172.17.174.67:8088</value>
</property>
4.sbin目录下的相关配置
为了避免出现不必要的警告
sbin/start-yarn.sh sbin/stop-yarn.sh
开头添加
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
将以上所有配置文件分发给其他两台虚拟机
四.格式化namenode并启动集群
1.格式化namenode
hdfs namenode -format
格式化之前不需要做任何步骤,直接格式化即可,避免创建文件夹造成不必要的麻烦
格式化成功后,在hadoop目录下会出现logs文件夹和data文件夹
前者是保存日志文件,后者是保存hdfs存储的文件的
2.启动集群
使用一下命令的时候,建议先使用start-dfs.sh和start-yarn.sh分别启动,更好的查看集群启动的情况.
start-all.sh
jps 查看集群启动状态
群起集群后,使用jps查看集群状态.