- 副本的生成一般有两种:
1.客户端直接生成多个副本,缺点就是需要网络传输,比较影响效率;或者是在存储过程中,出现某个副本失败,那么整个存储就是失败;
2.client只生成block,副本是异步进行生成;如果block没有复制成功,会向NN汇报,NN重新指定一个datanode;
- 为什么HDFS存储小数据会浪费?
因为datanode上不会变化,namenode会占用,namenode空间是一定的,如果存储多个小文件,会过多占用(无论大小占用namenode与数量有关好像)
- NN管理机制流程
- Client向NN申请上传文件;
- NN向Client返回DN;
- Client向DN写入block数据(分割是有client管理)
- NN元数据的存储,可以放到磁盘中,但是访问慢,放到内存中,如果NN党宕机,则数据都会丢失,如何解决这个问题?
//磁盘存储fsimage
//内存中用于client的查询,这样很快
//edits log
//内存需要与fsimage同步,保持数据一致性,是内存每存1条数据就更新到fsimage,还是隔一段时间在加?
在edits log存满之前进行把内存元数据与fsimage同步
//edits与内存是同步的,在edits存满时候与fsimage合并,他们的格式不一样,这个工作是由NN来操作吗,那么就增加了NN的负荷,因此具体的合并是由secondaryNamenode管理
//以下保证了断电时候不会丢失数据,对数据的可靠性比较高,fsimage有大量元数据,最新的在edits 有最新的,同时在内存中查询速度较快,但是这个也存在一个问题,就是宕机这段时间NN无法提供服务了。需要HA机制
- 元数据存储细节
- 什么时候checkpoint?
来源:oschina
链接:https://my.oschina.net/u/4434424/blog/3188414