HDFS Architecture

http://hadoop.apache.org/docs/r2.9.0/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

Introduction

Hadoop分布式文件系统被规划运维在日常的硬件上。它和当下早就存在的分布式文件系统有无数相似的地点。不过,也有众多不一。HDFS的容错性很高,并且被规划用来运维在打折的硬件上。HDFS提供高吞吐量的造访应用数据,并且符合用在有非常的大数据集的应用。HDFS是打造Apache
Nutch的基础设备。HDFS是Apache Hadoop宗旨工程的一有个别。

Assumptions and Goals

Hardware Failure

硬件败北是一种健康状态而不是非常处境。三个HDFS实例大概由许多台服务器机器组成,每台机械都存储着那个文件系统上的一局地数据。事实上有过多组件,每一个组件退步的票房价值非常大,这就象征HDFS总是不安静的。因而,快速删除错误的组件,并且自动发现它们是HDFS的三个基本架构目的。

NameNode and DataNodes

HDFS是一个着力结构。2个HDFS集群由一个NameNode和不少个DataNode组成。NameNode是一个主服务器,它管理文件系统的命名空间,并且客户端对文本的拜会。DataNode管理与之荣辱与共的节点的存储。HDFS维护二个文件系统的命名空间,并且同意用户数量以文件方式储存。在中间,三个文件被切分成四个或四个块,那么些块被贮存在一三种的DataNode上。NameNode执行文件系统命名空间操作,比如:打开、管理、重命名文件或目录。它也保险着块到DataNode之间的炫耀关系。DataNode负责为那些来源文件系统客户端的哀求提供读写服务。在NameNode钦赐之下,DataNode也推行块的创设、删除、复制操作。

图片 1

HDFS是用Java语言营造的,任何三个支撑Java的机械上都足以运行NameNode和DataNode软件。一种典型的布局方式是用一台专门的机器下边只布署NameNode,而以此实例集群中的其余的每2个集群上都运转一个DataNode。HDFS那种架构无法挡住在同一台集群上运维多少个DataNode,但那种气象在实事求是的布局中是很少见的。

The File System Namespace

HDFS的文件系统命名空间和早已存在的其他的文件系统很相近,可以创造、删除、移动文件或目录。HDFS援救用户限额和走访权限控制。HDFS不资助硬链接和软链接,不过它并没有阻拦那种特征的落到实处。

NameNode维护文件系统命名空间。任何对文件系统命名空间依然它们的性质的修改都会记录到NameNode中。四个行使可以指定一个文书在HDFS中应当保险的副本的数据。一个文本副本的数量叫做这一个文件的副本因子,那个音信被贮存在NameNode中。

Data Replication

种种文件被贮存为一文山会海的块。为了容错,文件的每种块会被复制。块的深浅和副本因子被安顿在各种文件中。在2个文本的有所块中,除了末了贰个块以外,其他的块的轻重缓急都相同。应用程序可以指定1个文本的副本数量。在文书被创建的时候副本因子就被内定了,当然在随着可以修改。在HDFS中的文件都以只能写3遍的,而且在其余时候都以从严的只好写贰次。(PS:相当于说写入了就无法改了,假使想要改则须求先下载当地修改后再行上传)

NameNode会周期性的收纳到来自集群中的逐个DataNode的心跳检测和块报告。收到心跳检测意味着那几个DataNode还活着可以健康提供服务。二个块报告包蕴这么些DataNode上的富有的块列表。

图片 2

Replica Placement: The First Baby Steps

副本存放的岗位对HDFS的可相信性和性质相当首要。最佳的副本地点是HDFS不一样与其余分布式文件系统的主要性标志。这么些天性须要大批量的调节和尝试。机架感知副本地点策略的目标是为了增长数据的可信性、可用性和互联网带宽的利用率。

