发布日期:2015-12-07 11:17 来源: 标签: 云计算与大数据 Hadoop教程 HDFS角色 海量数据
对外部客户机而言,HDFS 就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构是基于一组特定的节点构建的,这是由它自身的特点决定的。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。
       Hadoop有许多元素构成。最底部是 Hadoop Distributed File System(HDFS),它存储Hadoop 集群中所有存储节点上的文件,与 HDFS 相关的服务有 NameNode、SecondaryNameNode 及 DataNode ;HDFS(对于本文)的上一层是MapReduce引擎,该引擎由JobTrackers和TaskTrackers组成(所以 MapReduce相关的服务有JobTracker和TaskTracker两种)。 
Hadoop 集群中有两种角色:master与slave,master又分为主master与次master。 
其中: 
1)主master同时提供NameNode、SecondaryNameNode及JobTracker三种服务; 
2)次master只提供SecondaryNameNode服务; 
3)所有slave可以提供DateNode或TaskTracker两种服务。 

HDFS 
      对外部客户机而言,HDFS 就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构是基于一组特定的节点构建的(参见图 5-1),这是由它自身的特点决定的。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。 
下图为hadoop 集群的简化视图

      存储在 HDFS 中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。这与传统的 RAID 架构大不相同。块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。HDFS 内部的所有通信都基于标准的TCP/IP协议。  

HDFS的三个重要角色 

上图为HDFS结构示意图 
上面这个图很经典,图中展现了整个HDFS三个重要角色:NameNode、DataNode和Client。 
      NameNode可以看作是分布式文件系统中的管理者,主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等。NameNode会将文件系统的Meta-data存储 在内存中,这些信息主要包括了文件信息、每一个文件对应的文件块的信息和每一个文件块在DataNode的信息等。 
DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data,同时周期性地将所有存在的Block信息发送给NameNode。 
Client就是需要获取分布式文件系统文件的应用程序。 
这里通过三个操作来说明他们之间的交互关系。 
1)文件写入 
a)Client向NameNode发起文件写入的请求。 
b)NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。 
c)Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。 
2)文件读取 
a) Client向NameNode发起文件读取的请求。 
b) NameNode返回文件存储的DataNode的信息。 
c) Client读取文件信息。 
3)文件Block复制 
a) NameNode发现部分文件的Block不符合最小复制数或者部分DataNode失效。 
b) 通知DataNode相互复制Block。 
c) DataNode开始直接相互复制。 

相关评论

专题信息
    Hadoop是Apache开源组织的一个分布式计算开源框架,在很多大型网站上都已经得到了应用,如亚马逊、Facebook和Yahoo等等。Hadoop框架中最核心的设计就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。本教程对Hadoop做了详解的介绍与讲解,教程中的实例能让大家更快的学习Hadoop,望大家多多支持中国站长网络学院。