Hadoop权威指南-ch3 HDFS(1)

注:本文涉及书中3.1~3.2小结

1. HDFS的特点

1. HDFS以流式数据访问模式来存储超大文件,运行于商用硬件集群上。

何为“流式数据访问”???

答:HDFS的构建思路是“一次写入,多次读取”,这是最高效的访问模式。数据集通常由数据源生成,或从数据源复制而来,接着长时间在此数据集上进行各种分析,每次分析都将涉及该数据集的大部分甚至全部。

2. HDFS是为高数据吞吐量应用优化的,这可能会以提高实际延迟为代价。因此,对于低延迟的访问需求,HBase是更好的选择。

3. HDFS不适合于大量的小文件,因为文件系统所能存储的文件总数受限于namenode的内存容量。

4. HDFS不适用于多用户的写入,也不适用于任意修改文件

2. 数据块

单一磁盘上的文件系统:每个磁盘都有默认的数据块大小,一般为512字节,这是磁盘进行数据读/写的最小单位。构建于单个磁盘之上的文件系统通过磁盘块来管理该文件系统中的块,该文件系统块的大小可以是磁盘块的整数倍。

HDFS也有块(block)的概念,默认为64MB。HDFS上的文件也被划分为块大小的多个分块(chunk),作为独立的存储单元。对于HDFS中小于一个块大小的文件不会占据整个块的空间。

HDFS将文件分块的好处,详见本书3.2.1小结。

HDFS中fsck指令可以显示块信息。

3. namenode和datanode

HDFS集群有两类节点以管理者-工作者模式运行:一个namenode(管理者)和多个datanode(工作者)。

客户端(client)代表用户通过与namenode和datanode交互来访问整个文件系统。

namenode管理文件系统的命名空间,维护文件系统树及整棵树内所有的文件和目录。它在内存中保存文件系统中每个文件和每个数据块的引用关系。

datanode是文件系统的工作节点,它们根据需要存储并检索数据块,且定期向namenode发送它们所存储的块的列表。

没有namenode,文件系统将无法使用。因此,实现namenode的容错非常重要,Hadoop为此提供了两种机制:一种是备份那些组成文件系统元数据持久状态的文件;另一种是运行一个辅助的namenode,但不把它作为namenode使用。

4. 联邦HDFS

Hadoop2.x系列引入联邦HDFS,允许系统通过添加namenode实现扩展,也就是说允许多个namenode的存在,其中每个namenode管理文件系统命名空间中的一部分。

集群中datanode要注册到每个namenode

5. HDFS的高可用性

Hadoop2.x之前,如果namenode失效,需要进行namenode的冷启动。


冷启动 VS 热启动

通常来说,启动方式有两种:冷启动和热启动。

1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。

2、热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。


Hadoop2.x在HDFS中增加了对高可用性(HA)的支持:配置了一对“活动-备用”(active-standby)namenode。当活动namenode失效,备用namenode就会接管它的任务并开始服务于客户端,不会有任何明显的中断。这一过程由系统中的一个实体管理器——故障转移控制器(failover-controller)来实现,故障切换对用户来说是透明的,通过配置文件实现。

如果活动namenode和备用namenode均失效,管理员可以申明一个备用namenode并实现冷启动。

你可能感兴趣的:(Hadoop权威指南-ch3 HDFS(1))