标签:
1)文件切分成块(默认大小64M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默
认3)
2)NameNode 是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个
文件的块列表以及块所在的DataNode等等
3)DataNode 在本地文件系统存储文件块数据,以及块数据的校验和。
4)可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。
1)与Linux文件权限类似。
2)r: read; w:write; x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容。
3)如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是zhangsan。
4)HDFS的权限目的:阻止好人做错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁。
1)Namenode 是一个中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。
2)文件操作,NameNode 负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过NameNode,只会询问它跟那个DataNode联系,否则NameNode会成为系统的瓶颈。
3)副本存放在哪些DataNode上由 NameNode来控制,根据全局情况做出块放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低带块消耗和读取时延。
4)Namenode 全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。
1)一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳
2)DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。
3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode 的心跳,则认为该节点不可用。
4)集群运行中可以安全加入和退出一些机器
1)一个名字节点和多个数据节点
2)数据复制(冗余机制)
存放的位置(机架感知策略)
3)故障检测
数据节点
心跳包(检测是否宕机)
块报告(安全模式下检测)
数据完整性检测(校验和比较)
名字节点(日志文件,镜像文件)
4)空间回收机制
1)文件损坏 2)网络或者机器失败 3)NameNode挂掉
1)当DataNode读取block的时候,它会计算checksum
2)如果计算后的checksum,与block创建时值不一样,说明该block已经损坏。
3)Client读取其它DN上的block。
4)NameNode标记该块已经损坏,然后复制block达到预期设置的文件备份数。
5)DataNode 在其文件创建后三周验证其checksum。
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