关于hadoop:Hadoop完整搭建过程三完全分布模式虚拟机

44次阅读

共计 6004 个字符,预计需要花费 16 分钟才能阅读完成。

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地址能够参考本机,比方笔者的机器本地 ip192.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 100
ssh-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.gz
sudo 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 节点的 ip192.168.1.8,因而这里批改两个 Worker 的节点别离为:

  • 192.168.1.9
  • 192.168.1.10
sudo vim /etc/sysconfig/network-scripts/ifcfg-xxxx # 该文件因人而异
# 批改 IPADDR
IPADDR=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 master
192.168.1.10 worker2

7.3 Worker2节点

sudo vim /etc/hosts
# 增加
192.168.1.8 master
192.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 100
ssh-copy-id master
ssh-copy-id worker1
ssh-copy-id worker2

8.3 测试

在其中一个节点中间接 ssh 连贯其余节点,无需明码即可登录,比方在 Master 节点中:

ssh master # 都是 hadoopuser 用户,所以省略了用户
ssh worker1
ssh 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.defaultFSNameNode地址
  • hadoop.tmp.dirHadoop长期目录

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 的目录,寄存 NameNodemetadata
  • dfs.datanode.data.dir:保留 HDFS 数据的目录,寄存 DataNode 的多个数据块
  • dfs.replicationHDFS存储的长期备份数量,有两个 Worker 节点,因而数值为2

9.3 workers

最初批改workers,输出(与下面设置的主机名统一):

worker1
worker2

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/hadoop
bin/hdfs namenode -format
sbin/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 --permanent
sudo 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.sh
sudo firewall-cmd --add-port=9000/tcp --permanent
sudo 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/hadoop
sbin/start-yarn.sh

同时凋谢 8088 端口为上面的测试做筹备:

sudo firewall-cmd --add-port=8088/tcp --permanent
sudo firewall-cmd --reload

11.3 测试

浏览器输出:

master:8088
# 或
# 192.168.1.8:8088

应该就能够拜访如下页面了:

同样情理没有看到 Worker 节点,查看 Worker 节点的日志,发现也是端口的问题:

Master节点先敞开 YARN,凋谢8031 端口,并重启YARN

/usr/local/hadoop/sbin/stop-yarn.sh
sudo firewall-cmd --add-port=8031/tcp --permanent
sudo 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 地址

正文完
 0