四、HDFS整体架构(下)

reference:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

5、Replica的数据放哪里?

  首先需要清楚的是数据副本放置的位置对于HDFS的可靠性和性能有非常大的影响,其次在选择副本放置策略的时候,应该可靠性、可用性和带宽利用率三个方面来权衡,HDFS目前的策略是机架感知策略(rack-aware replica placement policy),一个规模比较大的HDFS集群一般都运行在不同的机架上,机架与机架之间需要通过交换机通信,我们需要清楚的就是同一机架上的节点之间互相通信要优于不同机架之间的节点通信;
  NameNode通过Hadoop Rack Awareness来决定每一个DataNode属于哪一个机架(Rack id),大部分情况下,当raplicator factor等于3的时候,HDFS的放置策略是在编写器位于DataNode上时将一个副本放在本地计算机上,否则放在随机DataNode上,另一个副本放在另一个(远程)机架上的节点上,最后一个在同一个远程机架的不同节点上。如果raplicator factor大于3,那么剩余的副本就随机放置,只要满足每一个机架伤的副本数量小于(replicas - 1) / racks + 2即可,因为NameNode不允许同一个block在一个DataNode上存在多个副本。
  在HDFS支持了storage types and storage policies后,除了上述机架感之外,还会考虑相关DataNode有没有相关的storage policy,没有的话,NameNode回去寻找下一个DataNode,如果这样子没有找到足够的DataNode的话,那么就按照fallback storage再找一遍。

6、读取数据时,应该选择哪个Replication?

  为了最小化整体带宽消耗和读取延迟,HDFS会选择距离reader最近的数据分片所在的DataNode,如果同一机架上存在,则会选择同一机架上的DataNode,如果HDFS跨越多个数据中心,那么本地的数据中心将由于其它数据中心。

7、安全模式

  在刚启动的时候,NameNode会进入Safemode,这个时候不会发生数据复制,NameNode接受来自DataNode的HeartBeat和BlockReport,BlockReport中包含该DataNode所持有的block,每个block指定了一个最小数量的数据分片,当NameNode检入该最小数量的数据分片时,该block被认为是安全的。当NameNode检入安全的数据块数量达到可配置百分比的那个数量时,在过30秒,NameNode推出安全模式,然后去复制不够最小数量数据分片的数据。

8、文件系统元数据的持久化

  HDFS命名空间存储在NameNode中,NameNode使用EditLog来记录文件系统元数据的变化,NameNode使用本地文件系统的一个文件来记录这个EditLog,整个文件系统的命名空间(包括块到文件和块到文件系统属性的映射)被存储在一个叫做FsImage的文件中,这个FsImage文件也同样是存储在本地文件系统中;
  NameNode在内存中存储了文件系统的命名空间和blockMap,当NameNode启动(或者是检查点被某一个可配置的阀值出发)的时候,NameNode从磁盘读取EditLog和FsImage,然后在内存中合并它们,然后在刷盘,生成新的FsImage,然后截断EditLog,因为它已经持久化在新的FsImage中了,整个过程叫做checkpoint;
  DataNode将数据存放在本地文件系统中,当DataNode启动的时候,它扫描本地文件系统,生成一个HDFS数据块列表,然后发送给NameNode,这个过程叫做BlockReport。

9、通信协议

  所有HDFS通信协议都分层在TCP / IP协议之上。

10、常见的故障

  HDFS的设计目标是即使在出现故障时也能可靠地存储数据,常见的故障有三种:NameNode故障,DataNode故障和网络分区。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值