Hadoop 简称HDFS,是一个框架,目前兼容性最好的标准级文件分布系统之一,当数据集的大小超过一台独立物理计算机的存储能力时,就有必要对它进行分区并存储到若干台单独的计算机上。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。
只要有文件管理,就得有文件系统。当数据集的大小超过一台独立物理计算机的存储能力时,就有必要对它进行分区并存储到若干台单独的计算机上。HDFS以流处理访问模式来存储文件的。
HDFS就是下面这个抽象图
分布式的文件抽象能够带来的优势是:
1、一个文件可以大于每个磁盘
2、文件不用全在一个磁盘上。
3、简化了存储子系统的设计。
其实,HDFS对与用户来说,可以直接看成是一个巨大的硬盘
HDFS和文件系统相似,用fsck指令可以显示块信息:% hadoop fsck / -files -blocks
HDFS是基于主从结构(master/slaver)构件:
在HDFS的主从结构中,有两类节点 namenode和datanode。他们以管理者-工作者模式工作。
子节点才是HDFS真正的存储和检索地点,如果想在主节点做整个集群数据的索引并检索的话,请考虑可行性,毕竟HDFS不擅长做巨型索引。
客户端(client)代表用户通过与namenode和datanode交互访问整个文件系统。可以是具体程序,也可以是应用。
所以,用户在编程时,无需知道namenode和datanode也可以实现功能。
没有datanode,文件系统不会崩溃,文件系统只是无法存储文件,也不会丢失数据。没有namenode,文件系统会崩溃,文件系统上的所有文件将丢失(无法读出,因为无法定位元数据块的位置,也就无法根据datanode的块来重构文件)。