NameNode元数据管理机制
副本的生成一般有两种: 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的负荷