美文网首页spark||flink||scala公众号:阿区先生
大数据开发:HDFS的故障恢复和高可用

大数据开发:HDFS的故障恢复和高可用

作者: 成都加米谷大数据 | 来源:发表于2020-12-31 17:28 被阅读0次

作为分布式文件系统的HDFS,在Hadoop技术生态当中,始终是不容忽视的。HDFS的稳定性和可靠性,对于后续的数据处理环节,提供底层支持,起着至关重要的作用。今天的大数据开发分享,我们就主要来讲讲HDFS的故障恢复和高可用。

HDFS的故障恢复和高可用,是确保数据存储稳定和高效的重要举措,要讲故障恢复和高可用,我们先要了解HDFS的存储运行流程。

HDFS存储运行流程

1、HDFS读取数据

步骤:

客户端调用FileStype对象的open()方法打开希望打开的文件;

DistributedFileSystem通过RPC调用NameNode来获取起始块的位置。NameNode返回的是含有该块副本的DataNode地址(DataNode与客户端的网络拓扑排序);

DistributedFileSystem返回一个FSDataInputStram对象给客户端并读取数据;

客户端调用read()方法从DataNode读取块;

一个数据块传输到客户端完毕后,寻找下个块的最佳DataNode;

所有块读取完毕后,FSDataInputStram调用close()方法,完成数据读取。

2、HDFS数据写入

步骤:

客户端通过对DistributedFileSystem调用create()方法来新建文件;

对NameNode创建一个RPC调用,在文件系统NameSpace中新建一个文件,此时NameNode会执行各种检查以确保文件不存在及客户端的创建权限;

检查通过,DistributedFileSystem向客户端返回一个FSDataOutputStream对象,负责DataNode和NameNode之间的通信。FSDataOutputStream将数据分成一个个的数据包并写入数据队列;

FSDataOutputStream向NameNode申请保存数据块的DataNode列表,假如副本数为3,3个DataNode构成一个数据管道,队列中的数据包会依次写入管道;

接收到数据包的DataNode需要向发送者发送“确认包”,“确认队列”逆流而上直到客户端收到应答,并将数据包从数据队列中删除;

客户端调用close()完成数据的写入。

HDFS的故障恢复和高可用

1、HDFS NameNode冷备份

NameNode运行期间,HDFS的所有更新操作都记录在EditLog中,久而久之EditLog文件将变得很大。当NameNode重启时,需要先将FsImage加载到内存,然后逐条执行EditLog中的记录。当EditLog变得巨大时,会导致NameNode启动非常慢,同时由于HDFS系统处于安全模式,无法提供对外写操作,影响用户的使用。

解决方案:Secondly NameNode-用于保存NameNode中对元数据的备份,减少NameNode的启动时间,一般单独运行在一台机器中。具体实现如下:

SecondlyNameNode定义和NameNode通信,请求其停止使用EditLog,并暂时将新的更新操作记录到edit.new文件;

SecondlyNameNode通过HTTP GET方式从NameNode下载FsImage和EditLog文件到本地;

SecondlyNameNode将FsImage加载到内存,并逐条执行EditLog的记录,使FsImage保持到最新;

SecondlyNameNode通过POST方式将新的FsImage发送到NameNode;

NameNode用新的FsImage替换掉旧的FsImage文件,并将edit.new替换为正式的EditLog,此时EditLog便完成了“瘦身”。

2、DataNode出错

每个DataNode定期向NameNode发送“心跳”汇报自己的健康状态;

当DataNode发生故障或者网络故障,NameNode无法接收DataNode的心跳,这些NataNode会标记为宕机,该节点的数据不可读;

DadaNode的失效会导致数据块的副本数小于最小冗余因子,NameNode会启动副本冗余复制,产生新的副本。

3、数据出错

网络原因和硬盘错误等因素会造成数据错误。

客户端读取到数据后,就采用MD5和SHA1算法对数据块进行校验,以确保读到正确的数据。

文件创建时,客户端会对每一个文件进行信息摘录并将信息存储到同一路径的隐藏文件里;客户端读取文件时,会先校验该信息文件与读取的文件,如果校验出错,便请求到另一DataNode读取数据,同时向NameNode汇报,以删除和复制这个数据块。

关于大数据开发,HDFS的故障恢复和高可用,以上就为大家做了简单的介绍了。HDFS作为Hadoop的核心组件之一,在学习阶段是需要重点掌握的,理论结合实操,才能真正掌握到家。

相关文章

  • 大数据开发:HDFS的故障恢复和高可用

    作为分布式文件系统的HDFS,在Hadoop技术生态当中,始终是不容忽视的。HDFS的稳定性和可靠性,对于后续的数...

  • HDFS详解

    认识HDFS HDFS的特点: 高容错性高吞吐量故障的检测和自动快速恢复流式的数据访问大数据集一次写入,多次读写 ...

  • Hadoop框架:HDFS高可用环境配置

    一、HDFS高可用 1、基础描述 在单点或者少数节点故障的情况下,集群还可以正常的提供服务,HDFS高可用机制可以...

  • 29各种存储引擎说明

    功能数据读写,数据安全和一致性,提高性能,热备份,自动故障恢复,高可用方面支持 存储引擎介绍InnoDB,MyIS...

  • Hadoop 系列(八)—— 基于 ZooKeeper 搭建 H

    一、高可用简介 Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN ...

  • 第6章 复制

    数据复制搓个副本部署到其他机器,满足故障恢复和负载均衡等需求,是Redis高可用的基础。 1. 配置 1.1 建立...

  • mysql双主+keepalived

    设计MySQL高可用架构的目的是为了避免单点故障,减少因系统故障或者数据库崩溃所造成的恢复或者停机时间,为企业提供...

  • HDFS故障分析

    由于HDFS中NN的重要性及数据存放在缓存中,所以容易发生下面两种情况: 1、单点故障 高可用HA,多NN,...

  • 如何搭建高可用Hadoop集群

    在这篇文章中,我将讲述HDFS 2.x高可用集群架构和如何搭建一个高可用的HDFS集群。其内容如下: HDFS H...

  • 高可用系统

    高可用系统设计:1、软硬件冗余,消除单点故障,任何系统都有冗余系统处于standby2、故障检测与恢复,检测故障并...

网友评论

    本文标题:大数据开发:HDFS的故障恢复和高可用

    本文链接:https://www.haomeiwen.com/subject/rsrroktx.html