一个大的HDFS集群实例由许多电脑组成,这一个计算机平时被放在许多机架上。不一致机架上的两台计算机之间通讯必须经过沟通机。当先33.33%意况下,相同机架上的机器之间的网络带宽要比不通机架上机械此前的网络带宽要好广大。

NameNode决定DataNode所属的机架ID

一般状态下,副本因子是3。HDFS的停放策略是,倘若是首先次写在有些DataNode上,那么就停放1个副本在那个DataNode所在的地头机械上,否则放置在相同机架上的四个肆意的DataNode上,其它的副本放置在区其他远程机架上的某部节点,最终二个副本放置在平等的中距离机架上的两样的节点上。机架失利的票房价值要比机架上某些节点失败的几率小很多。那个策略不影响多少的可相信性和可用性。

假设副本因子大于3,那么第几个以及背后的更加多的副本的地方是不管三七二十一决定的,然而各样机架上的副本数量有三个上限((replicas - 1) / racks + 2

The Persistence of File System Metadata

NameNode用2个誉为艾德itLog的政工日志来持久化文件系统元数据的每一趟变动。例如,在HDFS上创办二个新文件会招致NameNode插入一条记下到艾德itLog中。同样的,改变一个文本的副本因子也会导致往艾德itLog中插入一条记下。NameNode用它所在的主机的当地操作系统上的3个文本来存储艾德itLog。整个文件系统命名空间,包罗块到文件的照耀,以及文件的系统天性,都会被积存到1个名为FsImage的文本中。那些FsImage文件也被储存在NameNode的本土文件系统中。

NameNode在内存中保障整个文件系统命名空间以及文件块的投射。当NameNode运营的时候,或许当检查点被触发的时候,它会从磁盘中读取FsImage和艾德itLog,然后依照艾德itLog打造具有的事体到内存中的FsImage,并且刷新新的本子到三个新的FsImage到磁盘。它会截断旧的艾德itLog,因为这一个艾德itLog中的事务已经被持久化到FsImage中了。那个处理被称为检查点。检查点的意在通过做三个文件系统元数据的快照并且把它们保存到FsImage中来保险HDFS能够很有益于的查看文件系统元数据。代替每编辑三遍就修改FsImage,我们将以此编辑持久化到艾德itLog。当检查点暴发的时候,将改成从艾德itLog写到FsImage。3个检查点被触发在给定的大运距离(dfs.namenode.checkpoint.period)单位是秒,或然内定文件系统事务累积达到多少数量(dfs.namenode.checkpoint.txns)就接触。假诺那三本性情都安装了,那么首先个达标阈值的将触发检查点。

DataNode将文件数量存放在本半夏件系统中。DataNode并不知道HDFS的文书,它只是将文件的每一种块存储到本麻芋果件系统中。DataNode并不是将持有的公文都留存1个目录下,它会以一种启发式的措施来支配每种目录下该存放的文书的最优数量,并且也会适量的创制子目录。当DataNode运行的时候,它通过扫描本三步跳件系统生成三个和那些地方文件一律的HDFS数据块的列表,并且发送报告给NameNode。那一个报告叫做Blockreport。

 

小结一下:

壹 、每一次元数据的变更都会被记录到艾德itLog中

二 、文件的元数据现已文件和Block直接的投射关系被记录到FsImage中

叁 、改变不会知晓写到FsImage中,而是先记下到艾德itLog中,然后当检查点触发的时候将艾德itLog中著录的变动写到FsImage中

肆 、检查点触发的时机有三个:贰个是足以经过dfs.namenode.checkpoint.period参数内定多久周期性的触发二次,另3个是透过dfs.namenode.checkpoint.txns钦命当艾德itLog中的记录达到多少时接触1回。无论达到特别条件都会触发,什么人先达到,何人先触发

⑤ 、艾德itLog和FsImage都存放在NameNode所在的机械的地面磁盘上

六 、DataNode运行的时候回发送BlockReport给NameNode

图片 3

 

图片 4

 

相关文章