1 概述

上一篇文章介绍了如何应用虚拟机搭建集群,到了这篇文章就是实战了,应用实在的三台不同服务器进行Hadoop集群的搭建。具体步骤其实与虚拟机的差不多,然而因为平安组以及端口等等一些列的问题,会与虚拟机有所不同,废话不多说,上面正式开始。

2 约定

  • Master节点的ipMasterIP示意,主机名用master示意
  • 两个Worker节点的ipWorker1IP/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节点的主机名为worker1worker2

# 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