<返回更多

图文详解HDFS工作机制

2019-08-26    
加入收藏

本篇主要从下面几个方面进行展开

一、HDFS是什么

HDFS(Hadoop Distributed File System)分布式文件系统,它是谷歌的GFS提出后出现的一种用户级文件系统。提供了一个高度容错和高吞吐量的海量数据存储解决方案。

图文详解HDFS工作机制

hadoop生态-HDFS的核心位置

二、漫画看懂HDFS骚操作

图文详解HDFS工作机制

2.1 写操作

图文详解HDFS工作机制

1

图文详解HDFS工作机制

2

图文详解HDFS工作机制

3

2.2 读操作

图文详解HDFS工作机制

2.3 容错性

常见错误种类

图文详解HDFS工作机制

节点故障

图文详解HDFS工作机制

通信故障和数据损坏

图文详解HDFS工作机制

读写故障

图文详解HDFS工作机制
图文详解HDFS工作机制
图文详解HDFS工作机制

以上是漫画解说部分,主要涵盖了读写流程已经故障处理。下面会有具体的架构讲解。

三、HDFS架构原理

图文详解HDFS工作机制

3.1 HDFS几个主要概念

3.1.1 NameNode

3.1.2 DataNode

数据存储节点

3.1.3 Secondary NameNode

图文详解HDFS工作机制

它的主要职责

FailoverController

故障切换器,管理着将活动namenode转移为备用namenode的过程,默认通过ZK来确保仅有一个活跃namenode。每一个namenode都有一个运行着的故障转移器。

3.1.4 Balancer

用于平衡DataNode集群之间各节点的磁盘利用率。

3.1.5 HttpFS

提供Http方式访问和操作HDFS功能

图文详解HDFS工作机制

上面几个概念的拓扑图

3.2 Block数据块

HDFS里的数据都是以blocks分散在DataNodes。

通常,文件系统我们存放数据都是以一个blocks集进行存储,HDFS也是如此。

在 hadoop 集群中,每个 block 的默认大小为 128M(此处指 hadoop 2.x 版本,hadoop 1.x 版本为 64M),也可以通过配置进行修改

dfs.block.size或 dfs.blocksize =64M

HDFS 不会将每个文件存储在配置的 block 大小的确切倍数中,比如一个 514M 的文件 example.txt,下图所示,假设 block 大小为默认的 128M,那么将会创建 5 个block,前 4 个 block 大小为 128M,但是最后一个 block 的大小则仅为 2M。

图文详解HDFS工作机制

block大小的设置,如果太小会产生太多的blocks,这样元数据就会很多,从而使管理blocks和元数据产生巨大开销,增加NameNode和DataNode的负载。

3.3 写原理

假如我们要一个文件名字“example.txt”,248M。

图文详解HDFS工作机制

假设block.size设置的128M,因此client会把该文件切分成两个block,分布是 128M和120M。

每当向HDFS写数据的时候,都遵循下面的几个流程

For Block A, list A = {IP of DataNode 1, IP of DataNode 4, IP of DataNode 6}For Block B, set B = {IP of DataNode 3, IP of DataNode 7, IP of DataNode 9}

3.3.1 建立管道

client在blocks写入之前会确保提供的DataNodes是否已经做好接受数据的准备。在这样的情况下,client会连接该block列表中的各个DataNodes,为每个block建一个管道。以BlockA举例,它的DN(DataNode)列表是 { DN 1 IP, DN 4 IP, DN 6 IP }

图文详解HDFS工作机制

如上图,大概有一下几个步骤:

3.3.2 数据流与复制

当client与DataNodes之间的管道建立之后,client将开始将推送数据到管道。我们这里假设的复制因子是3,所以blockA将被复制三份,但是注意的是client只会将blockA推送到DN1,然后由DataNodes自己按照顺序进行复制。

图文详解HDFS工作机制

如上图所示,整个复制过程步骤如下:

3.3.3 管道关闭和确认

当block复制3份完成后,client和NameNode会有一系列的ack确认来保证数据被成功写入。

如下图所示,DataNodes的确认和写入的顺序恰好相反,DN6写入成功后会给DN4发送确认消息,接着DN4会将DN6和自己的确认消息发送给DN1,最后DN1将所有的确认消息发送给client,client再给NameNode确认block写入成功,然后NameNode更新对应的元数据,最终client关闭管道。

图文详解HDFS工作机制

以上的所有流程,我们都是针对blockA进行解说,而blockB是完全一样的,blockB有自己的管道、自己的DataNodes并行的进行写入。

图文详解HDFS工作机制

如上图所示,有两个管道分别为blokA和blockB提供,他们各自的流程顺序如下:

3.4 读原理

读的原理相对写更容易理解,我们同样以example.txt举例。

图文详解HDFS工作机制

如上图所示,有以下几个步骤

最后

本篇先以漫画的方式阐述场景HDFS 读写流程,然后又以HDFS里的概念进行进一步的描述,相信大家已经对此有所了解。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>