共计 6004 个字符,预计需要花费 16 分钟才能阅读完成。
1 齐全分布模式
齐全分布模式是比本地模式与伪分布模式更加简单的模式,真正利用多台 Linux 主机来进行部署 Hadoop
,对集群进行布局,使得Hadoop
各个模块别离部署在不同的多台机器上,这篇文章介绍的是通过三台虚拟机进行集群配置的形式,次要步骤为:
- 筹备虚拟机:筹备虚拟机根本环境
ip
+Host
配置:手动设置虚拟机ip
以及主机名,须要确保三台虚拟机能相互ping
通ssh
配置:生成密钥对后复制公钥到三台虚拟机中,使其可能实现无明码相互连接Hadoop
配置:core-site.xml
+hdfs-site.xml
+workers
YARN
配置:yarn-site.xml
2 虚拟机装置
须要应用到三台虚拟机,其中一台为 Master
节点,两台 Worker
节点,首先装置虚拟机并配置环境,最初进行测试。
2.1 镜像下载
应用 VirtualBox
进行虚拟机的装置,先去 CentOS
官网下载最新版本的镜像:
这里有三种不同的镜像:
boot
:网络安装版dvd1
:完整版minimal
:最小化安装版
这里为了不便抉择最小化安装版的,也就是不带 GUI
的。
2.2 装置
下载后,关上 Virtual Box
并点击 New
,抉择 专家模式
:
命名为 CentOSMaster
,作为Master
节点,并且分配内存,这里是 1G,如果感觉本人内存大的能够 2G:
磁盘 30G 足够,其余能够放弃默认:
创立好后从设置中的存储中,抉择下载的镜像:
启动后会提醒抉择启动盘,确定即可:
好了之后会呈现如下提醒画面,抉择第一个装置:
期待一会后进入装置界面:
接下来对装置地位以及时区进行配置,首先抉择装置地位:
因为是虚构的单个空磁盘,抉择主动分区即可:
时区这里能够抉择中国的上海:
接着选择网络,首先批改主机名为master
:
接着点击Configure
:
增加 ip
地址以及 DNS
服务器,ip
地址能够参考本机,比方笔者的机器本地 ip
为192.168.1.7
,则:
- 虚拟机的
ip
能够填192.168.1.8
- 子网掩码个别为
255.255.255.0
- 默认网关为
192.168.1.1
DNS
服务器为114.114.114.114
(当然也能够换其余的公共DNS
比方阿里的223.5.5.5
、百度的180.76.76.76
等)
点击 Save
后利用主机名并开启:
没问题的话就能够装置了:
装置的时候设置 root
用户的明码以及创立用户:
用户这里采纳一个叫 hadoopuser
的用户,前面的操作都间接基于该用户:
期待一段时间后装置实现重启即可。
2.3 启动
在启动之前首先把原来的镜像去掉:
启动后是黑框界面:
登录方才创立的 hadoopuser
用户即可。
3 ssh
连贯虚拟机
默认的话是不能连贯外网的,须要在菜单栏中的 Devices
中抉择Network
,设置为Bridged Adapter
(桥接模式):
应用 ping
测试:
接着能够测试是否 ping
通本地机器:
通了之后能够通过 ssh
连贯虚拟机,像平时操作服务器一样,在本地终端中连贯虚拟机,首先增加指纹:
接着输出明码连贯即可:
如果想偷懒能够应用密钥连贯的形式,在本地机器中:
ssh-keygen -t ed25519 -a 100
ssh-copy-id -i ~/.ssh/id_ed25519.pub hadoopuser@192.168.1.8
4 根本环境搭建
根本环境搭建就是装置 JDK
以及 Hadoop
,应用scp
上传 OpenJDK
以及Hadoop
。
4.1 JDK
首先去下载 OpenJDK
,而后在本地机器上应用scp
上传:
scp openjdk-11+28_linux-x64_bin.tar.gz hadoopuser@192.168.1.8:/home/hadoopuser
接着在本地上切换到连贯虚拟机的 ssh
中,
cd ~
tar -zxvf openjdk-11+28_linux-x64_bin.tar.gz
sudo mv jdk-11 /usr/local/java
下一步是编辑 /etc/profile
,增加bin
到环境变量中,在开端增加:
sudo vim /etc/profile
# 没有 vim 请应用 vi
# 或装置:sudo yum install vim
# 增加
export PATH=$PATH:/usr/local/java/bin
而后:
. /etc/profile
测试:
4.2 Hadoop
Hadoop
的压缩包 scp
上传到虚拟机后,解压并挪动到/usr/local
:
scp hadoop-3.3.0.tar.gz hadoopuser@192.168.1.8:/home/hadoopuser
虚拟机 ssh
终端:
cd ~
tar -xvf hadoop-3.3.0.tar.gz
sudo mv hadoop-3.3.0 /usr/local/hadoop
同时批改 etc/hadoop/hadoop-env.sh
配置文件,填入 Java
门路:
sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
# 填入
export JAVA_HOME=/usr/local/java # 批改为您的 Java 目录
5 克隆
因为须要一个 Master
节点以及两个 Worker
节点,将 Master
节点关机,并抉择配置好的CentOSMaster
,右键进行克隆:
并抉择齐全克隆:
克隆出 CentOSWorker1
以及CentOSWorker2
。
6 主机名 +ip
设置
这里的两个 Worker
节点以 Worker1
以及 Worker2
命名,首先操作Worker1
,批改主机名:
sudo vim /etc/hostname
# 输出
# worker1
对于 ip
,因为Master
节点的 ip
为192.168.1.8
,因而这里批改两个 Worker
的节点别离为:
192.168.1.9
192.168.1.10
sudo vim /etc/sysconfig/network-scripts/ifcfg-xxxx # 该文件因人而异
# 批改 IPADDR
IPADDR=192.168.1.9
批改实现后重启 Worker1
,对Worker2
进行同样的批改主机名以及 ip
操作。
7 Host
设置
须要在 Master
以及 Worker
节点进行 Host
设置:
7.1 Master
节点
sudo vim /etc/hosts
# 增加
192.168.1.9 worker1 # 与下面的 ip 对应统一
192.168.1.10 worker2
7.2 Worker1
节点
sudo vim /etc/hosts
# 增加
192.168.1.8 master
192.168.1.10 worker2
7.3 Worker2
节点
sudo vim /etc/hosts
# 增加
192.168.1.8 master
192.168.1.9 worker1
7.4 互 ping
测试
在三台虚拟机中的其中一台 ping
另外两台的 ip
或者主机名,测试通过后就能够进行下一步了,这里应用 Worker1
节点测试:
8 配置ssh
8.1 sshd
服务
须要在三个节点(包含本身)之间配置 ssh
无明码(密钥)连贯,首先应用
systemctl status sshd
查看 sshd
服务是否开启,没开启的应用
systemctl start sshd
开启。
8.2 复制公钥
三个节点都进行如下操作:
ssh-keygen -t ed25519 -a 100
ssh-copy-id master
ssh-copy-id worker1
ssh-copy-id worker2
8.3 测试
在其中一个节点中间接 ssh
连贯其余节点,无需明码即可登录,比方在 Master
节点中:
ssh master # 都是 hadoopuser 用户,所以省略了用户
ssh worker1
ssh worker2
9 Master
节点 Hadoop
配置
在 Master
节点中,批改以下三个配置文件:
HADOOP/etc/hadoop/core-site.xml
HADOOP/etc/hadoop/hdfs-site.xml
HADOOP/etc/hadoop/workers
9.1 core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/data/tmp</value>
</property>
</configuration>
fs.defaultFS
:NameNode
地址hadoop.tmp.dir
:Hadoop
长期目录
9.2 hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/datanode</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
dfs.namenode.name.dir
:保留FSImage
的目录,寄存NameNode
的metadata
dfs.datanode.data.dir
:保留HDFS
数据的目录,寄存DataNode
的多个数据块dfs.replication
:HDFS
存储的长期备份数量,有两个Worker
节点,因而数值为2
9.3 workers
最初批改workers
,输出(与下面设置的主机名统一):
worker1
worker2
9.4 复制配置文件
把 Master
节点的配置复制到 Worker
节点:
scp /usr/local/hadoop/etc/hadoop/* worker1:/usr/local/hadoop/etc/hadoop/
scp /usr/local/hadoop/etc/hadoop/* worker2:/usr/local/hadoop/etc/hadoop/
10 HDFS
格式化并启动
10.1 启动
在 Master
节点中:
cd /usr/local/hadoop
bin/hdfs namenode -format
sbin/start-dfs.sh
运行后能够通过 jps
命令查看:
在 Worker
节点中:
10.2 测试
浏览器输出:
master:9870
# 如果没有批改本机 Host 能够输出
# 192.168.1.8:9870
然而。。。
本认为做了这么多能看到成绩了。
而后查看过了一遍本机 + 虚拟机 Host
,还有Hadoop
的配置文件,都没有问题。
最初,
才定位到问题是
防火墙。
10.3 防火墙
CentOS8
默认开启了防火墙,能够应用:
systemctl status firewalld
查看防火墙状态。
因为是通过 9870
端口拜访,首先查问 9870
是否凋谢,Master
节点中输出:
sudo firewall-cmd --query-port=9870/tcp
# 或
sudo firewall-cmd --list-ports
如果输入为no
:
则示意没有凋谢,手动凋谢即可:
sudo firewall-cmd --add-port=9870/tcp --permanent
sudo firewall-cmd --reload # 使其失效
再次在浏览器输出:
master:9870
# 如果没有批改本地 Host
# 192.168.1.8:9870
能够看到一个敌对的页面了:
然而,有一个问题就是这里没有显示 Worker
节点,上图中的 Live Nodes
数目为 0,而 Datanodes
这里什么也没有显示:
然而在 Worker
节点中确实能够看到有 Datanode
的过程了:
查看 Worker
节点的日志(/usr/local/hadoop/logs/hadoop-hadoopuser-datanode-worker1.log
)能够看到应该是 Master
节点 9000
端口的没有开启的问题:
回到 Master
节点,先执行 stop-dfs.sh
敞开,并凋谢 9000
端口后执行 start-dfs.sh
开启:
/usr/local/hadoop/sbin/stop-dfs.sh
sudo firewall-cmd --add-port=9000/tcp --permanent
sudo firewall-cmd --reload
/usr/local/hadoop/sbin/start-dfs.sh
再次在浏览器拜访:
master:9000
# 或
# 192.168.1.8:9000
这时候就能够看见 Worker
节点了:
11 配置YARN
11.1 YARN
配置
在两个 Worker
节点中批改/usr/local/hadoop/etc/hadoop/yarn-site.xml
:
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
11.2 开启YARN
Master
节点中开启YARN
:
cd /usr/local/hadoop
sbin/start-yarn.sh
同时凋谢 8088
端口为上面的测试做筹备:
sudo firewall-cmd --add-port=8088/tcp --permanent
sudo firewall-cmd --reload
11.3 测试
浏览器输出:
master:8088
# 或
# 192.168.1.8:8088
应该就能够拜访如下页面了:
同样情理没有看到 Worker
节点,查看 Worker
节点的日志,发现也是端口的问题:
Master
节点先敞开 YARN
,凋谢8031
端口,并重启YARN
:
/usr/local/hadoop/sbin/stop-yarn.sh
sudo firewall-cmd --add-port=8031/tcp --permanent
sudo firewall-cmd --reload
/usr/local/hadoop/sbin/start-yarn.sh
再次拜访:
master:8088
# 或
# 192.168.1.8:8088
就能够看到 Worker
节点了:
至此,虚拟机组成 Hadoop
集群正式搭建实现。
12 参考
- CSDN-GitChat·大数据 | 史上最具体的 Hadoop 环境搭建
- How To Set Up a Hadoop 3.2.1 Multi-Node Cluster on Ubuntu 18.04 (2 Nodes)
- How to Install and Set Up a 3-Node Hadoop Cluster
- CSDN-virtualBox 实现主机和虚拟机互相 ping 通, 配置动态 IP 地址