HDFS体系结构

HDFS体系结构

  master/slave架构

  文件切分成块(128)

  namenode是主节点

  DataNode在本地文件系统存储文件块数据,以及块数据的校验

NameNode

  Namenode是一个中心服务器,单一节点,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问
文件操作,NameNode负责文件元数据的操作,DataNode负责处理文件内容的读写请求,数据流不经过NameNode,只会询问它跟那个DataNode联系
NameNode
  副本存放在那些DataNode上由NameNode来控制,根据全局情况做出块放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低带宽消耗和读取时延
NameNode全权管理数据块的复制,它周期性地从集群中的每个DataNode接收心跳信号和块状态报告(BlockReport)。接收到心跳信号意味着该DataNode节点工作正常。块状态报告包含了一个该    DataNode上所有数据块的列表。
DataNode
  一个数据块在DataNode上以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳
DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息
心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令,如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟NameNode没有收到某个DataNode 的心跳信息,则NameNode认为该DataNode节点已死亡不可用。
SecondaryNameNode
  辅助的NameNode
  周期性将EditsLog文件合并
  工作原理,如右图所示
工作流程
  secondarynamenode通知namenode切换edits文件
  secondarynamenode从namenode获得fsimage和edits(通过http)
  secondarynamenode将fsimage载入内存,然后开始合并edits
  secondarynamenode将新的fsimage发回给namenode
  namenode用新的fsimage替换旧的fsimage
什么时候checkpiont
  fs.checkpoint.period 指定两次checkpoint的最大时间间隔,默认3600秒。
  fs.checkpoint.size 规定edits文件的最大值,一旦超过这个值则强制checkpoint,不管是否到达最大时间间隔。默认大小是64M
数据损坏处理
  当DN读取block的时候,它会计算checksum;
  如果计算后的checksum,与block创建时值不一样,说明该block已经损坏。
  client读取其它DN上的block;NN标记该块已经损坏,然后复制block达到预期设置的文件备份数;
  DN在其文件创建后三周验证其checksum。

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

猜你喜欢

转载自www.cnblogs.com/sumboy/p/9067039.html
今日推荐