HDFS HA 集群搭建 - 基于Quorum Journal Manager(hadoop2.7.1)

2024-01-15 18:28

本文主要是介绍HDFS HA 集群搭建 - 基于Quorum Journal Manager(hadoop2.7.1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0、前置概念

0.1 checkpoint 检查点

在Hadoop分布式文件系统(HDFS)中,检查点(Checkpointing)是一个关键的过程,它涉及到将文件系统的命名空间状态持久化到磁盘。这个状态由两部分组成:EditLogs和FsImage。

  • EditLogs:记录了自FsImage生成后对文件系统所做的所有修改。每次对文件系统的修改都会追加到EditLogs中。
  • FsImage:包含了文件系统所有目录和文件的元数据的一个快照,在系统启动时加载。

检查点的作用

  • 性能优化:随着时间的推移,EditLogs可以变得非常大,因此,合并这些日志到FsImage可以减少NameNode启动时加载和应用EditLogs所需的时间。
  • 系统稳定性:通过定期创建检查点,可以减少在发生故障时需要恢复的数据量,从而提高系统的稳定性和可靠性。
  • 数据恢复:在系统崩溃后,检查点可以用来恢复文件系统的状态。最新的FsImage和EditLogs会被用来重建文件系统的元数据。

检查点的创建

  • 检查点的创建通常由Secondary NameNode或在HA配置中的Standby NameNode负责:
  • Secondary NameNode:在非HA配置中,Secondary NameNode定期从Active NameNode下载EditLogs和FsImage,并将它们合并以创建新的FsImage。这个过程不会影响Active NameNode的正常运行。
  • Standby NameNode:在HA配置中,Standby NameNode负责与Active NameNode同步并创建检查点。这个过程是自动的,并且对Active NameNode的性能影响更小。

1、基础环境配置

1.1 安装包下载

hadoop-hdfs 2.7.1 https://hadoop.apache.org/releases.html

java 1.8

zookeeper-3.4.14

需要补充网址

1.2 JAVA环境配置

JDK安装与升级

#所有机器都要操作
1、若发现系统自带的java为1.8版本,需要修改为1.8版本,不然zk会拉不起来。如下:[root@vm1 ~]# java -version  java version "1.7.0_76"Java(TM) SE Runtime Environment (build 1.7.0_76-b13)Java HotSpot(TM) 64-Bit Server VM (build 24.76-b04, mixed mode)
2、修改过程2.1 下载JAVA1.8的包,并解压,参考JDK安装与升级2.2 修改配置文件/etc/profile与/etc/profile.d/java_path.sh/etc/profile.d/java_path.sh #此文件中的path路径修改为1.8对应路径/etc/profile  #修改内容如下export JAVA_HOME=/usr/local/java8export PATH=$JAVA_HOME/bin:$PATH2.3 加载配置source /etc/profile

1.3 其他配置

参考准备虚拟机部分

1、关闭防火墙

2、关闭selinux

3、检查系统时间

4、配置域名解析 /etc/hosts

5、设置免密登录

ssh-keygen  #生成密钥
ssh-copy-id  vm1/vm2/vm3 #每一台都需要做3次。如果root用,需要/etc/ssh/sshd_config配置文件打开允许root登录配置。
通过ssh测试是否可直接登录。

2、机器环境

2.1 机器准备

hostnameip
vm1ip1
vm2ip2
vm3ip3

2.2 机器分配

NameNodeDataNodeJournalNodeZookeeper
vm1
vm2
vm3

3、hdfs配置文件详解

#/etc/hadoop/下配置文件
capacity-scheduler.xml
configuration.xsl
container-executor.cfg
core-site.xml
hadoop-env.cmd
hadoop-env.sh
hadoop-metrics2.properties
hadoop-metrics.properties
hadoop-policy.xml
hdfs-site.xml
httpfs-env.sh
httpfs-log4j.properties
httpfs-signature.secret
httpfs-site.xml
kms-acls.xml
kms-env.sh
kms-log4j.properties
kms-site.xml
og4j.properties
mapred-env.cmd
mapred-env.sh
mapred-queues.xml.template
mapred-site.xml.template
slaves
ssl-client.xml.example
ssl-server.xml.example
yarn-env.cmd
yarn-env.sh
yarn-site.xml

3.1 core-site.xml

core-site.xml   #核心配置文件
1、指定集群为自动故障转移配置<属性><名称>ha.zookeeper.quorum</名称><value>zk1.example.com:2181,zk2.example.com:2181,zk3.example.com:2181</value></属性>
2、fs.defaultFS - 未指定时 Hadoop FS 客户端使用的默认路径前缀(可选)。注:配置 Hadoop 客户端的默认路径以使用新的启用 HA 的逻辑 URI。如果您之前使用“mycluster”作为名称服务 ID,则这将是所有 HDFS 路径的权限部分的值。这可以在core-site.xml文件中像这样配置:定义HDFS文件系统的主机信息与端口号,hdfs://[ip|hostname]:port,hadoop1.x默认端口9000,hadoop2.x默认端口8020;<属性> <名称>fs.defaultFS </名称> <>hdfs://mycluster </值> </属性>
3、hadoop.tmp.dir:数据临时存放目录,默认/tmp/hadoop-${user.name} 。当Hadoop守护进程启动时,如果hadoop.tmp.dir指定的目录不存在,Hadoop通常会尝试自动创建它。<property><name>hadoop.tmp.dir</name><value>/opt/hadoop-2.6.5/tmp</value>  #这里路径自己可以设置,默认/tmp/hadoop-${user.name};</property>
4、io.file.buffer.size:集群读写操作时缓冲区大小,默认4K;  

3.2 hdfs-site.xml

hdfs-site.xml  # HDFS配置
1、自动故障迁移需要配置内容,打开自动故障迁移开关<属性><名称>dfs.ha.automatic-failover.enabled</名称><>true</值></属性>2、dfs.nameservices:为此名称服务选择一个逻辑名称,例如“mycluster”,并使用该逻辑名称作为该配置选项的值。您选择的名称是任意的。它将用于配置并用作集群中绝对 HDFS 路径的权限组件。注意:如果您还使用 HDFS Federation,则此配置设置还应包括其他名称服务、HA 或其他名称服务的列表,以逗号分隔的列表形式。<property><name>dfs.nameservices</name><value>hdfs-cluster</value></property>3、dfs.ha.namenodes.[nameservice ID] - 名称服务中每个NameNode的唯一标识符配置以逗号分隔的 NameNode ID 列表。DataNode 将使用它来确定集群中的所有 NameNode。例如,如果您之前使用“mycluster”作为名称服务 ID,并且想要使用“nn1”、“nn2”和“nn3”作为 NameNode 的单独 ID,则可以这样配置:注意: HA 的最小 NameNode 数量为 2,但您可以配置更多。由于通信开销,建议不超过 5 个(建议使用 3 个 NameNode)。<property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2, nn3</value></property>4、dfs.namenode.name.dir:DFS NameNode在文件系统内存储名称表 fsimage 的路径,多个目录使用逗号间隔,名称表会复制存储到所有目录中,默认为file://${hadoop.tmp.dir}/dfs/name;  <property><name>dfs.ha.namenodes.hdfs-cluster</name><value>nn1,nn2</value></property>

这篇关于HDFS HA 集群搭建 - 基于Quorum Journal Manager(hadoop2.7.1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/609804

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.

Spring Cloud GateWay搭建全过程

《SpringCloudGateWay搭建全过程》:本文主要介绍SpringCloudGateWay搭建全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Spring Cloud GateWay搭建1.搭建注册中心1.1添加依赖1.2 配置文件及启动类1.3 测

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

SpringBoot快速搭建TCP服务端和客户端全过程

《SpringBoot快速搭建TCP服务端和客户端全过程》:本文主要介绍SpringBoot快速搭建TCP服务端和客户端全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录TCPServerTCPClient总结由于工作需要,研究了SpringBoot搭建TCP通信的过程

Redis高可用-主从复制、哨兵模式与集群模式详解

《Redis高可用-主从复制、哨兵模式与集群模式详解》:本文主要介绍Redis高可用-主从复制、哨兵模式与集群模式的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Redis高可用-主从复制、哨兵模式与集群模式概要一、主从复制(Master-Slave Repli

Gradle下如何搭建SpringCloud分布式环境

《Gradle下如何搭建SpringCloud分布式环境》:本文主要介绍Gradle下如何搭建SpringCloud分布式环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Gradle下搭建SpringCloud分布式环境1.idea配置好gradle2.创建一个空的gr