1 概述
上一篇文章介绍了如何应用虚拟机搭建集群,到了这篇文章就是实战了,应用实在的三台不同服务器进行Hadoop
集群的搭建。具体步骤其实与虚拟机的差不多,然而因为平安组以及端口等等一些列的问题,会与虚拟机有所不同,废话不多说,上面正式开始。
2 约定
Master
节点的ip
用MasterIP
示意,主机名用master
示意- 两个
Worker
节点的ip
用Worker1IP
/Worker2IP
示意,主机名用worker1
/worker2
示意 - 这里为了演示不便对立应用
root
用户登录,当然生产环境不会这样
3 (可选)本地Host
批改本地Host
,方便使用主机名来进行操作:
sudo vim /etc/hosts# 增加MaterIP masterWorker1IP worker1Worker2IP worker2
4 ssh
本机生成密钥对后复制公钥到三台服务器上:
ssh-keygen -t ed25519 -a 100 # 应用更快更平安的ed25519算法而不是传统的RSA-3072/4096ssh-copy-id root@masterssh-copy-id root@worker1ssh-copy-id root@worker2
这时能够间接应用root@host
进行连贯了:
ssh root@masterssh root@worker1ssh root@worker2
不须要输出明码,如果不能连贯或者须要输出明码请查看/etc/ssh/sshd_config
或系统日志。
5 主机名
批改Master
节点的主机名为master
,两个Worker
节点的主机名为worker1
、worker2
:
# Master节点vim /etc/hostnamemaster# Worker1节点# worker1# Worker2节点# worker2
同时批改Host
:
# Master节点vim /etc/hostsWorker1IP worker1Worker2IP worker2# Worker1节点vim /etc/hostsMasterIP masterWorker2IP worker2# Worker1节点vim /etc/hostsMasterIP masterWorker1IP worker1
批改实现之后须要互ping
测试:
ping masterping worker1ping 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
worker1worker2
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/hadoopbin/hdfs namenode -format
如果配置文件没错的话就格式化胜利了。
7.2 hadoop-env.sh
还是在Master
中,批改/usr/local/hadoop/etc/hadoop/hadoop-env.sh
,开端增加:
HDFS_DATANODE_USER=rootHDFS_NAMENODE_USER=rootHDFS_SECONDARYNAMENODE_USER=root
7.3 启动
首先Master
凋谢9000
以及9870
端口(个别平安组凋谢即可,如果开启了防火墙firewalld/iptables
则增加相应规定),并在Master
节点中启动:
sbin/start-dfs.sh
浏览器输出:
MasterIP:9870
即可看到如下页面:
如果看到Live Nodes
数量为0请查看Worker
的日志,这里发现是端口的问题:
并且在配置了平安组,敞开了防火墙的状况下还是如此,则有可能是Host
的问题,能够把Master
节点中的:
# /etc/hosts127.0.0.1 master
删去,同样情理删去两个Worker
中的:
# /etc/hosts127.0.0.1 worker1127.0.0.1 worker2
8 YARN
8.1 环境变量
批改/usr/local/hadoop/etc/hadoop/hadoop-env.sh
,增加:
export YARN_RESOURCEMANAGER_USER=rootexport 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/hadoopsbin/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