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 参考

Hadoop完整搭建过程(四):完全分布模式(服务器)的更多相关文章

  1. 本地+分布式Hadoop完整搭建过程

    1 概述 Hadoop在大数据技术体系中极为重要,被誉为是改变世界的7个Java项目之一(剩下6个是Junit.Eclipse.Spring.Solr.HudsonAndJenkins.Android ...

  2. Hadoop完整搭建过程(三):完全分布模式(虚拟机)

    1 完全分布模式 完全分布模式是比本地模式与伪分布模式更加复杂的模式,真正利用多台Linux主机来进行部署Hadoop,对集群进行规划,使得Hadoop各个模块分别部署在不同的多台机器上,这篇文章介绍 ...

  3. Hadoop完整搭建过程(二):伪分布模式

    1 伪分布模式 伪分布模式是运行在单个节点以及多个Java进程上的模式.相比起本地模式,需要进行更多配置文件的设置以及ssh.YARN相关设置. 2 Hadoop配置文件 修改Hadoop安装目录下的 ...

  4. Hadoop完整搭建过程(一):本地模式

    1 本地模式 本地模式是最简单的模式,所有模块都运行在一个JVM进程中,使用本地文件系统而不是HDFS. 本地模式主要是用于本地开发过程中的运行调试用,下载后的Hadoop不需要设置默认就是本地模式. ...

  5. 转载——Asp.Net MVC+EF+三层架构的完整搭建过程

    转载http://www.cnblogs.com/zzqvq/p/5816091.html Asp.Net MVC+EF+三层架构的完整搭建过程 架构图: 使用的数据库: 一张公司的员工信息表,测试数 ...

  6. Hadoop环境搭建过程中遇到的问题以及解决方法

    1.启动hadoop之前,ssh免密登录slave主机正常,使用命令start-all.sh启动hadoop时,需要输入slave主机的密码,说明ssh文件权限有问题,需要执行以下操作: 1)进入.s ...

  7. Asp.Net MVC+EF+三层架构的完整搭建过程

    架构图: 使用的数据库: 一张公司的员工信息表,测试数据 解决方案项目设计: 1.新建一个空白解决方案名称为Company 2.在该解决方案下,新建解决方案文件夹(UI,BLL,DAL,Model) ...

  8. Hadoop环境搭建|第四篇:hive环境搭建

    一.环境搭建 注意:hive版本不能太高,否则会出现兼容性问题 1.1.上传hive安装包 创建文件夹用于存放hive文件命令:mkdir hive 1.2.解压hive安装包 命令:tar -zxv ...

  9. Hadoop完全分布式搭建过程中遇到的问题小结

    前一段时间,终于抽出了点时间,在自己本地机器上尝试搭建完全分布式Hadoop集群环境,也是借助网络上虾皮的Hadoop开发指南系列书籍一步步搭建起来的,在这里仅代表hadoop初学者向虾皮表示衷心的感 ...

随机推荐

  1. Hadoop生态常用数据模型

    Hadoop生态常用数据模型 一.TextFile 二.SequenceFile 1.特性 2.存储结构 3.压缩结构与读取过程 4.读写操作 三.Avro 1.特性 2.数据类型 3.avro-to ...

  2. Oracle VM VirtualBox安装CentOS7

    安装VirtualBox6.0 下载地址:https://www.virtualbox.org/ 新建虚拟机 类型:Linux 版本:Other Linux(64-bit)----如果没有出现64-b ...

  3. 为什么数据库能查出两条id相同的数据

    sql如下: SELECT t.*,d.name as "workName" FROM t_traceability_slice t LEFT JOIN sys_departmen ...

  4. 如何使用 Navicat Premium 的新“自动运行”工具自动运行行数据库复制。

    数据库复制有至少三种不同的方式: 快照复制:一台服务器上的数据复制到同一台或不同服务器上的另一个数据库. 合并复制:来自两个或多个数据库的数据被合并到一个数据库中. 事务复制:用户收到数据库的完整初始 ...

  5. Linux 安装python 模块及库

    转载于https://blog.csdn.net/csdn_am/article/details/79924744 有时我们使用下载python 自带的pip 安装一些工具包时,会报如下错误 找不到满 ...

  6. ISC BIND9 - 最详细、最认真的从零开始的BIND 9 服务讲解

    DNS and BIND 服务的搭建说明 目录 目录 DNS and BIND 服务的搭建说明 1. 背景 1.1 DNS 1.2 FQDN 1.3 BIND 1.4 本文中搭建模拟DNS服务网络虚拟 ...

  7. 如何使用 Github Actions 自动抓取每日必应壁纸?

    如何白嫖 Github 服务器自动抓取必应搜索的每日壁纸呢? 如果你访问过必应搜索网站,那么你一定会被搜索页面的壁纸吸引,必应搜索的壁纸每日不同,自动更换,十分精美.这篇文章会介绍如何一步步分析出必应 ...

  8. 剑指 Offer 58 - II. 左旋转字符串 + 简单题

    剑指 Offer 58 - II. 左旋转字符串 Offer_58_2 题目描述 java代码 package com.walegarrett.offer; /** * @Author WaleGar ...

  9. 我的2019年总结和一些2020年的flag

    我的2019年总结和一些2020年的flag 前言 2019年在我的人生中注定是里程碑的一年,主要是我毕业了.本篇总结主要聊一些2019年经历的事以及对于自己2020年的期待 1. 再见2019 1. ...

  10. [源码分析] 消息队列 Kombu 之 Consumer

    [源码分析] 消息队列 Kombu 之 Consumer 目录 [源码分析] 消息队列 Kombu 之 Consumer 0x00 摘要 0x01 综述功能 0x02 示例代码 0x03 定义 3.1 ...