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 100ssh-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.gzsudo 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 # 该文件因人而异# 批改IPADDRIPADDR=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 master192.168.1.10 worker2
7.3 Worker2
节点
sudo vim /etc/hosts# 增加192.168.1.8 master192.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 100ssh-copy-id masterssh-copy-id worker1ssh-copy-id worker2
8.3 测试
在其中一个节点中间接ssh
连贯其余节点,无需明码即可登录,比方在Master
节点中:
ssh master # 都是hadoopuser用户,所以省略了用户ssh worker1ssh 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
,输出(与下面设置的主机名统一):
worker1worker2
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/hadoopbin/hdfs namenode -formatsbin/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 --permanentsudo 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.shsudo firewall-cmd --add-port=9000/tcp --permanentsudo 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/hadoopsbin/start-yarn.sh
同时凋谢8088
端口为上面的测试做筹备:
sudo firewall-cmd --add-port=8088/tcp --permanentsudo firewall-cmd --reload
11.3 测试
浏览器输出:
master:8088# 或# 192.168.1.8:8088
应该就能够拜访如下页面了:
同样情理没有看到Worker
节点,查看Worker
节点的日志,发现也是端口的问题:
Master
节点先敞开YARN
,凋谢8031
端口,并重启YARN
:
/usr/local/hadoop/sbin/stop-yarn.shsudo firewall-cmd --add-port=8031/tcp --permanentsudo 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地址