您的位置:首页 > 运维架构 > 网站架构

HDFS架构原理分析

2017-06-22 21:58 239 查看
HDFS优点:

高容错性数据自动保存多个副本

副本丢失后,自动恢复

适合批处理移动计算而非数据

数据位置暴露给计算框架

适合大数据处理GB、TB、甚至PB级别数据

百万规模以上的文件数量

10K+节点

可构建在廉价机器上可构建在廉价机器上
HDFS缺点:

低延迟数据访问比如毫秒级

低延迟与高吞吐率

小文件存取占用NameNode大量内存

寻道时间超过读取时间

并发写入、文件随机修改一个文件只能有一个写者

仅支持append

HDFS架构:



HDFS架构图
主节点:NameNode
从节点:DataNode
Secondary NameNode节点:辅助NameNode完成一些工作。

HDFS数据存储单元(black):

- 文件被切分成固定大小的数据块

  默认数据块大小为64MB(hadoop1.x),可配置

  若文件大小不到64MB,则单独存成一个block

- 一个文件存储方式

  按大小被切分成若干个block,存储到不同节点上

  默认情况下每个block都有三个副本

- Block大小和副本数通过Client端上传文件时设置,文件上传成功后副本数可以变更,Block Size不可变更。



HDFS设计思想

NameNode(NN):

- NameNode主要功能:接受客户端的读写服务

- NameNode保存metaData信息,包括:

  文件owership和permissions

  文件包含哪些Block

  Block保存在哪个DataNode(由DataNode启动时上报)

- NameNode的medadata信息在启动后会加载到内存

  metadata存储到磁盘文件名为"fsimage"

  Block的位置信息不会保存到fsimage(其是保存在内存中)

  edits记录对medadata的操作日志

SecondNameNode(SNN):

- 它不是NN的备份(但可以备份),它的主要工作是帮助NN合并edits log,减少NN启动时间。

- SNN执行合并时机

  根据配置文件设置的时间间隔fs.checkpoint.period 默认为3600秒

  根据配置文件设置edits log大小fs.checkpoing.size规定edits文件的最大值默认是64MB



SNN合并流程

DataNode(DN):
- 存储数据(Block)
- 启动DN线程的时候会向NN汇报block信息
- 通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,并copy其上的block到其他   DN

HDFS写入流程:



HDFS写入流程图

HDFS读流程:



HDFS读流程图

HDFS文件权限:

- 与Linux文件权限类似

  r:read, w:write, x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容

- 如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就只zhangsan 

HDFS安全模式:

- NameNode启动的时候,首先将fsimage载入内存,并执行编辑日志(edits)中的各项操作。

- 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)和一个空的编辑日志。

- 此刻NameNode运行在安全模式。即NameNode的文件系统对于客户端来说是只读的。

- 在此阶段NameNode收集各个DataNode的报告,当数据块到最小副本数以上时,会被认为是安全的,在一定比例(可设置)的数据块被确定为安全后,再过若干时间,安全模式结束。

- 当检测到副本数不足的数据块,该块会被复制达到最小副本数,系统中数据块的位置并不是由NameNode维护的,而是以块列表形式存储在DataNode中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: