HDFS 高可用集群的搭建

HDFS 高可用集群的搭建

由于条件限制,电脑只够我开3台虚拟机,所以我们就用这3台虚拟机搭建一个HDFS的高可用。

在搭建之前我们先来理清一下3台虚拟机master,node1,node2分别会有哪些进程

在高可用集群中会有2个NameNode,一个是活跃的(ANN),一个是备用的(SNN),每一个NAmeNode节点上都应该有一个故障转移控制器(ZKFC)去管理各自的NameNode,除了NameNode,每个节点上都应该有JN处理日志,ZooKeeper负责进行选举,node1,node2上还应该有DataNode负责存储数据。

master : ANamenode、ZKFC 、JN、ZooKeeper

node1 : SNameNode、DataNode、ZKFC、JN、ZooKeeper

node2 :DataNode、JN、ZooKeeper

在工作中高可用集群一般是有5台节点,其进程分布为:

master1:ANamenode、ZKFC

master2:SNameNode、ZKFC

node1:DataNode、JN、ZooKeeper

node2:DataNode、JN、ZooKeeper

node3:DataNode、JN、ZooKeeper

开始搭建

1、关闭防火墙

service firewalld stop

2、时间同步

yum install ntp
ntpdate -u s2c.time.edu.cn

3、免密钥 (远程执行命令)

#在两个主节点生成密钥文件ssh-keygen -t rsassh-copy-id ipmaster-->master,node1,node2node1-->master,node1,node2

4、修改hadoop配置文件

core-site.xml

<configuration><property><name>fs.defaultFS</name><value>hdfs://cluster</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/soft/hadoop-3.1.2/tmp</value></property><property><name>fs.trash.interval</name><value>1440</value></property><property><name>ha.zookeeper.quorum</name><value>master:2181,node1:2181,node2:2181</value></property>
</configuration>

2181是端口号,如果其他地方没有改那就保持默认不要改

image-20241104200303187

hdfs-site.xml

<configuration>
<!-- 指定hdfs元数据存储的路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/soft/hadoop-3.1.2/data/namenode</value>
</property><!-- 指定hdfs数据存储的路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/soft/hadoop-3.1.2/data/datanode</value>
</property><!-- 数据备份的个数 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property><!-- 关闭权限验证 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property><!-- 开启WebHDFS功能(基于REST的接口服务) -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property><!-- //////////////以下为HDFS HA的配置////////////// -->
<!-- 指定hdfs的nameservices名称为mycluster -->
<property>
<name>dfs.nameservices</name>
<value>cluster</value>
</property><!-- 指定cluster的两个namenode的名称分别为nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.cluster</name>
<value>nn1,nn2</value>
</property><!-- 配置nn1,nn2的rpc通信端口 -->
<property>
<name>dfs.namenode.rpc-address.cluster.nn1</name>
<value>master:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.cluster.nn2</name>
<value>node1:8020</value>
</property><!-- 配置nn1,nn2的http通信端口 -->
<property>
<name>dfs.namenode.http-address.cluster.nn1</name>
<value>master:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.cluster.nn2</name>
<value>node1:9870</value>
</property><!-- 指定namenode元数据存储在journalnode中的路径 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;node1:8485;node2:8485/cluster</value>
</property><!-- 指定journalnode日志文件存储的路径 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/soft/hadoop-3.1.2/data/journal</value>
</property><!-- 指定HDFS客户端连接active namenode的java类 -->
<property>
<name>dfs.client.failover.proxy.provider.cluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property><!-- 配置隔离机制为ssh -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property><!-- 指定秘钥的位置 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property><!-- 开启自动故障转移 -->
<property>  
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>

image-20241104200411811

5、同步到其它节点

