一. Hadoop的知识架构图如下所示:
二. HDFS是什么?
1、HDFS是Hadoop生态圈中的分布式文件存储系统,主要是来源于Google 的GFS论文;
全称:
Hadoop Distributed File System。
2、
易于扩展的分布式文件系统。
3、
运行在大量普通廉价机器上,提供容错机制。
三. HDFS 的优缺点
1、优点:
具有高容错性:数据通过保存多个副本,当副本丢失后会自动恢复;
适合批处理:移动计算而非移动数据,数据位置暴露给计算框架;
适合大数据处理:TB级甚至PB级数据的处理,10K+节点规模的数据;
流式数据访问:一次性写入多次读取;保证了数据的一致性;
主要为批处理应用设计,而非交互式应用,看重数据访问的吞吐量而非访问延迟。
可构建在廉价机器上:通过多副本提供可靠性,提供容错与副本恢复机制;
2、缺点:
不适合低延迟数据访问:比如毫秒级,低延迟高吞吐率;
不适合小文件存取:由于文件的元数据得存储在nameNode中,大量的小文件会占据nameNode的大量内存,
寻道时间超过读取时间;
不适合并发写入、文件随机修改:一个文件只有一个写者,不可以随便修改,只可追加;
四. HDFS的基本架构与原理
在看HDFS的原理前先了解如下问题:
客户端如何访问HDFS中一个文件呢?具体流程如下。
1)首先从Namenode获得组成这个文件的数据块位置列表。
2)接下来根据位置列表知道存储数据块的Datanode。
3)最后访问Datanode获取数据。
1、HDFS的基本架构
hdfs部分由NameNode、SecondaryNameNode和DataNode组成。
NameNode是对全局数据的名字信息做管理的模块,
SecondaryNameNode是它的从节点,以防挂掉,
DataNode是真正的在每个存储节点上管理数据的模块
。
其中:NameNode与SecondaryNameNode的关系如下图所示:
文字解说:
NameNode
(
NN
)是
HDFS
里的中心管理节点,
NN
上的元数据全内存化,元数据主要分为两个部分:
(
1
)
文件的元信息,如大小、时间戳、包含的
block
等;
(
2
)
block
到
DataNode
(
DN
)的映射关系。
前者持久化在
NN
本地,而后者则是在集群里
DN
启动时,由
DN
汇报上来。
存储节点管理:DN在启动时,会向NN汇报存储的block信息,并周期性的向NN发送心跳信息,
NN超过一定时间没有收到DN的心跳,就认为DN发生故障。
HDFS的架构图如下所示:
参考文档
HDFS对应的知识库:
http://lib.csdn.net/hadoop/node/318
HDFS设计思想:
https://yq.aliyun.com/articles/8942