近来这几天一直在忙于Hbase的实验,也没有太静下心来沉淀自己,今天打算写一篇关于Hadoop1.0、Hadoop2.0与Yarn的文章,从整体上把握三者之间的联系,内容如有问题,欢迎留言指正!OK,进入本文正题……
在开始接触Hadoop的时候,也许大家对于Hadoop是下面的一个概念:Hadoop由两部分组成,一是负责存储与管理文件的分布式文件系统HDFS、二是负责处理与计算的MapReduce的计算框架。即Hadoop通过HDFS既能够存储海量的数据,又能够通过MapReduce实现分布式的一个计算,用一句话来概括Hadoop就是:Hadoop是适合大数据的分布式存储与计算的一个平台。
图1 Hadoop是适合大数据的分布式存储与计算的平台
在这里我们先看一下HDFS的体系结构:
图2 HDFS的体系结构图
HDFS的体系结构是一个主从式的结构,主节点NameNode只有一个,从节点DataNode有很多个,大家在这里面要注意:主节点NameNode与从节点DataNode实际上指的是不同的物理机器,即有一台机器上面跑的进程是NameNode,很多台机器上面跑的进程是DataNode ,也就是说服务器的角色是由其上面跑的进程的角色决定其是什么类型的服务器,不然大家都是一堆物理机器而已,对于这个概念大家务必要区分清楚。
接下来我们依次讨论HDFS中NameNode、SecondaryNameNode与DataNode在集群中的作用:
NameNode的作用:
●1>NameNode管理着整个文件系统,负责接收用户的操作请求
●2>NameNode管理着整个文件系统的目录结构,所谓目录结构类似于我们Windows操作系统的体系结构
●3>NameNode管理着整个文件系统的元数据信息,所谓元数据信息指定是除了数据本身之外涉及到文件自身的相关信息
●4>NameNode保管着文件与block块序列之间的对应关系以及block块与DataNode节点之间的对应关系
用一句话来概括我们的NameNode:NameNode在HDFS中是负责管理工作的。
DataNode的作用:
1>DataNode在HDFS中只做一件事情:存储数据,并且在HDFS中的文件是被切分成block块来进行存储的,这一点不同于我们的Windows,而在HDFS中之所以将文件切分成block块来进行存储,也是为了便于维护与管理。
大家要特别注意一下:在HDFS中,我们真实的数据是由DataNode来负责来存储的,但是数据具体被存储到了哪个DataNode节点等元数据信息则是由我们的NameNode来存储的。