cd /usr/local/soft/hadoop-3.1.2/etc/hadoopscp ./* node1:`pwd`scp ./* node2:`pwd`

6、删除hadoop数据存储目录下的文件 每个节点都需要删除

 rm -rf /usr/local/soft/hadoop-3.1.2/tmp

7、启动zookeeper 三台都需要启动

#启动
zkServer.sh start
#查看状态
zkServer.sh status
#当3个节点中有一个leader  2个follower时代表zookeeper启动成功

master

image-20241104200643256

node1

image-20241104200751757

node2

image-20241104200831578

8、启动JN 存储hdfs元数据

#三台JN上执行 启动命令: 
hadoop-daemon.sh start journalnode

image-20241104200923227

9、格式化 在一台NN上执行,这里选择master

hdfs namenode -format
#启动当前的NN
hadoop-daemon.sh start namenode

image-20241104201043715

10、执行同步 没有格式化的NN上执行 在另外一个namenode上面执行 这里选择node1

hdfs namenode -bootstrapStandby

image-20241104201118900

11、格式化ZK 在master上面执行

#!!一定要先 把zk集群正常 启动起来
hdfs zkfc -formatZK

image-20241104201146414

12、在hadoop-env.sh文件中配置HDFS_JOURNALNODE_USER和HDFS_ZKFC_USER,给他们设置root用户

export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root

image-20241104201229642

13、启动hdfs集群,在master上执行

start-dfs.sh

image-20241104201329428

14、jps查看各节点进程

master

image-20241104202338208

node1

image-20241104202359304

node2

image-20241104202425949

15、浏览器查看9870端口

master

image-20241104202629051

node1

image-20241104202710014

后续使用的时候步骤:

1、开启虚拟机

2、每台机器先启动zk

3、在master上执行start-dfs.sh

4、关闭高可用hdfs stop-dfs.sh

咱们工作的时候,公司一般都会采用高可用集群模式,给工作加上一重保险

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

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

相关文章

高级语言程序设计课程第六次个人作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C/ 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/2024C/homework/13303 学号:102400121 姓名:林永庆 12345678 把二维数组转换为一维数组91011 多个函数返回值判断12总结:菜就多练 反思:菜就多练…

DNA Subway:一个综合性的生物信息学资源平台

DNA Subway 是一个综合性的生物信息学资源平台,由 CyVerse 开发,旨在提供一个教育性的生物信息学平台,通过将研究级的生物信息学工具、高性能计算和数据库整合到工作流程中,使得用户能够通过一个易于使用的界面进行基因预测、基因注释、基因组分析、系统发育分析和下一代测…

CapsLock+,Windows 上的快捷键神器

提高你 20% 的效率​ 我们在文字编辑时,经常会遇到一个问题:键盘的方向键「上下左右」离主键位区挺远的,如果要移动光标的方向就得挪右手过去操作方向键(或者用鼠标)。 对于经常码字(或敲代码)的人来说,这其实是非常麻烦的一件事。因为大多数时候,一篇文章或代码不是一…

学习思维导图和AI的记录

mermaid代码为:graph LRA --> A1[《Head First 嗨翻C语言》第九章]A1 --> B[函数指针]A1 --> C[动态内存分配]A1 --> D[结构体]A1 --> E[联合体]B --> B1[声明]B --> B2[使用]B --> B3[回调函数]C --> C1[malloc]C --> C2[calloc]C --> C3[f…

Windows-DHCP

AppSrv、RouterSrv 服务 DHCP(AppSrv) 安装和配置dhcp服务,为办公区域网络提供地址上网。 创建地址池名为inside_pool,地址池范围:192.168.0.1-192.168.0.100。 根据题目要求正确配置网关和dns信息。 配置故障转移 设置为“热备用服务器”模式。 伙伴服务器“DC2”为“待机…

本地调试远程服务

1、场景 ​ 通常来说我们的服务都是部署在各种远程服务器上的,本地开发完成部署到服务器长期运行。当线上出现问题的时候,或者远程出现问题的时候我们经常需要打印一些日志来判断问题所在。还有一种情况是本地开发环境正常,但是部署到远程环境就会出现各种神奇的问题,这个…

把握人工智能行业脉搏!全球最值得关注的7大AI资讯平台

序言:全球顶级的人工智能资讯网站都是以英文语言为主,如果大家看不懂,没关系,作者教大家一个技巧,用人工智能直接帮您看,然后直接让AI解析出您关注的重点内容给您,如果想了解详细信息,让人工智能一字不漏的翻译给你,就这么简单粗暴。在瞬息万变的人工智能领域,获取最…

Hadoop高可用搭建

搭建前准备(检查是否满足以下条件) 1、关防火墙 service firewalld stop2、时间同步 yum install ntp ntpdate -u s2c.time.edu.cn 或者 date -s 201805033、免密钥 (远程执行命令) 在两个主节点生成密钥文件 ssh-keygen -t rsa ssh-copy-id ipmaster-->master,node1,no…

【bypass系列】绕过命令过滤器:探索Unix/Linux中的Bypass技术

原创 visionsec 安全视安免责声明 该公众号分享的安全工具和项目均来源于网络,仅供安全研究与学习之用,如用于其他用途,由使用者承担全部法律及连带责任,与工具作者和本公众号无关。在Unix或Linux系统的安全测试和网络防御中,了解如何绕过命令过滤器是非常重要的。今天,我…

群晖数据自动同步百度云盘

1、在群晖后台打开应用 Cloud Sync应用(没有需自己安装)。 2、选择百度云 3、这里需要注意下,同步实际上是以下这两个文件夹同步,并不是百度云的根目录, 1、群辉nas:/homes/zhanglei/百度网盘 2、百度网盘:我的应用数据 ->Cloud Sync 另外建议:设置中的同步方向修改…

PVE 虚拟机 Ubuntu Server安装FTP功能

Ubuntu Server 18.04安装完成后,SSH功能默认已安装,可以通过22端口直接访问, 但FTP功能默认未安装,需要自己手动安装并配置参数文件,具体步骤如下。1、更新软件包列表:sudo apt update2、安装vsftpdsudo apt install vsftpd3、备份原始配置文件(可选)sudo cp /etc/vsft…

Linux系统压力测试工具(命令行工具)

Linux的命令行压力测试工具在做基准测试时很有用,通过基准测试对了解一个系统所能达到的最大性能指标,这些指标可以作为后续性能比较、优化评估的参考依据。 模拟CPU压力: 可以使用stress命令使CPU处于高负载状态。例如,通过stress -c 4命令(-c选项用于指定CPU核心数),会…