Hadoop 2.0 部署
部署方式
Hadoop 主要有两种安装方式,即传统解压包方式和 Linux 标准方式。本次实验为了熟悉Hadoop运行流程,所以采用传统解压包方式
Hadoop 部署环境分为单机模式、伪分布模式和分布式模式三种。由上述情况,所以采用分布式模式部署
准备环境
真机环境:Windows 11,内存 16G
虚拟机环境:采用基于 Hyper-V 技术的 multipass,运行 Ubuntu 24.04 LTS
预安装软件包:
hadoop-2.10.2.tar.gz
jdk-8u202-linux-x64.tar.gz
创建虚拟机
multipass 的安装过程略
# 真机 powershell
multipass launch -n cMaster -c 1 -m 1G -d 8G
multipass launch -n cSlave0 -c 1 -m 1G -d 8G
multipass launch -n cSlave1 -c 1 -m 1G -d 8G
创建主机名分别为cMaster,cSlave0,cSlave1的三台虚拟机,1核1G内存8G空间
安装包挂载
# 真机 powershell
multipass exec cMaster mkdir ./mount # 创建对应挂载目录
multipass exec cSlave0 mkdir ./mount
multipass exec cSlave1 mkdir ./mount
multipass mount E:/data cMaster:/home/ubuntu/mount # 将真机中存放安装
multipass mount E:/data cSlave0:/home/ubuntu/mount # 包的路径挂载到虚
multipass mount E:/data cSlave1:/home/ubuntu/mount # 拟机的对应目录上
也可以选择别的方式将安装包传到Hadoop集群的机器上
集群网络配置
目标IP地址映射如下
主机名 | IP映射 |
---|---|
cMaster | 192.168.130.100 |
cSlave0 | 192.168.130.101 |
cSlave1 | 192.168.130.102 |
网卡绑定
-
在 Hyper-V 管理器的虚拟交换机管理器中,新建虚拟网络交换机,选择内部网络
-
选择到对应虚拟机的设置,将添加的网卡加入
-
设置虚拟网卡的网关
打开真机网络适配器,找到 Hyper-V Virtual Ethernet Adapter #2,进入 IPv4 设置
如下设置- IP地址: 192.168.130.1
- 子网掩码: 255.255.255.0
配置虚拟机静态 IP
以 cMaster 举例
sudo vi /etc/netplan/50-cloud-init.yaml
修改内容
network:
ethernets:
eth0:
... # eth0 是Hyper-V默认,这里的设置全都不动
eth1:
addresses: [192.168.130.100/24] # cMaster是.100,其他机器对应修改
routes:
- to: default
via: 192.168.130.1
dhcp4: false
应用修改
sudo netplan apply
重新连接到shell后检查是否成功
修改hosts
sudo vi /etc/hosts
sudo vi /etc/cloud/templates/hosts.debian.tmpl # 使hosts重启生效
删除主机名记录
# 127.0.1.1 {{fqdn}} {{hostname}}
添加映射
192.168.130.100 cMaster
192.168.130.101 cSlave0
192.168.130.102 cSlave1
关闭防火墙
sudo systemctl stop ufw
sudo systemctl disable ufw
安装 JDK
sudo mkdir /usr/java # 目标安装路径
sudo tar -zxvf /home/ubuntu/mount/jdk-8u202-linux-x64.tar.gz -C /usr/java # 从挂载的路径解压 JDK8 到目标安装路径
sudo bash -c 'echo "JAVA_HOME=\"/usr/java/jdk1.8.0_202\"" >> /etc/environment' # 全局设置环境变量 JAVA_HOME
sudo bash -c 'echo "export PATH=\"$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin\"" > /etc/profile.d/java-env.sh' # 将 Java 加入 Path
source /etc/environment # 应用更改
source /etc/profile
使用 java -version
检测是否安装完成
ubuntu@cMaster:~$ java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
解压Hadoop
mkdir /home/ubuntu/hadoop
tar -zxvf /home/ubuntu/mount/hadoop-2.10.2.tar.gz -C /home/ubuntu/hadoop
解压完毕可以卸载安装包目录,在真机终端内执行如下命令
# 真机 powershell
multipass unmount cMaster
multipass unmount cSlave0
multipass unmount cSlave1
配置Hadoop
-
修改
core-site.xml
文件vi ~/hadoop/hadoop-2.10.2/etc/hadoop/core-site.xml
在
<configuration></configuration>
内加入以下内容<property> <name>hadoop.tmp.dir</name> <value>/home/ubuntu/cloudData</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://cMaster:9000</value> </property>
-
修改
yarn-site.xml
文件vi ~/hadoop/hadoop-2.10.2/etc/hadoop/yarn-site.xml
在
<configuration></configuration>
内加入以下内容<property> <name>yarn.resourcemanager.hostname</name> <value>cMaster</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
-
重命名
mapred-site.xml.template
为mapred-site.xml
并修改内容cp ~/hadoop/hadoop-2.10.2/etc/hadoop/mapred-site.xml.template\ ~/hadoop/hadoop-2.10.2/etc/hadoop/mapred-site.xml vi ~/hadoop/hadoop-2.10.2/etc/hadoop/mapred-site.xml
在
<configuration></configuration>
内加入以下内容<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
启动Hadoop
-
Master上
cd ~/hadoop/hadoop-2.10.2/ ./bin/hdfs namenode -format # 格式化主节点命名空间 ./sbin/hadoop-daemon.sh start namenode # cMaster启动存储主服务 ./sbin/yarn-daemon.sh start resourcemanager # 启动资源管理主服务
格式化主节点命名空间成功如图,只有第一次启动需要格式化
-
Slave上
cd ~/hadoop/hadoop-2.10.2/ ./sbin/hadoop-daemon.sh start datanode # Slave启动存储从服务 ./sbin/yarn-daemon.sh start nodemanager # Slave启动资源管理从服务
测试Hadoop
-
查询系统内 Java 虚拟机进程
jps
如果Hadoop运行成功,将会在对应机器看到类似信息
Master Slave -
网页访问
需要先在真机 Hosts 文件添加虚拟机相同映射
-
HDFS相关信息 http://cMaster:50070
-
Yarn相关信息 http://cMaster:8088
-
验证集群
./bin/hdfs dfs -mkdir /in
./bin/hdfs dfs -put *** /in # 星号部分填自己要上传的内容
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.2.jar\
wordcount /in /out/wc-01
总结与经验
-
Hadoop 本身部署起来很简单,其大量工作其实都是前期的 Linux 环境配置,Hadoop安装只是解压、修改配置文件、格式化、启动和验证
-
Hadoop 对网络配置要求非常精确,我在反复尝试中发现 hosts 文件中主机名映射到 127.0.1.1 会导致 Slave 节点访问不到 Master 节点上的服务
-
后续可以配置免密SSH,使用 sbin/start-x.sh 相关脚本快速启动集群