Hadoop架构介绍——HDFS的体系结构

设计目标:

-(硬件故障是常态,而非偶然)自动快速检测应对硬件错误

-流式访问数据(数据批处理)

-转移计算比移动数据本身更划算(减少数据传输)

-简单的数据一致性模型(一次写入,多次读取的文件访问模型)

-异构平台可移植


HDFS体系结构


采用Master-Slaver模式:

NameNode中心服务器(Master):维护文件系统树、以及整棵树内的文件目录、负责整个数据集群的管理。

DataNode分布在不同的机架上(Slaver):在客户端或者NameNode的调度下,存储并检索数据块,并且定期向NameNode发送所存储的数据块的列表。

客户端与NameNode获取元数据;

与DataNode交互获取数据。

默认情况下,每个DataNode都保存了3个副本,其中两个保存在同一个机架的两个不同的节点上。另一个副本放在不同机架上的节点上。


基本概念

机架:HDFS集群,由分布在多个机架上的大量DataNode组成,不同机架之间节点通过交换机通信,HDFS通过机架感知策略,使NameNode能够确定每个DataNode所属的机架ID,使用副本存放策略,来改进数据的可靠性、可用性和网络带宽的利用率。

数据块(block):HDFS最基本的存储单元,默认为64M,用户可以自行设置大小。

元数据:指HDFS文件系统中,文件和目录的属性信息。HDFS实现时,采用了 镜像文件(Fsimage) + 日志文件(EditLog)的备份机制。文件的镜像文件中内容包括:修改时间、访问时间、数据块大小、组成文件的数据块的存储位置信息。目录的镜像文件内容包括:修改时间、访问控制权限等信息。日志文件记录的是:HDFS的更新操作。

NameNode启动的时候,会将镜像文件和日志文件的内容在内存中合并。把内存中的元数据更新到最新状态。

用户数据:HDFS存储的大部分都是用户数据,以数据块的形式存放在DataNode上。


在HDFS中,NameNode 和 DataNode之间使用TCP协议进行通信。DataNode每3s向NameNode发送一个心跳。每10次心跳后,向NameNode发送一个数据块报告自己的信息,通过这些信息,NameNode能够重建元数据,并确保每个数据块有足够的副本。


HDFS写入数据的流程:

Hadoop架构介绍——HDFS的体系结构_第1张图片


HDFS读取数据的流程:

Hadoop架构介绍——HDFS的体系结构_第2张图片


你可能感兴趣的:(Hadoop)