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

相关文章

SpringBoot操作spark处理hdfs文件的操作方法

《SpringBoot操作spark处理hdfs文件的操作方法》本文介绍了如何使用SpringBoot操作Spark处理HDFS文件,包括导入依赖、配置Spark信息、编写Controller和Ser... 目录SpringBoot操作spark处理hdfs文件1、导入依赖2、配置spark信息3、cont

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Nacos集群数据同步方式

《Nacos集群数据同步方式》文章主要介绍了Nacos集群中服务注册信息的同步机制,涉及到负责节点和非负责节点之间的数据同步过程,以及DistroProtocol协议在同步中的应用... 目录引言负责节点(发起同步)DistroProtocolDistroSyncChangeTask获取同步数据getDis

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节