您的位置:首页 > 运维架构

Hadoop—NN-学习三

2016-01-29 23:39 190 查看
架构图

写入文件原理:

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可以解决这个问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: