Hadoop3.3.0集群安装
环境:JDK1.8
Centos 7.8
Hadoop 3.3.0
1.集群规划
在VMWare中构建3台运行Centos的机器作为服务器,一共3个node,一个node为namenode(master主机) ,另外两个node分别为datanode(slave1)和datanode(slave2.)。
2.关闭防火墙
永久关闭 firewalld 防火墙(centos7默认的防火墙是firewalld防火墙,不是使用iptables,因此需要关闭firewalld服务)
firewall-cmd --state //查看防火墙状态
systemctl stop firewalld.service // 停止firewalld服务
systemctl disable firewalld.service // 开机禁用firewalld服务
3.配置网络、设置静态IP,修改主机名,以及创建集群账号
3.1.1 查看网络IP和网关,
3.1.2 修改IP
3.1.3 查看网关
3.1.4 查看windows环境的中VMnet8网络配置
3.2 设置静态IP
CentOS7 默认网卡设备文件存放于 /etc/sysconfig/network-scripts/。
[root@localhost~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
//修改以下内容
BOOTPROTO=static //启用静态IP地址
ONBOOT=yes //开启自动启用网络连接
//添加以下内容
IPADDR=192.168.1.100
//设置IP地址
NETMASK=255.255.255.0 //子网掩码
GATEWAY=192.168.1.2 //设置网关
配置完之后
[root@hadoop102 ~]$ vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
# IP的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议)
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="2063e693-8ffd-4a1a-8a0d-cbec0b95a868"
DEVICE="ens33"
#系统启动的时候网络接口是否有效(yes/no)
ONBOOT="yes"
#IP地址
IPADDR=192.168.1.100
#网关
GATEWAY=192.168.1.2
#域名解析器
DNS1=114.114.114.114
DNS2=8.8.8.8
修改后,执行 service network restart,如果报错,reboot now,重启虚拟机
验证网卡是否配置成功
3.3 修改主机名称,配置/etc/hosts
vim /etc/hosts
## =============================
192.168.1.100 hadoop100
192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103
192.168.1.104 hadoop104
## =============================
修改后,重启虚拟机,查看主机名,发现主机名已经修改过来
修改window10的主机映射文件(hosts文件)
(1)进入C:\Windows\System32\drivers\etc路径
(2)拷贝hosts文件到桌面
(3)打开桌面hosts文件并添加如下内容
192.168.1.100 hadoop100
192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103
192.168.1.104 hadoop104
(4)将桌面hosts文件覆盖C:\Windows\System32\drivers\etc路径hosts文件
3.4 创建集群账号
创建一个一般用户datathink,给他配置密码
[root@hadoop102 ~]$ useradd datathink
[root@hadoop102 ~]$ passwd datathink
配置这个用户为sudoers
vim /etc/sudoers
在root ALL=(ALL) ALL
添加datathink ALL=(ALL) NOPASSWD:ALL
*在/opt目录下创建两个文件夹module和software,并把所有权赋给datathink
[root@hadoop102 ~]$ mkdir /opt/module /opt/software
[root@hadoop102 ~]$ chown datathink:datathink /opt/module /opt/software
4.关机,快照,克隆
从这里开始要以一般用户登陆,克隆的虚拟机改IP。
5.编写一个分发脚本
[datathink@hadoop102 ~]$ cd ~
[datathink@hadoop102 ~]$ 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 $USER@$host:$pdir
else
echo $file does not exists!
fi
done
done
==============================================================
[datathink@hadoop102 ~]$ chmod +x xsync
[datathink@hadoop102 ~]$ sudo cp xsync /bin
[datathink@hadoop102 ~]$ sudo xsync /bin/xsync
6.配置免密登陆
1. 生成密钥对
ssh-keygen -t rsa 三次回车
2. 发送公钥到本机
ssh-copy-id hadoop102 输入一次密码
3. 分别ssh登陆一下所有虚拟机
ssh hadoop103
exit
ssh hadoop104
exit
4. 把/home/atguigu/.ssh 文件夹发送到集群所有服务器
xsync /home/datathink/.ssh
7.安装Java和Hadoop
删除现有JDK,每台结点都执行
sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps
可以去官网下载相应版本的jar
1. 拷贝文件到/opt/software,两个tar包
2. tar -zxf h"+tab" -C /opt/module
3. tar -zxf j"+tab" -C /opt/module
4. sudo vim /etc/profile
在文件末尾添加
=======================================================
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
========================================================
保存
5. source /etc/profile // 让文件立刻生效
# 分发配置文件和JDK、HADOOP
6. sudo xsync /etc/profile
7. xsync /opt/module/jdk1.8.0_144
8. xsync /opt/module/hadoop-3.3.0
9. 在其他机器分别执行source /etc/profile
注:所有配置文件都在$HADOOP_HOME/etc/hadoop
8.安装hadoop集群
. 首先配置hadoop-env.sh,yarn-env.sh,mapred-env.sh文件,配置Java_HOME
在每个文件第二行添加 export JAVA_HOME=/opt/module/jdk1.8.0_144
- 配置Core-site.xml
==============================================================
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.3.0/data/tmp</value>
</property>
==============================================================
- 配置hdfs-site.xml
==============================================================
<!-- 数据的副本数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>
==============================================================
- 配置yarn-site.xml
==============================================================
<!-- Site specific YARN configuration properties -->
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
==============================================================
- 配置mapred-site.xml
==============================================================
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop104:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop104:19888</value>
</property>
启动历史服务器:mr-jobhistory-daemon.sh start historyserver
==============================================================
- 配置workers(注意hadoop3.0之前是slaver,3.0之后是workers,否则可能会无法正常启动集群)
==============================================================
hadoop102
hadoop103
hadoop104
==============================================================
-
分发配置文件
xsync /opt/module/hadoop-2.7.2/etc -
格式化Namenode 在hadoop102
hdfs namenode -format -
启动hdfs
start-dfs.sh
可以通过jps查看当前进程
-
在配置了Resourcemanagr机器上执行
在Hadoop103上启动start-yarn.sh
-
mkdir input
vim input/input
abc
def efg
asd
hadoop fs -put input /
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /input /output
-
关 stop-dfs.sh stop-yarn.sh
-
hadoop-daemon.sh start namenode或datanode
yarn-daemon.sh start resourcemanager或nodemanager
如果集群出了问题
stop-dfs.sh
stop-yarn.sh
#三台机器都要执行
cd $HADOOP_HOME
rm -rf data logs
回到7
9.通过网页访问hdfs集群的状态
http://hadoop102:9870
默认端口时9870,可以通过hdfs-default.xml配置文件里面的 dfs.namenode.http-address配置
注:hadoop3.0之前的默认端口是50070
10.通过网页访问YARN集群的状态
http://hadoop103:8088/
hadoop3.* 和 hadoop2.* 的端口变化如下所示:
Namenode 端口:
50470 --> 9871
50070 --> 9870
8020 --> 9820
Secondary NN 端口:
50091 --> 9869
50090 --> 9868
Datanode 端口:
50020 --> 9867
50010 --> 9866
50475 --> 9865
50075 --> 9864
寄语
你知道的越多,你知道的越少,技术的路上永远没有终点。