HDFS架构

老规矩,先上官网链接:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

1.Hadoop Distribute FileSystem

(1)易于扩展的分布式文件系统

(2)运行在大量廉价机器上,提供容错机制

(3)为大量用户提供性能不错的文件存取服务

2.架构图

HDFS架构_第1张图片

3.Namenode

(1)NameNode 是一个中心服务器,单一节点,负责管理文件系统的名字空间以及客户端对文件的访问。

(2)文件操作,Namenode负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不经NameNode。只会询问它和那个DataNode联系,否则NameNode会成为系统的瓶颈。

(3)副本存放在那些DataNode由NameNode控制。根据全局情况作出块放置的决定。读取文件时,NameNode尽量先让用户读取最近的副本,降低带块消耗和读取时延。

(4)NameNode全权管理数据块的复制,它周期性地从集群中的每个DataNode接收心跳信号和块状态报告(BlockReport),接收到心跳信号以为这该DataNode节点工作正常。块状态报告包含了一个该DataNode所有的数据块列表。

4.DataNode

(1)一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。

(2)DataNode启动后向Namenode注册,通过后,周期性的向NameNode报告所有的块信息。

(3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令,如果复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。

(4)集群运行中可以安全加入和退出一些机器。

5.文件

可以创建,删除,移动或重命名文件,当文件创建,写入和关闭之后不能修改文件内容。

6.数据损坏处理

(1)当DataNode读取block的时候,它会计算checknum

(2)如果计算后的checksum,与block创建时值不一样,说明该block已经损坏

(3)client读取其他DataNode上的block

(3)NameNode标记该块已经损坏,然后复制block到预期设置的文件备份数

(4)DataNode在其文件创建后三周验证其checknum

7.Namenode启动过程

Namenode存放在内存和本地磁盘 (fsimage和edits)

格式化HDFS 目的就是生成fsimage 

start Namenode 的时候会读取 fsimage

start DataNode  *注册 *block report

创建目录 上传文件时都会写入edits

第二次启动HDFS

1.read [fsimage]

2.read [edits]

3.generate write fsimage[new]

*genearte edits[null]

4.start DataNode

8.secondaryNameNode辅助功能

辅助NameNode 定期合并fsimage和edits -> new fsimage

9.安全模式SafeMode

等待DataNode向NameNode发送block report

total blocks=99.999%/DataNode blocks 此时安全模式才会退出

这时候,可以查看文件系统的文件,不能改变文件系统的命名空间,即不能创建文件夹,不能上传文件,不能删除文件

手动进入安全模式

bin/hdfs dfsadmin -safemode enter

关闭安全模式

bin/hdfs dfsadmin -safemode leave

你可能感兴趣的:(HDFS架构)