Ubuntu配置Hadoop3.x

一、前置条件

hadoop-3.1.3.tar.gz

jdk-8u211-linux-x64.tar.gz

二、虚拟机搭建

下面为三台虚拟机的 hostname 和 ip 地址

hostname ip
hadoop102 192.168.10.102
hadoop103 192.168.10.103
hadoop104 192.168.10.104

网络配置

1.VMware 网络配置

打开虚拟机编辑里的虚拟网络编辑器,VMnet8 (NAT 模式),更多设置,记得勾选 DHCP 选项

image-20240808222504709 image-20240808222651171 image-20240808222743213

在网络和Internet/高级网络设置中确保VMnet8为下图已启用状态

image-20240808222930032

属性,TCP/IPv4协议中配好ip

image-20240808223154050 image-20240808223322903

2.Ubuntu 网络配置

查看 ip 地址

1
ifconfig
image-20240812093714896

编写如图,电脑端口 (ens33) 在查 ip 地址时可看见

1
sudo vim /etc/netplan/01-network-manager-all.yaml 

修改内容,注意 addresses 与 ip 相同

image-20240812105634585

保存之后使用

1
sudo netplan apply

更新网络,重新查看ip,修改成功则可下一步

1
sudo vim /etc/hostname

修改主机名字,三台都要改分别为(hadoop102、hadoop103、hadoop104)

image-20240812105207261
1
sudo vim /etc/hosts 

修改节点IP映射,都要改

image-20240812104946755

配置好后在各个节点上互 ping

1
2
3
ping hadoop102
ping hadoop103
ping hadoop104

配置 ssh 免密登录,三个节点都要设置

1
2
3
4
5
cd ~/.ssh/
ssh-keygen -t rsa
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104

如需下载先更新

1
sudo apt-get update

如果没有 ssh 首先安装

1
sudo apt-get install openssh-server

安装好之后还是发现ssh登录失败,可以将防火墙关闭

1
2
sudo systemctl stop ufw     //关闭防火墙
sudo systemctl disable ufw //永久关闭防火墙

jdk配置

在/opt目录下创建module文件夹

1
sudo mkdir /opt/module

修改module文件夹的所有者和所属组均为自己建立的用户

1
sudo chown rain:rain /opt/module

将准备好的jdk-8.2.11解压好并移动到/opt/module中

1
tar -zxvf jdk-8.2.11.tar.gz -C /opt/module/

在etc/profile.d文件添加如下内容

1
sudo vim /etc/profile.d
1
2
3
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_211
export PATH=$PATH:$JAVA_HOME/bin

source一下/etc/profile文件,让新的环境变量PATH生效

1
source /etc/profile

验证 java -version(其余节点hadoop103、hadoop104配置同上)

hadoop的安装

将准备好的hadoop-3.1.3解压好并移动到/opt/module中

1
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

在/etc/profile.d文件中添加如下内容

1
2
3
4
#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文件,让新的环境变量PATH生效

1
source /etc/profile

验证hadoop version(其余节点hadoop103、hadoop104配置同上)

集群配置

配置core-site.xml

1
vim core-site.xml

文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<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网页登录使用的静态用户为rain -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>rain</value>
</property>
</configuration>

配置hdfs-site.xml

1
vim hdfs-site.xml

文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
<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>

配置yarn-site.xml

1
vim yarn-site.xml

文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<configuration>

<!-- Site specific YARN configuration properties -->
<!-- 指定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>

配置mapred-site.xml

1
vim mapred-site.xml

文件内容如下:

1
2
3
4
5
6
7
8
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

</configuration>

配置workers

1
vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

在该文件中增加如下内容:

1
2
3
hadoop102
hadoop103
hadoop104

将配置好的文件分发到其他节点中

1
2
rsync -av hadoop-3.1.3/ rain@hadoop103:/opt/module/hadoop-3.1.3/
rsync -av hadoop-3.1.3/ rain@hadoop104:/opt/module/hadoop-3.1.3/

启动集群

如果集群是第一次启动,需要在hadoop102节点格式化NameNode(注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。

1
hdfs namenode -format

启动HDFS

1
sbin/start-dfs.sh

在配置了ResourceManager的节点(hadoop103)启动YARN

1
sbin/start-yarn.sh

常用脚本

Hadoop集群启停脚本(包含HDFS,Yarn,Historyserver):myhadoop.sh

1
2
cd /home/rain/bin
vim myhadoop.sh

输入如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash

if [ $# -lt 1 ]
then
echo "No Args Input..."
exit ;
fi

case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="

echo " --------------- 启动 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 关闭 hadoop集群 ==================="

echo " --------------- 关闭 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac

保存后退出,然后赋予脚本执行权限

1
chmod +x myhadoop.sh

查看三台服务器Java进程脚本:jpsall

1
2
cd /home/rain/bin
vim jpsall

输入如下内容

1
2
3
4
5
6
7
8
#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
echo =============== $host ===============
ssh $host jps
done

保存后退出,然后赋予脚本执行权限

1
chmod +x jpsall
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2024 CuiJP
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信