TOP

2、Hdfs架构设计与原理分析(一)
2020-02-26 11:34:35 】 浏览:77次 本网站的内容取自网络,仅供学习参考之用,绝无侵犯任何人知识产权之意。如有侵犯请您及时与本人取得联系,万分感谢。
Tags:Hdfs 架构 设计 原理 分析

 

 

 

1.Hadoop架构

Hadoop由三个模块组成:分布式存储HDFS、分布式计算MapReduce、资源调度引擎Yarn

2.HDFS体系架构

2.1NameNode

??? NameNode负责:文件元数据信息的操作以及处理客户端的请求
???NameNode管理:HDFS文件系统的命名空间NameSpace。
???NameNode维护:文件系统树(FileSystem)以及文件树中所有的文件和文件夹的元数据信息(matedata)维护文件到块的对应关系和块到节点的对应关系
???NameNode文件:namespace镜像文件(fsimage),操作日志文件(edit log)这些信息被Cache在RAM中,当然这两个文件也会被持久化存储在本地硬盘。
???NameNode记录:每个文件中各个块所在的数据节点的位置信息。但它并不永久保存块的位置信息,因为这些信息在系统启动时由数据节点重建。从数据节点重建:在nameNode启动时,DataNode向NameNode进行注册时发送给NameNode

2.1.1元数据信息

???文件名,文件目录结构,文件属性(生成时间,副本数,权限)每个文件的块列表。以及列表中的块与块所在的DataNode之间的地址映射关系 在内存中加载文件系统中每个文件和每个数据块的引用关系(文件、block、datanode之间的映射信息) 数据会定期保存到本地磁盘,但不保存block的位置信息而是由DataNode注册时上报和在运行时维护

2.1.2NameNode文件操作

    NameNode负责文件元数据的操作 ,DataNode负责处理文件内容的读写请求,数据流不经过NameNode,会询问它跟那个DataNode联系

2.1.3NameNode副本

    文件数据块到底存放到哪些DataNode上,是由NameNode决定的,NN根据全局情况做出放置副本的决定读取文件的时候,NN尽量让client读取离它最近的datanode上的副本,降低带宽消耗和读取时延

2.1.4NameNode心跳机制

         全权管理数据块的复制,周期性的接受心跳和块的状态报告信息(包含该DataNode上所有数据块的列表)
        若接受到心跳信息,NN认为DN工作正常,如果在10分钟后还接受到不到DN的心跳,那么NN认为DN已经宕机 这时候NN准备要把DN上的数据块进行重新的复制。 块的状态报告包含了一个DN上所有数据块的列表,blocks report 每个1小时发送一次

2.1.5NameNode容错机制

???? 没有Namenode,HDFS就不能工作。事实上,如果运行namenode的机器坏掉的话,系统中的文件将会完全丢失,因为没有其他方法能够将位于不同datanode上的文件块(blocks)重建文件。因此,namenode的容错机制非常重要,Hadoop提供了两种机制。
????第一种方式是将持久化存储在本地硬盘的文件系统元数据备份。Hadoop可以通过配置来让Namenode将他的持久化状态文件写到不同的文件系统中。这种写操作是同步并且是原子化的。比较常见的配置是在将持久化状态写到本地硬盘的同时,也写入到一个远程挂载的网络文件系统(NFS)。
????第二种方式是运行一个辅助的Namenode(SecondaryNamenode)。 事实上SecondaryNamenode并不能被用作Namenode它的主要作用是定期的将Namespace镜像与操作日志文件(edit log)合并,以防止操作日志文件(edit log)变得过大。通常,SecondaryNamenode 运行在一个单独的物理机上,因为合并操作需要占用大量的CPU时间以及和Namenode相当的内存。辅助Namenode保存着合并后的Namespace镜像的一个备份,万一哪天Namenode宕机了,这个备份就可以用上了。
????但是辅助Namenode总是落后于主Namenode,所以在Namenode宕机时,数据丢失是不可避免的。在这种情况下,一般的,要结合第一种方式中提到的远程挂载的网络文件系统(NFS)中的Namenode的元数据文件来使用,把NFS中的Namenode元数据文件,拷贝到辅助Namenode,并把辅助Namenode作为主Namenode来运行。

2.1.6NameNode物理结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.7NameNode文件结构

在这里插入图片描述
NameNode的存储目录
在这里插入图片描述

2.2DataNode

???? 一个集群可能包含上千个DataNode节点,这些DataNode定时和NameNode进行通信,接受NameNode的指令 为了减轻NameNode的负担,NameNode上并不永久保存哪个DataNode上有哪些数据块的信息,而是通过DataNode启动时的上报来更新NameNode上的映射表。
????根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送所存储的块(block)的列表,数据块在DataNode进程所在的节点上以文件的形式存储在本地磁盘上 ,一个是数据本身 ,一个是元数据(数据块的长度,块数据的校验和,以及时间戳),维护blockid与DataNode之间的映射信息(元信息)

2.2.1DataNode工作机制

????datanode启动时,每个datanode对本地磁盘进行扫描,将本datanode上保存的block信息汇报给namenode namenode在接收到的block信息以及该block所在的datanode信息等保存在内存中。
DataNode启动后向NameNode注册,通过后周期性(1小时)的向NameNode上报所有的块信息.
????(1)通过向NameNode发送心跳保持与其联系(3秒一次),心跳返回结果带有NN的命令 ,返回的命令为:如块的复制,删除某个数据块……
????(2)如果10分钟没有收到DataNode的心跳,则认为其已经lost,并copy其上的block到其它DataNode
????(3)DN在其文件创建后三周进行验证其checkSum的值是否和文件创建时的checkSum值一致

2.2.2DataNode读写操作

????集群中的每个

请关注公众号获取更多资料


2、Hdfs架构设计与原理分析(一) https://www.cppentry.com/bencandy.php?fid=57&id=277221

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇怎么更改當前的USERENV('LANG.. 下一篇Hadoop学习之路(7)MapReduce自定..

评论

验 证 码:
表  情:
内  容: