Hadoop之HDFS

Hadoop是Apache基金会研发的分布式系统基础架构,具体项目来源、发展历程随便上网查一查,一堆一堆的。不知道大家注意到没,市面上Hadoop书籍上面都是一只小象,据说是作者儿子的一个毛绒玩具,小孩子的创造力总是无穷的,才能有这么好听的名字,哈哈,开始,其实我研究的并不深,先是停留在原理性和了解性的阶段,并没有涉及代码层次。

Hadoop的中心思想是利用普通硬件组成集群,来替代性能高、价钱高的服务器,当然到了一个极限的话,价格再高也换不来高性能了,所以Hadoop
的出现很有必要。Hadoop主要是要解决两个方面的问题:存储运算。这篇文章主要是讲存储系统,即HDFS。

HDFS(Hadoop Distribute File System,Hadoop分布式文件系统)1.首先是运行在廉价的服务器上 2.需要保存多个副本(默认3个副本),提供容错机制,副本丢失会自动恢复 3.HDFS将文件分割成block,默认大小是64M,然后将block按键值对存储在内存中,若block划分太小,小文件太多的话,内存开销太大,所以HDFS适合处理大数据。

先给出一幅图,然后对图中进行解释:
HDFS

NameNode:名字节点,位于HDFS主端,指导从端的DataNode执行底层的I/O任务,是HDFS中最关键的一点,跟踪文件如何被分割成文件块,文件块被存储在哪些DataNode中等信息,监测整体运行是否正常。

DataNode:数据节点,存储数据,执行MapReduce运算(这个不属于HDFS范畴,不细说)

Secondary NameNode:不接收或记录HDFS的任何实时变化,仅与NameNode通信,按照时间间隔获取快照。

HDFS终究也是个文件系统,文件系统最主要还是离不开读写,无论底层怎么复杂,对用户都是透明的,我们可以大体看一下HDFS读文件的流程。
HDFS读文件

HDFS写文件,以创建新文件并保存为例。
HDFS保存