乐趣区

关于hadoop:Hadoop完整搭建过程四完全分布模式服务器

1 概述

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

2 约定

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

# 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
退出移动版