标签:
HDFS是HADOOP中的核心技术之一——分布式文件存储系统。Hadoop的作者Doug Cutting 和Mike 是根据Google发布关于GFS 的研究报告所设计出的分布式文件存储系统。
一、HDFS设计的前提或者假设有6个:
二、HDFS的体系结构
HDFS是一个主/从结构(Master 和Slave ),包括一个NameNode 和多个DataNode ,NameNode负责管理系统的元数据,DataNode 存储实际的数据。客户端通过NameNode和DataNode的交互访问文件系统。客户端通过NameNode获取文件的元数据,而真正的文件I/O操作是直接和DataNode 进行交互。
NameNode负责管理文件系统的命名空间,记录文件块在每个DataNode上的位置和副本信息,协调客户端对文件的http://i.cnblogs.com/EditPosts.aspx?opt=1访问,记录命名空间内的改动或命名空间本身属性的变化。DataNode则负责所在物理节点傻瓜你的存储管理。
HDFS的数据都是“一次写入、多次读取”,典型的块的大小是64MB,HDFS文件通常被切分成64MB 的数据块(Block),每个数据块尽可能的分散的存储在不同的DataNode中。NameNode执行文件系统命名空间操作,比如打开,关闭、重命名文件和目录,还决定数据块到DataNode的映射。DataNode负责处理客户端的读写请求,依照NameNode的命令,执行数据的创建、复制、删除等操作。
假如客户端要访问一个文件,首先客户端先从NameNode获取到组成在文件的数据块的位置列表。即知道数据块被存储在哪些DataNode上 ;然后客户端直接从DataNode上读取文件数据。此过程中NameNode不参与文件的传输。
HDFS典型的部署是在一个专门的机器上运行NameNode,集群上其他机器各运行一个或多个DataNode。也可以在运行NameNode的机器上运行DataNode。NameNode使用事务日志(EditLog)来记录HDFS元数据的变化,使用映像文件(FsImage)存储文件系统的命名空间,包含文件的映射、文件的属性等。日志事务日志和映像文件都存储在NameNode的本地文件系统中,NameNode启动时,从磁盘中读取映像文件和事务日志,把事务日志的事务都应用到内存中的映像文件傻瓜你,然后将新的元数据刷新到本地磁盘的映像文件中,这样可以截去旧的事务日志,这个过程成为检查点(checkpoint)。
从上面的描述中可以看出NameNode是整个文件系统的核心,而且他只运行在一台机器上,那么如果这个机器挂掉,那整个文件系统都会崩溃。于是就存在了Secondary NameNode 节点,Secondary NameNode 周期地将事务日志(EditLog)中记录的对HDFS的操作合并到一个checkPoint中,然后清空EditLog 。所以Namenode重启就会载入最新的CheckPoint,并replayEditLog中记录的hdfs的操作。保证了HDFS 系统的完整性。
三、保障HDFS可靠性措施
HDFS设计的主要目标就是在故障情况下也能保证数据存储的可靠性,他主要从一下几个方面保证:
标签:
原文地址:http://www.cnblogs.com/xiangfeng/p/4230715.html