Hadoop—NN-学习三

来源:互联网 发布:网络教育怎么上课 编辑:程序博客网 时间:2024/05/16 23:01


架构图


写入文件原理:

1、  客户端要存文件,先找namenode,namenode返回信息(查询元数据),如果不存在,就给信息可以存,并分配datanode存block。


2、  客户端收到信息,将数据按照NN的分配分别存入datanode(这里要注意保留副本个数,存副本的方式有两种

第一、客户端写入N个副本全部成功才算成功。

第二、写一份成功就算成功,剩下的两个副本由此datanode1向一个datanode2拷贝,datanode2向datanodeN拷贝,如果其中失败他会向NN汇报,然后NN再指定datanode1或者datanode2向其他datanode拷贝)。


注意:写入副本的时候还要按机架(看架构图)

存储大量的小文件,浪费元数据的空间,效率低。

一个block占150byte,差不多1万条才1条。1千万条才1G。

3、  namenode管理元数据原理

如何解决快速响应?

1、  当一个客户端写入文件时,namenode记录一个log条目(edits log)。

2、  Namenode分配datanode,返回信息。

3、  Client开始向datanode写,当写完一份client向NN发过去信息说我写完了。

4、  NN在内存中写入这次上传抄作的元数据信息。

5、  内存和fsimage是互为镜像的,当editslog满的时候,必须把edits log和fsimage合并。


合并过程:

合并是由SN来操作的。

a、当edits条目达到阈值时,通知SN做checkpoint操作。

b、停止往edits log文件中写数据。

C、SN下载fsimage和edits log。

d、进行合并。

e、上传NN。

f、把新的镜像替换到老的。同时把edits log删掉,并重命名。


默认触发时间(值都可以修改。)


查看文件,



当然这种架构也不是100%,万一checkpiont宕机的时候怎么办?

HA可以解决这个问题。


 

0 0