热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hadoop初识一(HDFS三进程理解)

1、概念hadoop从广义上说指的是依托于ApacheHadoop项目的整个生态圈,包括hdfs、spark、sqoop、flume等等。狭义上说就是指的是ApacheHadoop

1、概念

hadoop从广义上说指的是依托于Apache Hadoop项目的整个生态圈,包括hdfs、spark、sqoop、flume等等。狭义上说就是指的是Apache Hadoop这一个项目。现阶段学习的内容以hadoop这一个项目为核心,所以下面的内容都基于狭义上的hadoop,其实更准确的描述就是基于HDFS。

2、HDFS框架

        HDFS 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和SecondaryNameNode.

《hadoop-初识一(HDFS三进程理解)》

3、HDFS组成进程简介

HDFS(Hadoop分布式文件系统)包括NameNode、DataNode、SecondaryNode三个进程。     

 NameNode

        NameNode是HDFS的命名空间,里面存储着整个HDFS的所有文件的元数据信息,这些信息都会加载到内存中,元数据信息分为两部分,第一部分是文件系统树及整棵树内所有的文件和目录,第二部分是每个文件的各个组成块所在的数据节点信息。第一部分会落地形成文件(命名空间镜像文件和编辑日志文件)永久保存,第二部分的信息是在HDFS启动时,DataNode自动报送给NameNode,所以这个不会永久保存。元数据格式如下(/test/a.log是在hdfs文件系统中的路径,3是这个文件的副本数(副本数可以通过在配置文件中的配置来修改的)。在hdfs中,文件是进行分块存储的,如果文件过大,就要分成多块存储,每个块在文件系统中存储3个副本,以上图为例,就是分成blk_1和blk_2两个块,每个块在实际的节点中有3个副本,比如blk_1的3个副本分别存储在h0,h1,h3中):

《hadoop-初识一(HDFS三进程理解)》

简单元数据存储逻辑图(不用较真,只是为了表达为什么元数据的存储逻辑是现在这样):

《hadoop-初识一(HDFS三进程理解)》

DataNode

文件块( block): 最基本的存储单位。 对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block。 HDFS默认Block大小是128MB, 因此,一个256MB文件,共有256/128=2个Block. 

与普通文件系统不同的是,在 HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间, 但是会占用一个块。

        DataNode是文件系统的工作节点,它会根据需要存储并检索数据块,受NameNode调度,并且定期向NameNode发送该DataNode上存储的块的列表信息。一个数据块在Datanode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。

《hadoop-初识一(HDFS三进程理解)》

SecondaryNode

             SecondaryNode是辅助NameNode,它是用来定期合并NameNode产生的编辑日志(edits.log)和命名空间镜像文件(fsImage),以防止edits.log过大。SecondaryNameNode一般要在另一台机器上运行,因为它需要占用大量的CPU时间与namenode相同容量的内存才可以进行合并操作。它会保存合并后的命名空间镜像的副本,并在namenode发生故障时启用。

《hadoop-初识一(HDFS三进程理解)》


推荐阅读
author-avatar
赵丽宏67171
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有