Hadoop完整搭建过程(四):完全分布模式(服务器)
1 概述
上一篇文章介绍了如何使用虚拟机搭建集群,到了这篇文章就是实战了,使用真实的三台不同服务器进行Hadoop集群的搭建。具体步骤其实与虚拟机的差不多,但是由于安全组以及端口等等一些列的问题,会与虚拟机有所不同,废话不多说,下面正式开始。
2 约定
Master节点的ip用MasterIP表示,主机名用master表示- 两个
Worker节点的ip用Worker1IP/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节点的主机名为worker1、worker2:
# 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.shetc/hadoop/core-site.xmletc/hadoop/hdfs-site.xmletc/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
Hadoop完整搭建过程(四):完全分布模式(服务器)的更多相关文章
- 本地+分布式Hadoop完整搭建过程
1 概述 Hadoop在大数据技术体系中极为重要,被誉为是改变世界的7个Java项目之一(剩下6个是Junit.Eclipse.Spring.Solr.HudsonAndJenkins.Android ...
- Hadoop完整搭建过程(三):完全分布模式(虚拟机)
1 完全分布模式 完全分布模式是比本地模式与伪分布模式更加复杂的模式,真正利用多台Linux主机来进行部署Hadoop,对集群进行规划,使得Hadoop各个模块分别部署在不同的多台机器上,这篇文章介绍 ...
- Hadoop完整搭建过程(二):伪分布模式
1 伪分布模式 伪分布模式是运行在单个节点以及多个Java进程上的模式.相比起本地模式,需要进行更多配置文件的设置以及ssh.YARN相关设置. 2 Hadoop配置文件 修改Hadoop安装目录下的 ...
- Hadoop完整搭建过程(一):本地模式
1 本地模式 本地模式是最简单的模式,所有模块都运行在一个JVM进程中,使用本地文件系统而不是HDFS. 本地模式主要是用于本地开发过程中的运行调试用,下载后的Hadoop不需要设置默认就是本地模式. ...
- 转载——Asp.Net MVC+EF+三层架构的完整搭建过程
转载http://www.cnblogs.com/zzqvq/p/5816091.html Asp.Net MVC+EF+三层架构的完整搭建过程 架构图: 使用的数据库: 一张公司的员工信息表,测试数 ...
- Hadoop环境搭建过程中遇到的问题以及解决方法
1.启动hadoop之前,ssh免密登录slave主机正常,使用命令start-all.sh启动hadoop时,需要输入slave主机的密码,说明ssh文件权限有问题,需要执行以下操作: 1)进入.s ...
- Asp.Net MVC+EF+三层架构的完整搭建过程
架构图: 使用的数据库: 一张公司的员工信息表,测试数据 解决方案项目设计: 1.新建一个空白解决方案名称为Company 2.在该解决方案下,新建解决方案文件夹(UI,BLL,DAL,Model) ...
- Hadoop环境搭建|第四篇:hive环境搭建
一.环境搭建 注意:hive版本不能太高,否则会出现兼容性问题 1.1.上传hive安装包 创建文件夹用于存放hive文件命令:mkdir hive 1.2.解压hive安装包 命令:tar -zxv ...
- Hadoop完全分布式搭建过程中遇到的问题小结
前一段时间,终于抽出了点时间,在自己本地机器上尝试搭建完全分布式Hadoop集群环境,也是借助网络上虾皮的Hadoop开发指南系列书籍一步步搭建起来的,在这里仅代表hadoop初学者向虾皮表示衷心的感 ...
随机推荐
- 利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解
本文转载自利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解 导语 由于最近工作需要利用 Jenkins 远程 API 操作 Jenkins 来完成一些列操作,就抽空研究 ...
- 正则表达式匹配${key}并在Java中使用
1.正则表达式匹配${key} \$\{([a-z]+)\} 能够匹配字符串中以${key}形式的文本(其中key为小写应为字母) .*\$\{([a-z]+)\}.* 可以用来检测文本中是否有${k ...
- CentOS 7.7上配置mysql
转载:https://www.cnblogs.com/VinsonYang/p/12333570.html 首先登陆到阿里云,进行远程连接,在这里我使用的是Xshell 6进行连接的. 参照https ...
- 基于CefSharp开发浏览器(八)浏览器收藏夹栏
一.前言 上一篇文章 基于CefSharp开发(七)浏览器收藏夹菜单 简单实现了部分收藏夹功能 如(添加文件夹.添加收藏.删除.右键菜单部分功能) 后续代码中对MTreeViewItem进行了扩展,增 ...
- Nginx常见的错误配置
Blog:博客园 个人 翻译自Common Nginx misconfigurations that leave your web server open to attack Nginx是当前主流的W ...
- docker apollo配置中心分布式部署
Apollo 简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服 ...
- C#类中的字段、属性和方法
C#类中的字段.属性和方法 刚开始学C#,对于类中的字段.属性和方法很难分清,写下这份笔记,帮助理解 字段:与类相关的变量 声明方法与声明变量类似,可在前面添加访问修饰符.static关键字等: 属性 ...
- 面试被吊打系列 - Redis原理
小张兴冲冲去面试,结果被面试官吊打! 小张: 面试官,你好.我是来参加面试的. 面试官: 你好,小张.我看了你的简历,熟练掌握Redis,那么我就随便问你几个Redis相关的问题吧.首先我的问题是,R ...
- shell脚本,mysql数据库的备份,并压缩
db_user="root"db_passwd="xxx"db_host="localhost" databases="xxx-p ...
- 【知识点】 C++寄存器优化
作者:李春港 出处:https://www.cnblogs.com/lcgbk/p/14502076.html 目录 一.前言 二.代码实例 三.volatile作用 一.前言 在c++中什么情况下, ...