HDFS的高可用性HA配置实战(上)

简介: HDFS的高可用性HA配置实战(上)

0x00 文章内容


  1. HDFS之HA环境准备
  2. 配置HA实战
  3. 配置Zookeeper自动切换状态

相关指南:

安装好Zookeeper( => D003 复制粘贴玩大数据之安装与配置Zookeeper集群

安装好了HDFS( => Hadoop核心组件之HDFS的安装与配置


0x01 HDFS之HA环境准备


1. 集群规划

a. 规划图

image.png


b. 实验说明:由于服务器只有三台,所以此处使用slave1做为备master


2. 备份原本的配置

原因:因为我想操作完之后想恢复回非HA模式,如果想一直使用,则忽略此步骤

a. 备份core-site.xml

cp $HADOOP_HOME/etc/hadoop/core-site.xml $HADOOP_HOME/etc/hadoop/core-site.xml_bak

b. 备份hdfs-site.xml

cp $HADOOP_HOME/etc/hadoop/hdfs-site.xml $HADOOP_HOME/etc/hadoop/hdfs-site.xml_bak


3. 停止HDFS集群

a. 停止HDFS(如未启动则忽略)

stop-dfs.sh


0x02 配置HA实战


1. 修改hdfs-site.sh配置

a. 在master节点的hdfs-site.sh添加配置

vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml

<property>
    <name>dfs.nameservices</name>
        <value>mycluster</value>
        <description>HDFS名字节点服务的逻辑名称,可以是任意值</description>
</property>
<property>
        <name>dfs.ha.namenodes.mycluster</name>
        <value>nn1,nn2</value>
        <description>每一个NameNode在集群中的唯一标识</description>
</property>
<property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
        <value>master:8020</value>
        <description>nn1这个名字节点在RPC的时候使用的端口</description>
</property>
<property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>slave1:8020</value>
        <description>nn2这个名字节点在RPC的时候使用的端口</description>
</property>
<property>
        <name>dfs.namenode.http-address.mycluster.nn1</name>
        <value>master:50070</value>
        <description>nn1这个NameNode对外提供的http服务的端口</description>
</property>
<property>
        <name>dfs.namenode.http-address.mycluster.nn2</name>
        <value>slave1:50070</value>
        <description>nn2这个NameNode对外提供的http服务的端口</description>
</property>
<property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value>
       <description>标识Journal组</description>
</property>
<property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/home/hadoop-sny/bigdata/dfs/journal/data</value>
        <description>存储Journal数据的地方</description>
</property>
<property>
        <name>dfs.client.failover.proxy.provider.mycluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        <description>用于Java客户端来连接Active的nameNode</description>
</property>
<property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
        <description>用于在nameNode失败的时候不会对外提供服务</description>
</property>
<property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/home/hadoop-sny/.ssh/id_rsa</value>
        <description>用于在nameNode失败的时候不会对外提供服务</description>
</property>


b. 因为配置里用到了ssh,而且备节点是slave1,所以要配置slave1能免密码登录上master,如果配置了,我们可以跳过,在slave1上操作

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys hadoop-sny@master:~/.ssh/

能在slave1免密码登录上master则表示成功

ssh master


2. 修改core-site.sh配置

a. 在master节点的core-site.sh修改fs.defaultFS配置为

vi $HADOOP_HOME/etc/hadoop/core-site.xml


<property>
        <name>fs.defaultFS</name>
        <value>hdfs://mycluster</value>
        <description>HDFS的基本路径</description>
</property>


3. 同步配置到slaves

a. 同步hdfs-site.sh到slave1与slave2

~/shell/scp_all.sh $HADOOP_HOME/etc/hadoop/hdfs-site.xml

b. 同步core-site.sh到slave1与slave2

~/shell/scp_all.sh $HADOOP_HOME/etc/hadoop/core-site.xml


4. 启动journalnode并同步元数据

a. 在master、slave1和slave2上均执行(此时三个节点可以没有进程)

~/bigdata/hadoop-2.7.5/sbin/hadoop-daemon.sh start journalnode


image.png


b1. 同步原本master已经存在的元数据到slave1,在master执行

scp -r ~/bigdata/dfs/name/ hadoop-sny@slave1:~/bigdata/dfs/

b2. 除了第一步的手动拷贝,也可以用下面方式实现:

先启动master上的namenode

hadoop-daemon.sh start namenode


image.png


在slave1中执行下面语句来同步两个namenode的数据

~/bigdata/hadoop-2.7.5/bin/hdfs namenode -bootstrapStandby


image.png


执行完,发现slave1节点上也有了name文件夹,且master上最后一个fsimage(编号fsimage......14816)已经同步过来

微信图片_20220618201358.png


微信图片_20220618201401.png


c. 在master中执行下面语句来初始化journal node的数据

如果初始化前,启动了master上的namenode要先停止

hadoop-daemon.sh stop namenode

否则会报下面的错:


微信图片_20220618201426.png

相关文章
|
8月前
|
存储 分布式计算 安全
bigdata-07-Hdfs原理到实战
bigdata-07-Hdfs原理到实战
98 0
|
8月前
|
分布式计算 Java 大数据
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
762 0
|
7月前
|
存储 分布式计算 Hadoop
Hadoop Distributed File System (HDFS): 概念、功能点及实战
【6月更文挑战第12天】Hadoop Distributed File System (HDFS) 是 Hadoop 生态系统中的核心组件之一。它设计用于在大规模集群环境中存储和管理海量数据,提供高吞吐量的数据访问和容错能力。
714 4
|
3月前
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
205 5
|
3月前
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
52 3
|
3月前
|
XML 资源调度 网络协议
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
170 4
|
3月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
103 4
|
3月前
|
分布式计算 Java Hadoop
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(一)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(一)
51 2
|
7月前
|
消息中间件 SQL Kafka
实时计算 Flink版产品使用问题之独立集群与hdfs集群不在一起,何配置checkpoint目录为hdfs
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
存储 分布式计算 监控
分布式系统详解--框架(Hadoop-HDFS的HA搭建及测试)
分布式系统详解--框架(Hadoop-HDFS的HA搭建及测试)
93 0

热门文章

最新文章

相关实验场景

更多