码迷,mamicode.com
首页 > 其他好文 > 详细

014_HDFS存储架构、架构可靠性分析、副本放置策略、各组件之间的关系

时间:2016-03-08 23:51:39      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:

1.HDFS存储架构

技术分享

技术分享

(1)HDFS 架构 —— 文件

1)文件切分成块(默认大小64M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默
认3)
2)NameNode 是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个
文件的块列表以及块所在的DataNode等等
3)DataNode 在本地文件系统存储文件块数据,以及块数据的校验和
4)可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。

(2)HDFS  文件权限

1)与Linux文件权限类似。
2)r: read; w:write; x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容。
3)如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是zhangsan。
4)HDFS的权限目的:阻止好人做错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁。

      (3)HDFS 架构 —— 组件功能

技术分享

(4)HDFS 架构 —— NameNode

1)Namenode 是一个中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。
2)文件操作,NameNode 负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过NameNode,只会询问它跟那个DataNode联系,否则NameNode会成为系统的瓶颈。

3)副本存放在哪些DataNode上由 NameNode来控制,根据全局情况做出块放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低带块消耗和读取时延。
4)Namenode 全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。

(5)HDFS 架构 —— DataNode

1)一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳
2)DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。
3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode 的心跳,则认为该节点不可用。
4)集群运行中可以安全加入和退出一些机器

2.HDFS 架构可靠性

(1)保障可靠性的措施

1)一个名字节点和多个数据节点
2)数据复制(冗余机制)
  存放的位置(机架感知策略)
3)故障检测
  数据节点
    心跳包(检测是否宕机)
    块报告(安全模式下检测)
    数据完整性检测(校验和比较)
  名字节点(日志文件,镜像文件)
4)空间回收机制

(2)常见的三个错误情况及其解决方案

  1)文件损坏  2)网络或者机器失败  3)NameNode挂掉

  技术分享

 (3)数据损坏(corruption)处理

1)当DataNode读取block的时候,它会计算checksum
2)如果计算后的checksum,与block创建时值不一样,说明该block已经损坏。
3)Client读取其它DN上的block。
4)NameNode标记该块已经损坏,然后复制block达到预期设置的文件备份数。
5)DataNode 在其文件创建后三周验证其checksum。

3.副本放置策略

技术分享

  

4.HDFS架构中Client、NN、DN、SNN之间关系

(1)三者之间的架构图

技术分享

   (2)HDFS  架构 —— Client & SNN

技术分享

(3)HDFS  架构 —— NN & SNN

技术分享技术分享


secondnamenode:并非namenode的热备份,是辅助NameNode,分担其工作量,定期合并fsimage和dsedits,推送给NameNode,在紧急情况下,可辅助恢复NameNode。
当集群启动时,fsimage加载到NameNode内存中,然后不变,所在的操作保存在fsedits中。
NameNode内存中保存一份最新的,内存中的镜像文件等于fsimage+edits,定期合并fsimage和edits,否则会因为Edits文件过大将导致NameNode重启速度慢。SecondNameNode负责定期合并它们。

说明:此博客基本全是整理自云帆大数据梦琪老师的PPT

014_HDFS存储架构、架构可靠性分析、副本放置策略、各组件之间的关系

标签:

原文地址:http://www.cnblogs.com/xiangyangzhu/p/5256282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!