分布式文件系统之DFS复制、命名空间和NameNode

什么是分布式文件系统?

百度百科:

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(可简单的理解为一台计算机)相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。

意思就是,原本存在本地的资源现在通过计算机网络可以存在其他的计算机上。也不用管这文件到底被存在哪个节点了,反正当你需要它的时候,它就在那里。

主流分布式文件系统:① GFS: Google File System for Google's MapReduce;

                                   ② HDFS: Hadoop Distributed File System for Hadoop;

那分布式文件系统是咋工作的呢?

技术一:DFS复制

  • 文件数据依据 二进制 被拆分进 计算机网络 中的 blocks
  •  block size是固定的,通常为128M;且,存满一个block 1 (128M),才会存下一个block 2 (128M),以此类推
  • 每一个block是重复存在(通常重复3次)于计算机网络中的不同计算机(DataNode),以支持容错

举个栗子:假设,计算机网络里有3个节点。一个200M的文件,会先被拆分进block 1(128M), block 2(72M)。然后每个block被复制3遍,我们得到6个blocks: block 1-1,block 1-2,block 1-3,block 2-1,block 2-2,block 2-3。接下来这6个blocks会被放进3个节点中,比如节点1分到 block 1-1,block 2-2;节点2分到block 1-3,block 2-1;节点3分到block 1-2,block 2-3。这种情况下,如果节点1的block 1-1出现failure, 用户还是可以访问到block 1-3和block 1-2。

技术二:DFS命名空间

通过上文我们知道了,一个文件通过DFS复制技术会拆分进多个且有重复性的blocks。但是咱本意只是想访问这个文件,如果还得要关心哪个block在哪个节点,怎么分的,那可就太累了。所以,为了跳过这些不重要的细节,只呈现出统一的集中的一个文件视图给用户,命名空间由此而生。

那命名空间是怎么工作的呢? ----->  将文件有逻辑的存储于文件系统树的不同层级中

扫描二维码关注公众号,回复: 11084852 查看本文章

DFS命名空间的管理者是NameNode,维护着文件系统树及整棵树内所有的文件和目录。

又出现新概念了,NameNode又是什么?

以HDFS为例,HDFS集群包含两类节点:NameNode(管理者头头) 和 DataNode(工作者)。管理者只能有一个,但是工作者可以有好多个。NameNode主要负责就是负责管理HDFS,比如上文提到的命名空间,还有管理block。而DataNode主要就是一个听NameNode命令来存储文件的‘工具Node’,在一个文件被分割成多个block之后,就会被存储在这些‘工具Node’上。

就是,当用户来读文件啦,然后这个文件被分割成blocks啦,然后被DataNode们存储啦,然后NameNode跟客户端说 “诺,这个block在这个DataNode,那个block在那个DataNode”,然后客户端就去找这些DataNode啦,然后文件就被读取啦。

如果,当用户来写入文件啦,然后客户端来找NameNode说要写文件啦,然后NameNode就在命名空间里创建新文件啦,然后拿着顺序单跟客户端说 “诺,这个block要写进这个DataNode,那个block要写进那个DataNode",然后客户端就去找第一个DataNode啦,然后DataNode们就按顺序一个一个写入啦,然后一个传一个最后告诉客户端“我写好啦”,所以文件就被写好啦。

这一整套的工作流程下来,NameNode看起来是特别重要的样子,所以让我们来围观一下管理者是咋工作的。

NameNode主要包含两类文件:

1. fsImage (filesystem image):把文件和目录的元数据信息持久化地存储到fsimage文件中,每次启动时从中将元数据加载到内存中构建目录结构树,之后的操作记录在edits log中

2.edits (edit log) :记录每次变化

通过调用FSImage和FSEditLog,可以从NameNode本地磁盘读取元数据信息和向本地磁盘写入元数据信息

这NameNode这么重要,那它要是凉了...岂不是gg...

备胎节点上线:Secondary NameNode

备胎必备品质:① 定时关心:定时对NameNode进行备份;② 崩溃时的依靠:NameNode崩溃后,将之前获得fsimage和edits重新合并之后发给NameNode

备胎不可少啊!!!

早上好啊。(๑•̀ㅂ•́)و✧ | Good Good Study | Day Day No Hair |

与大家共勉!

发布了11 篇原创文章 · 获赞 0 · 访问量 235

猜你喜欢

转载自blog.csdn.net/weixin_44900533/article/details/105549457
今日推荐