Hadoop 分布式集群搭建

HDFS分布式集群搭建

  • 一、部署规划
    • 1.1 进程规划
    • 1.2 软件规划
    • 1.3 用户规划
    • 1.4 目录规划
  • 二、 搭建HDFS 分布式集群
    • 2.1 HDFS 集群配置
      • 2.1.1 下载安装 Hadoop
      • 2.1.2 修改 hadoop-env.sh 配置文件
      • 2.1.3 修改 core-site.xml 配置文件
      • 2.1.4 修改 hdfs-site.xml 配置文件
      • 2.1.5 修改 slaves 配置文件
      • 2.1.6 配置文件同步集群其他节点
    • 2.2 启动 zookeeper 集群
    • 2.3 启动 Journalnode 集群
    • 2.4 格式化主节点 NameNode
    • 2.5 备用 NameNode 同步主节点元数据
    • 2.6 关闭 Journalnode 集群
    • 2.7 一键启动 HDFS 集群
    • 2.8 HDFS 集群测试
  • 三、部署 YARN 集群搭建
    • 3.1 修改 mapred-site.xml 配置
    • 3.2 修改 yarn-site.xml 配置
    • 3.3 向所有节点同步 YARN 配置文件
    • 3.4 启动 YARN 集群
      • 3.4.1 启动 YARN 集群
      • 3.4.2 启动备用 ResourceManager
    • 3.5 YARN 集群测试
      • 3.5.1 shell 命令查看RM状态
      • 3.5.2 Web 界面查看 YARN 集群
      • 3.5.3 测试 YARN 集群是否可以正常运行 MapReduce程序

在此之前已经搭建 ZooKeeper 集群,可以参考《部署伪分布式 Hadoop集群》

一、部署规划

1.1 进程规划

守护进程hadoop1/192.168.220.151hadoop2/192.168.220.152hadoop3/192.168.220.153
NameNode
DataNode
ResourceManager
NodeManager
Journalnode
Zookeeper

1.2 软件规划

软件版本
JDKJDK 1.8
CentOSCentOS 7
ZookeeperApache Zookeeper 3.8.4
HadoopApache Hadoop 2.10.2

1.3 用户规划

节点名称用户组用户
hadoop1rootroot
hadoop1rootroot
hadoop1rootroot

备注 此处的用户组和用户 也最好自己创建用户,如 hadoop

1.4 目录规划

名称路径
所有软件目录/usr/local/
所有软件目录/usr/local/data

二、 搭建HDFS 分布式集群

2.1 HDFS 集群配置

2.1.1 下载安装 Hadoop

可以参考文章《部署伪分布式 Hadoop集群》:2.2 章节部分

2.1.2 修改 hadoop-env.sh 配置文件

hadoop-env.sh 文件主要配置跟 hadoop 环境相关的变量,这里主要修改 JAVA_HOME的安装目录,具体操作如下所示。

[root@hadoop1 hadoop]# vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh 
# 修改jdk 的安装目录
export JAVA_HOME=/usr/local/jdk

在这里插入图片描述

2.1.3 修改 core-site.xml 配置文件

core-site.xml文件主要配置 Hadoop 的公有属性,具体需要配置的每个属性如下所示。

[root@hadoop1 hadoop]# vim /usr/local/hadoop/etc/hadoop/core-site.xml 

修改内容如下:

<configuration>
<!--这里的值指的是默认的 HDFS 路径,取名为 mycluster-->
<property><name>fs.defaultFS</name><value>hdfs:mycluster</value>
</property>
<!--hadoop 的临时目录,目录需要我们自己创建-->
<property><name>hadoop.tmp.dir</name><value>/usr/local/data/tmp</value>
</property>
<!--配置 Zookeeper 管理 HDFS-->
<property><name>ha.zookeeper.quorum</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
</configuration>

2.1.4 修改 hdfs-site.xml 配置文件

hdfs-site.xml 文件主要配置跟 HDFS 相关的属性,具体需要配置的每个属性如下所示。

[root@hadoop1 local]# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml 

修改内容如下:

<configuration><property><name>dfs.replication</name><value>3</value></property><!--数据块副本数为3--><property><name>dfs.permissions</name><value>false</value></property><property><name>dfs.permissions.enabled</name><value>false</value></property><!--权限默认配置为false--><property><name>dfs.nameservices</name><value>mycluster</value></property><!--命名空间,它的值与fs.defaultFS的值要对应,namenode高可用之后有两个namenode,mycluster是对外提供的统一入口--><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><!-- 指定 nameService 是 mycluster时的nameNode有哪些,这里的值也是逻辑名称,名字随便起,相互不重复即可--><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>hadoop1:9000</value></property><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>hadoop1:50070</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>hadoop2:9000</value></property><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>hadoop2:50070</value></property><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!--启动故障自动恢复--><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster</value></property><!--指定NameNode的元数据在JournalNode上的存放位置--><property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!--指定 mycluster 出故障时,哪个实现类负责执行故障切换--><property><name>dfs.journalnode.edits.dir</name><value>/usr/local/data/journaldata/jn</value></property><!-- 指定JournalNode在本地磁盘存放数据的位置 --><property><name>dfs.ha.fencing.methods</name><value>shell(/bin/true)</value></property><!-- 配置隔离机制,shell通过ssh连接active namenode节点,杀掉进程--><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property><!-- 为了实现SSH登录杀掉进程,还需要配置免密码登录的SSH密匙信息 --><property><name>dfs.ha.fencing.ssh.connect-timeout</name><value>10000</value></property><property><name>dfs.namenode.handler.count</name><value>100</value></property>
</configuration>

2.1.5 修改 slaves 配置文件

[root@hadoop1 local]# vim /usr/local/hadoop/etc/hadoop/slaves 

修改如下内容:

hadoop1
hadoop2
hadoop3

在这里插入图片描述

2.1.6 配置文件同步集群其他节点

[root@hadoop1 local]# deploy.sh usr/local/hadoop-2.10.2 /usr/local/ slave

备注:deploy.sh 是工具脚本,支持将 usr/local/hadoop-2.10.2 文件推送到 slave组当中的 /usr/local 目录下

2.2 启动 zookeeper 集群

[root@hadoop1 local]# runRemoteCmd.sh "/usr/local/zookeeper/bin/zkServer.sh start" all
[root@hadoop1 local]# runRemoteCmd.sh "/usr/local/zookeeper/bin/zkServer.sh status" all

备注:runRemoteCmd.sh 是工具脚本,支持按照分组执行脚本,上面脚本表示在所有服务器执行脚本:/usr/local/zookeeper/bin/zkServer.sh start

在这里插入图片描述

2.3 启动 Journalnode 集群

在集群所有节点分布启动 Journalnode 服务,具体操作如下所示。

[root@hadoop1 local]# runRemoteCmd.sh "/usr/local/hadoop/sbin/hadoop-daemon.sh start journalnode" all
[root@hadoop1 local]# jps

在这里插入图片描述

2.4 格式化主节点 NameNode

在 hadoop1 节点(NameNode 主节点)上,使用如下命令对 NameNode 进行格式化。

[root@hadoop1 hadoop]# /usr/local/hadoop/bin/hdfs namenode -format  // NameNode 格式化
[root@hadoop1 hadoop]# /usr/local/hadoop/bin/hdfs zkfc -formatZK  // 格式化高可用
[root@hadoop1 hadoop]# /usr/local/hadoop/bin/hdfs namenode  // 启动 namenode 节点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5 备用 NameNode 同步主节点元数据

在 hadoop1 节点启动 NameNode 服务的同时,需要在 hadoop2 节点(NameNode 备用节点)上执行如下命令同步主节点的元数据

[root@hadoop2 local]# /usr/local/hadoop/bin/hdfs namenode -bootstrapStandby

在这里插入图片描述

2.6 关闭 Journalnode 集群

hadoop2节点同步完主节点元数据之后,紧接着在hadoop1节点上,按下(Ctrl+C)组合键来结束 NameNode 进程,然后关闭所有节点上面的Jounalnode,进程,具体操作如下所示。

[root@hadoop1 local]# runRemoteCmd.sh "/usr/local/hadoop/sbin/hadoop-daemon.sh stop journalnode" all

在这里插入图片描述

2.7 一键启动 HDFS 集群

如果上面操作没有问题,在 hadoop1 节点上,可以使用脚本一键启动 HDFS 集群所有相关进程

[root@hadoop1 local]# /usr/local/hadoop/sbin/start-dfs.sh 

在这里插入图片描述

2.8 HDFS 集群测试

在浏览器中输入网址 http://hadoop1:50070,通过 Web 界面査看 hadoop1 节点的NameNode 的状态,结果如图 6-2所示。该节点的状态为 active,表示 HDFS 可以通过 hadoop1节点的 NameNode 对外提供服务。

在这里插入图片描述

三、部署 YARN 集群搭建

3.1 修改 mapred-site.xml 配置

mapred-site.xml 文件主要配置跟 MapReduce 相关的属性,这里主要将 MapReduce 的运行环境指定为 YARN ,核心配置如下所示

[root@hadoop1 hadoop]# vim /usr/local/hadoop/etc/hadoop/mapred-site.xml

添加如下内容:

<!--MapReduce以yarn模式运行-->
<configuration>
<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>
</configuration>

在这里插入图片描述

3.2 修改 yarn-site.xml 配置

yarn-site.xml 文件主要配置跟 YARN 相关的属性,核心配置如下所示。

[root@hadoop1 hadoop]# vim /usr/local/hadoop/etc/hadoop/mapred-site.xml

添加如下内容:

<configuration>
<property><name>yarn.resourcemanager.connect.retry-interval.ms</name><value>2000</value>
</property>
<property><name>yarn.resourcemanager.ha.enabled</name><value>true</value>
</property>
<!--打开高可用-->
<property><name>yarn.resourcemanager.ha.automatic-failover.enabled</name><value>true</value>
</property>
<!--启动故障自动恢复-->
<property><name>yarn.resourcemanager.ha.automatic-failover.embedded</name><value>true</value>
</property>
<!--rm启动内置选举active-->
<property><name>yarn.resourcemanager.cluster-id</name><value>yarn-rm-cluster</value>
</property>
<!--给yarn cluster 取个名字yarn-rm-cluster-->
<property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value>
</property>
<!--ResourceManager高可用 rm1,rm2-->
<property><name>yarn.resourcemanager.hostname.rm1</name><value>hadoop1</value>
</property>
<property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop2</value>
</property>
<property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value>
</property>
<!--启用resourcemanager 自动恢复-->
<property><name>hadoop.zk.address</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
<!--配置Zookeeper地址作为状态存储和leader选举-->
<property><name>yarn.resourcemanager.address.rm1</name><value>hadoop1:8032</value>
</property>
<!--rm1端口号-->
<property><name>yarn.resourcemanager.scheduler.address.rm1</name><value>hadoop1:8034</value>
</property>
<!-- rm1调度器的端口号-->
<property><name>yarn.resourcemanager.webapp.address.rm1</name><value>hadoop1:8088</value>
</property>
<!-- rm1 webapp端口号-->
<property><name>yarn.resourcemanager.address.rm2</name><value>hadoop2:8032</value>
</property>
<property><name>yarn.resourcemanager.scheduler.address.rm2</name><value>hadoop2:8034</value>
</property>
<property><name>yarn.resourcemanager.webapp.address.rm2</name><value>hadoop2:8088</value>
</property>
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property>
<property><name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!--执行MapReduce需要配置的shuffle过程-->
<property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value>
</property>
<property><name>yarn.nodemanager.vmem-pmem-ratio</name><value>4</value>
</property>
</configuration>

3.3 向所有节点同步 YARN 配置文件

在 hadoop1 节点上修改完 YARN 相关配置之后,将修改的配置文件远程复制到 hadoop2节点和 hadoop3 节点,具体操作如下所示。

[root@hadoop1 hadoop]# deploy.sh /usr/local/hadoop/etc/hadoop/mapred-site.xml /usr/local/hadoop/etc/hadoop/ slave
[root@hadoop1 hadoop]# deploy.sh /usr/local/hadoop/etc/hadoop/yarn-site.xml /usr/local/hadoop/etc/hadoop/ slave

在这里插入图片描述

3.4 启动 YARN 集群

YARN HA 的实现依赖于 Zookeeper,所以需要优先启动 Zookeeper 集群。因为前面操作已经启动 Zookeeper 集群,所以该步骤可以跳过。

3.4.1 启动 YARN 集群

在 hadoop1 节点上,使用脚本一键启动 YARN 集群,具体操作如下所示:

[root@hadoop1 hadoop]# /usr/local/hadoop/sbin/start-yarn.sh 

在这里插入图片描述

3.4.2 启动备用 ResourceManager

因为 start-yarn.sh 脚本不包含启动备用 ResourceManager 进程的命令,所以需要在hadoop2 节点上单独启动 ResourceManaggr,具体操作如下所示。

[root@hadoop2 hadoop]# /usr/local/hadoop/sbin/yarn-daemon.sh start resourcemanager

在这里插入图片描述

3.5 YARN 集群测试

3.5.1 shell 命令查看RM状态

如果一个 ResourceManagsr 为 active 状态,另外一个说明 YARN 集群构建成功。
ResourceManager为standby 状态,

[root@hadoop2 hadoop]# /usr/local/hadoop/bin/yarn rmadmin -getServiceState rm1
active
[root@hadoop2 hadoop]# /usr/local/hadoop/bin/yarn rmadmin -getServiceState rm2
standby

在这里插入图片描述

3.5.2 Web 界面查看 YARN 集群

在浏览器中输入网址 http://hadoop1:8088(或者 http://hadoop2:8088),通过web 界面查看 YARN 集群消息,结果如果所示:
在这里插入图片描述

3.5.3 测试 YARN 集群是否可以正常运行 MapReduce程序

为了测试 YARN 集群是否可以正常运行 MapReduce程序,我们以 Hadoop 自带的wordcount示例来进行演示,具体操作如图 6-8所示。

[root@hadoop1 hadoop]# /usr/local/hadoop/bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.2.jar wordcount /test/words.log /test/out

在这里插入图片描述
在这里插入图片描述
至此 HADOOP的搭建基本完成,后续介绍 HADOOP 集群的运维管理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/52441.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员:全栈的痛你不知道

上周一个同事直接对我开喷&#xff0c;骂我无能&#xff0c;说&#xff1a;“你怎么一个人就搞不定所有系统呢&#xff1f;”&#xff0c;我半支烟纵横IT江湖14余年&#xff0c;还是第一次被人这么嫌弃。 事情缘由 某公司的业务线特别多&#xff0c;有个业务线前后端项目共计…

ComfyUI IPAdapter plus的模型应该怎么装-免费版-2024.8.25

&#x1f386;背景 ipadapter相关的节点大家应该都不陌生&#xff0c;具体是做什么的就不详细介绍了&#xff0c;但是还是有很多新入门的朋友不太了解这个节点相关的这一堆模型到底应该怎么安装。这里就借着官方节点的介绍来大概讲下这个话题。 涉及到的节点源地址&#xff1…

【Qt】Qt系统 | Qt事件| 鼠标事件

文章目录 鼠标事件鼠标点击事件鼠标释放事件鼠标双击事件鼠标移动事件 滚轮事件 在 Qt 中&#xff0c;鼠标事件是用 QMouseEvent 实现的。当在窗口中按下鼠标或者移动鼠标时&#xff0c;都会产生鼠标事件 鼠标事件 鼠标点击事件 鼠标按下时通过 虚函数 mousePressEvent() 来…

线程安全是什么问题?如何引起?死锁是啥?如何解决?

目录 一、什么是线程不安全&#xff1f; 二、如何引起的线程安全&#xff1f;怎么解决&#xff1f; 1&#xff09;CPU调度执行是随机的&#xff0c;抢占式执行&#xff08;根本原因&#xff0c;硬件层面咱们无法干预&#xff09; 2&#xff09;多个线程&#xff0c;对同一变…

【Hot100】LeetCode—105. 从前序与中序遍历序列构造二叉树

目录 1- 思路递归 2- 实现⭐105. 从前序与中序遍历序列构造二叉树——题解思路 3- ACM 实现 原题连接&#xff1a;105. 从前序与中序遍历序列构造二叉树 1- 思路 递归 前序&#xff1a;中左右中序&#xff1a;左中右 让前序的第一个元素作为中序的分割点 分割思路 1- 递归…

做个实验

做个实验 #include <bits/stdc.h> using namespace std; #define int long long #define ll __int128_t #define ar array<int, 2> #define arr array<int, 3> int n, m, k, inf 1LL << 61, mod 998244353;// 1e97; const int N 5e5 50;void sol…

使用gitee存储项目

gitee地址&#xff1a;Gitee - 基于 Git 的代码托管和研发协作平台 创建gitee远程仓库 将远程仓库内容拉取到本地仓库 复制下面这个地址 通过小乌龟便捷推送拉取代码&#xff1a;https://blog.csdn.net/m0_65520060/article/details/140091437

基于51单片机的百叶窗proteus仿真

地址&#xff1a;https://pan.baidu.com/s/19M6jeTIHJcyDBGNx4H9nTA 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectron…

RabbitMQ的核心概念

RabbitMQ是一个消息中间件&#xff0c;也是一个生产者消费者模型&#xff0c;负责接收&#xff0c;存储和转发消息。 核心概念 Producer 生产者&#xff0c;是RabbitMQ Server的客户端&#xff0c;向RabbitMQ发送消息。 Consumer 消费者&#xff0c;是RabbitMQ Server的客…

快手怎么免费的去掉视频水印?分享这三个工具给你

​ 我们经常会遇到想要保存的视频带有水印&#xff0c;这不仅影响美观&#xff0c;也不利于分享。为了解决这个问题&#xff0c;我将分享三个免费去除视频水印的工具&#xff0c;帮助你轻松去除水印&#xff0c;享受无干扰的视频体验。 工具一&#xff1a;奈斯水印助手(小程序…

数码管进阶设计验证

前言 随着数字电路和嵌入式系统的广泛应用&#xff0c;数码管作为一种常见的显示设备&#xff0c;在各种电子产品中扮演着重要角色。数码管以其结构简单、显示清晰和成本低廉的特点&#xff0c;广泛应用于计数器、时钟、测量仪器等领域。然而&#xff0c;传统的数码管设计通常仅…

DBeaver安装使用

文章目录 简介支持的数据库支持的系统 下载安装DBeaver使用修改Maven下载jar地址窗口->首选项连接->驱动->Maven配置仓库地址 选择需要连接的数据库进行连接 简介 DBeaver 是一个通用的数据库管理工具和 SQL 客户端&#xff0c;支持 MySQL, PostgreSQL, Oracle, DB2,…

运维学习————nginx2-配置详解及负载均衡

目录 一、配置文件详解 1.1、结构 1.2、重要配置解释 1.3、详细配置 全局配置 Events HTTP 服务器配置 server虚拟主机配置 location URL匹配配置 1.4、完整配置 二、负载均衡 2.1、概念 2.2、集群规划及实现 2.3、具体实现 2.3.1、克隆 2.3.2、修改tomcat1配…

Python | Leetcode Python题解之第372题超级次方

题目&#xff1a; 题解&#xff1a; class Solution:def superPow(self, a: int, b: List[int]) -> int:MOD 1337ans 1for e in b:ans pow(ans, 10, MOD) * pow(a, e, MOD) % MODreturn ans

go+gin+vue入门

后端框架 1、安装go、goland 2、创建空项目 3、下载要用的包&#xff1a;命令行输入go get -u github.com/xxxx 4、安装mysql数据库&#xff0c;使用navicat创建数据库。 5、按照项目框架搭建目录、文件、代码&#xff1a;如router、model… 6、运行测试&#xff0c;go run ma…

云原生之全链路分布式跟踪系统 Zipkin和SkyWalking

贪多嚼不烂 Pinpoint 就不对比了 参考 APM系统简单对比(zipkin,pinpoint和skywalking) springcloud 看云 Zipkin和SkyWalking都是流行的分布式跟踪系统&#xff0c;但它们的设计和实现有明显的不同。 以下是它们之间的一些对比&#xff1a; 数据存储&#xff1a; Zipk…

OpenCV(开源计算机视觉库)

OpenCV&#xff08;开源计算机视觉库&#xff09;是一个专注于实时计算机视觉的全面库&#xff0c;包含了丰富的工具和功能。以下是 OpenCV 中一些关键知识点的详细列表&#xff1a; 核心功能 基本结构&#xff1a;Mat、Scalar、Point、Size、Rect 等。 图像 I/O&#xff1a;读…

# 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群

利刃出鞘_Tomcat 核心原理解析&#xff08;八&#xff09;-- Tomcat 集群 一、Tomcat专题 - Tomcat集群 - 介绍及准备工作 1、Tomcat集群 简介 由于单台Tomcat的承载能力是有限的&#xff0c;当我们的业务系统用户量比较大&#xff0c;请求压力比较大时&#xff0c;单台Tomc…

macOS安装搭建python环境

安装Homebrew apt-get是一个常见于Debian和Ubuntu等基于Linux的操作系统中的包管理工具&#xff0c;用于安装、更新和移除软件包。然而&#xff0c;macOS使用的是Homebrew或者MacPorts等其他的包管理工具&#xff0c;并不使用apt-get。 如果你想在macOS上使用类似apt-get的功…

Python版《超级玛丽+源码》-Python制作超级玛丽游戏

小时候最喜欢玩的小游戏就是超级玛丽了&#xff0c;有刺激有又技巧&#xff0c;通关真的很难&#xff0c;救下小公主还被抓走了&#xff0c;唉&#xff0c;心累&#xff0c;最后还是硬着头皮继续闯&#xff0c;终于要通关了&#xff0c;之后再玩还是没有那么容易&#xff0c;哈…