1 概述
HDFS是分布式文件系统,具有高度容错能力,运行在廉价的机器上。HDFS提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。
2 HDFS特性
(1)可用于存储超大文件,如(GB,TB,PB)级别的文件。
(2)可运行在廉价的硬件之上,HDFS通过自身的容错机制来保证数据的安全性
(3)流式数据访问,支持一次写入、多次读取的高效访问模式。
(4)适合数据访问高吞吐量的应用场景,不适合要求低延时数据访问的应用场景。
(5)为了保证数据访问的高效性,HDFS不支持多个写入操作,也不支持在文件的任意位置进行修改,但不排除后续会支持这些操作。
本文讲解的是Hadoop2.x发行版
3 HDFS数据块
HDFS的数据块默认大小为128MB,之所以设置这么大的块占用空间,主要是为了减少磁盘的最小化寻址开销,HDFS上的文件会被切割为以块大小为单位的多个分块,为了保证数据的安全性,每个数据块都会被复制到多个服务节点中进行备份(默认为3个),通过应用程序也可以指定每个文件的副本数。如果发现一个块不可用,系统会从其他地方读取另一个副本块。
4 NameNode 和 DataNodes
HDFS属于master/slave架构,由一个名称节点(NameNode)与多个数据节点(DataNodes)构成。
(1)NameNode:存放元数据(名称,副本数、权限、块列表......),负责名称空间以及客户端(client)的访问
(2)DataNode:负责提供来自文件系统客户端的读取和写入请求,并且定期向NameNode发送他们所存储的块的列表信息。
NameNode的元数据中主要由镜像文件(fsimage)与编辑日志文件(edits)组成,需要说明的是元数据中并没有存储每个数据块所在的服务器节点,而是在启动HDFS集群的时候由每个DataNode节点自动上报数据信息给NameNode服务节点。
通过HDFS自带的离线查看工具来查看镜像文件与编辑日志文件
(1)查看fsimage镜像文件:$ hdfs oiv -p XML -i 镜像文件 -o 输出文件路径
(1)查看edits日志文件:$ hdfs oev -p XML -i 镜像文件 -o 输出文件路径
5 NameNode的容错机制
系统中NameNode是非常重要的,如果NameNode节点挂掉,或者NameNode的元数据毁坏,整个文件系统将无法正常使用,因此对NameNode的容错机制非常重要,Hadoop提供了两种保护措施。
(1)NameNode HA With QJM 或者 NameNode HA With NFS
(2)通过一个辅助节点及SecondaryNameNode来定期备份元数据
在NameNode失效后,为了更加快速的切换到NameNode的正常服务状态,一般会选择第一种机制,第一种机制的具体实现细节后续文章会在做讲解。
来源:oschina
链接:https://my.oschina.net/u/2842105/blog/1628179