hdfs详解之架构、SNN和副本放置策略

2019-07-07  本文已影响0人  吃货大米饭

1.HDFS架构

HDFS架构

HDFS是一个主从架构。
Rack代表机架
一个机架一般是10台服务器,或者是5台带GPU的服务器。
在CDH中一般不会让机架发挥作用,默认都是default机架。

1、NN:名称节点
存储:文件系统的命名空间
a.文件名称
b.文件目录结构
c.文件属性(权限、创建时间、副本数)
d.文件对应的那些块(副本块)--->块对应在哪些DN节点上
不会持久化存储这个map映射关系,一般是集群启动和运行时。
dn定期发送blockreport给NN,那么NN就在内存中动态维护这种映射关系
主要作用:管理文件系统的命名空间

2、DN:数据节点
存储:数据块和数据块校验
与NN通信
a.每隔3秒发送一个心跳包,dfs.heartbeat.interval参数
b.每隔6小时发送一次blockreport 块报告,dfs.blockreport.intervalMsec 21600000ms=6小时。
主要作用: 读写文件的数据块

3、SNN:第二数据节点
主要作用: 定期合并NN节点的fsimage+editlog为新的fsimage,推送给NN,简称检查点 checkpoint。
一个小时一次,或者达到1000000次事务
dfs.namenode.checkpoint.period 3600s
dfs.namenode.checkpoint.txns 1000000

2.SNN合并NN节点的fsimage+editlog为新的fsimage,推送给NN具体流程

NN:

edits_0000000000000000404-0000000000000000404
edits_0000000000000000405-0000000000000000406 拷贝editlog
edits_inprogress_0000000000000000407 正在写的日志
fsimage_0000000000000000404       拷贝fsimage 
fsimage_0000000000000000404.md5
fsimage_0000000000000000406
fsimage_0000000000000000406.md5

SNN:

edits_0000000000000000208-0000000000000000403
edits_0000000000000000405-0000000000000000406
fsimage_0000000000000000404 包含了过往的所有的editlog001-404
fsimage_0000000000000000404.md5
fsimage_0000000000000000406
fsimage_0000000000000000406.md5
2019-07-07_155609.png

具体流程:
1.滚动新的editlog文件 edits_inprogress_0000000000000000407
2.将edits_0000000000000000405-0000000000000000406。fsimage_0000000000000000404 拷贝到snn节点
3.合并为新的image fsimage_0000000000000000406
4.将检查点的fsimage_0000000000000000406文件推送给nn
5.滚动edits_inprogress_0000000000000000407 写满,就滚动到下一个editlog 比如edits_inprogress_0000000000000000408。

3.副本放置策略

第一个副本:
提交节点为DN,自己写一份;
否则为集群外提交,则随机挑选一个不太慢、cpu不太忙的节点上

第二个副本:
放置在于第一个副本的不同机架的节点上

第三个副本:
与第二个副本相同机架的不同节点上

上一篇 下一篇

猜你喜欢

热点阅读