大数据我爱编程大数据

hadoop(5)--NameNode元数据管理(2)

2018-04-09  本文已影响172人  ROCK_杰哥

上次分享了写数据的过程,那么有个问题:NameNode是怎么处理高并发的客户端的请求的,NameNode响应为什么这么快?

带着问题思考:①,如果数据放到内存中,那么当断电的时候,数据就没有办法恢复了,这一种肯定不是hdfs保存数据,更不是NameNode保存元数据的策略

②,如果写入硬盘,那怎么可能响应快呢,这一种也pass

③,内存+硬盘【redis集群数据也是这样的,在分布式的文件系统中这种思想是相通的】

那么,画一个图来说明内存+硬盘的这种存储策略

1,向NameNode申请写资源

2,NameNode将数据暂时记录到edits log中

3,NameNode返回可用的DataNode

4,客户端向DataNode写入文件

5,客户端通知NameNode已经写完了

6,NameNode将之间记录到edits log中的数据同步到内存中

这里已经结束了,但是edits log如果满了怎么办呢?

接下下就是NameNode的同步数据的问题,要保证在断电的时候,数据可以完整的恢复?

当edits log文件满了【64M】或者是间隔3600秒,也就是1个小时,(这两个参数都是可以配置的),就会进行合并,就是将edits log中的数据,追加到fsimage文件之后,【这里其实是产生了新的文件,暂时可以理解为追加】,并把edits log中的数据清除。

这样即使断电可以一通过fsimage+edits log进行恢复,正常情况客户端读取的是内存中的数据,所以快,这就是高并发,响应支持的原因。

那么NameNode是怎么做到高可用的呢?这个问题留着明天分享,早早休息

望指正,不吝赐教!

上一篇 下一篇

猜你喜欢

热点阅读