本文主要是介绍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 机器准备
hostname | ip |
---|---|
vm1 | ip1 |
vm2 | ip2 |
vm3 | ip3 |
2.2 机器分配
NameNode | DataNode | JournalNode | Zookeeper | |
---|---|---|---|---|
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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!