Hadoop学习日志之HDFS文件系统

        学习Hadoop的时候,我们必须了解什么它的两大核心:HDFS分布式文件存储系统和MapReduce对分布式任务处理的支持。

        HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode(NN)和若干DataNode(DN)组成的。其中NameNode作为主控制服务器,负责管理HDFS文件系统的命名空间,记录文件数据在每个DataNode节点上的位置和副本信息,协调客户端(Client)对文件的访问/操作,以及记录命名空间内的改动或命名空间本身属性的改变;集群中的DataNodeDataNode是数据存储节点,负责自身所在物理节点上的数据存储管理。HDFS允许用户以文件的形式存储数据。从内部来看,文件被分成若干个数据块(默认大小是64MB),而且这若干个数据块存放在一组DataNode上。下图给出了HDFS架构设计示意图。

        NameNode执行文件系统的命名空间操作,比如打开、关闭、重命名文件或目录等,它也负责数据块到具体DataNode的映射。DataNode负责处理文件系统客户端的文件读写请求,并在NameNode的统一调度下进行数据块的创建、删除和复制工作。客户端操作数据,只通过NameNode获取DataNode节点的物理位置,对于写/读数据的具体操作,NameNode是不会参与的,全部由DataNode负责。

HDFS读取文件操作:

HDFS写文件操作:

这里写图片描述        由于HDFS中只有一个NameNode节点,所有存在单点问题,即如果该NameNode节点宕机,那么HDFS就会出现问题,数据可能丢失。解决办法是启动一个SecondaryNameNode或者将NameNode数据写出到其它远程文件系统中。

HDFS可靠性保障有以下几点:

  • 冗余备份。将数据写入到多个DataNode节点上,当其中某些节点宕机后,还可以从其他节点获取数据并复制到其他节点,使备份数达到设置值。dfs.replication设置备份数。
  • 副本存放。HDFS采用机架感知(Rack-aware)的策略来改进数据的可靠性、可用性和网络宽带的利用率。当复制因子为3时,HDFS的副本存放策略是:第一个副本放到同一机架的另一个节点(执行在集群中)/随机一个节点(执行在集群外)。第二个副本放到本地机架的其他任意节点。第三个副本放在其他机架的任意节点。这种策略可以防止整个机架失效时的数据丢失,也可以充分利用到机架内的高宽带特效。
  • 心跳检测。NameNode会周期性的从集群中的每一个DataNode上接收心跳包和块报告,NameNode根据这些报告验证映射和其他文件系统元数据。当NameNode没法接收到DataNode节点的心跳报告后,NameNode会将该DataNode标记为宕机,NameNode不会再给该DataNode节点发送任何IO操作。同时DataNode的宕机也可能导致数据的复制。一般引发重新复制副本有多重原因:DataNode不可用、数据副本损坏、DataNode上的磁盘错误或者复制因子增大。
  • 安全模式。在HDFS系统的时候,会先经过一个完全模式,在这个模式中,是不允许数据块的写操作。NameNode会检测DataNode上的数据块副本数没有达到最小副本数,那么就会进入完全模式,并开始副本的复制,只有当副本数大于最小副本数的时候,那么会自动的离开安全模式。DataNode节点有效比例:dfs.safemode.threshold.pct(默认0.999f),所以说当DataNode节点丢失达到1-0.999f后,会进入安全模式。
  • 数据完整性检测。HDFS实现了对HDFS文件内容的校验和检测(CRC循环校验码),在写入数据文件的时候,也会将数据块的校验和写入到一个隐藏文件中()。当客户端获取文件后,它会检查从DataNode节点获取的数据库对应的校验和是否和隐藏文件中的校验和一致,如果不一致,那么客户端就会认为该数据库有损坏,将从其他DataNode节点上获取数据块,并报告NameNode节点该DataNode节点的数据块信息。
  • 回收站。HDFS中删除的文件先会保存到一个文件夹中(/trash),方便数据的恢复。当删除的时间超过设置的时间阀后(默认6小时),HDFS会将数据块彻底删除。
  • 映像文件和事务日志。这两种数据是HDFS中的核心数据结构。

参考:Hadoop学习日志之HDFS的主从结构 - 爱码网 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值