1 概述
上一篇文章介绍了如何应用虚拟机搭建集群,到了这篇文章就是实战了,应用实在的三台不同服务器进行 Hadoop
集群的搭建。具体步骤其实与虚拟机的差不多,然而因为平安组以及端口等等一些列的问题,会与虚拟机有所不同,废话不多说,上面正式开始。
2 约定
Master
节点的ip
用MasterIP
示意,主机名用master
示意- 两个
Worker
节点的ip
用Worker1IP
/Worker2IP
示意,主机名用worker1
/worker2
示意 - 这里为了演示不便对立应用
root
用户登录,当然生产环境不会这样
3(可选)本地Host
批改本地Host
,方便使用主机名来进行操作:
sudo vim /etc/hosts
# 增加
MaterIP master
Worker1IP worker1
Worker2IP worker2
4 ssh
本机生成密钥对后复制公钥到三台服务器上:
ssh-keygen -t ed25519 -a 100 # 应用更快更平安的 ed25519 算法而不是传统的 RSA-3072/4096
ssh-copy-id root@master
ssh-copy-id root@worker1
ssh-copy-id root@worker2
这时能够间接应用 root@host
进行连贯了:
ssh root@master
ssh root@worker1
ssh root@worker2
不须要输出明码,如果不能连贯或者须要输出明码请查看 /etc/ssh/sshd_config
或系统日志。
5 主机名
批改 Master
节点的主机名为 master
,两个Worker
节点的主机名为worker1
、worker2
:
# Master 节点
vim /etc/hostname
master
# Worker1 节点
# worker1
# Worker2 节点
# worker2
同时批改Host
:
# Master 节点
vim /etc/hosts
Worker1IP worker1
Worker2IP worker2
# Worker1 节点
vim /etc/hosts
MasterIP master
Worker2IP worker2
# Worker1 节点
vim /etc/hosts
MasterIP master
Worker1IP worker1
批改实现之后须要互 ping
测试:
ping master
ping worker1
ping worker2
ping
不通的话应该是平安组的问题,凋谢 ICMP
协定即可:
6 配置根本环境
6.1 JDK
scp
上传 OpenJDK 11
,解压并搁置于/usr/local/java
下,同时批改PATH
:
export PATH=$PATH:/usr/local/java/bin
如果原来的服务器装有了其余版本的 JDK
能够先卸载:
yum remove java
留神设置环境变量后须要测试以下java
,因为不同服务器的架构可能不一样:
比方笔者的 Master
节点为 aarch64
架构,而两个 Worker
都是 x86_64
架构,因而 Master
节点执行 java
时报错如下:
解决办法是通过 yum install
装置OpenJDK11
:
yum install java-11-openjdk
6.2 Hadoop
scp
上传 Hadoop 3.3.0
,解压并搁置于/usr/local/hadoop
下,留神抉择对应的架构:
解压后批改以下四个配置文件:
etc/hadoop/hadoop-env.sh
etc/hadoop/core-site.xml
etc/hadoop/hdfs-site.xml
etc/hadoop/workers
6.2.1 hadoop-env.sh
批改 JAVA_HOME
环境变量即可:
export JAVA_HOME=/usr/local/java # 批改为您的 Java 目录
6.2.2 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>
具体选项与虚拟机形式的设置雷同,这里不再反复叙述。
6.2.3 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>
6.2.4 workers
worker1
worker2
6.2.5 复制配置文件
# 如果设置了端口以及私钥
# 加上 -P 端口 -i 私钥
scp /usr/local/hadoop/etc/hadoop/* worker1:/usr/local/hadoop/etc/hadoop/
scp /usr/local/hadoop/etc/hadoop/* worker2:/usr/local/hadoop/etc/hadoop/
7 启动
7.1 格式化HDFS
在 Master
中,首先格式化HDFS
cd /usr/local/hadoop
bin/hdfs namenode -format
如果配置文件没错的话就格式化胜利了。
7.2 hadoop-env.sh
还是在 Master
中,批改/usr/local/hadoop/etc/hadoop/hadoop-env.sh
,开端增加:
HDFS_DATANODE_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
7.3 启动
首先 Master
凋谢 9000
以及 9870
端口(个别平安组凋谢即可,如果开启了防火墙 firewalld/iptables
则增加相应规定),并在 Master
节点中启动:
sbin/start-dfs.sh
浏览器输出:
MasterIP:9870
即可看到如下页面:
如果看到 Live Nodes
数量为 0 请查看 Worker
的日志,这里发现是端口的问题:
并且在配置了平安组,敞开了防火墙的状况下还是如此,则有可能是 Host
的问题,能够把 Master
节点中的:
# /etc/hosts
127.0.0.1 master
删去,同样情理删去两个 Worker
中的:
# /etc/hosts
127.0.0.1 worker1
127.0.0.1 worker2
8 YARN
8.1 环境变量
批改/usr/local/hadoop/etc/hadoop/hadoop-env.sh
,增加:
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
8.2 YARN
配置
在两个 Worker
节点中批改/usr/local/hadoop/etc/hadoop/yarn-site.xml
:
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
8.3 开启YARN
Master
节点中开启YARN
:
cd /usr/local/hadoop
sbin/start-yarn.sh
同时 Master
的平安组凋谢 8088
以及 8031
端口。
8.4 测试
浏览器输出:
MasterIP:8088
应该就能够拜访如下页面了:
至此集群正式搭建实现。
9 参考
- 博客园 -HDFS 之五:Hadoop 回绝近程 9000 端口拜访
- 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