What is HDFS?
HDFS源自于2003年10月Google发表的一篇GFS论文,他是GFS的克隆版。HDFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。
HDFS基本可以认为是GFS的简化版,由于时间及应用场景等各方面的原因对GFS的功能做了一定的简化,大大降低了复杂度。
HDFS为了更好地服务于应用,提供了类似Linux命令的Shel接口和API接口。此外,HDFS还可以通过HTTP协议支持用户通过浏览器客户端对HDFS平台上的文件和数据进行检索。
经典传统分布式储存模式与HDFS存储模式的比较
分布式系统存储文件的特点:
文件太大,一个机器的空间不足,可以将文件分割为小块儿然后保存到多台机器上;另外,还可以在不同机器上对文件进行备份,避免因为机器损坏文件丢失。
传统的分布式存储模式也可以做到以上两点,但是存储一些问题:负载难以均衡。
HDFS的出现就是为了解决负载均衡。它会将文件切割成大小相同的块(Bolck),默认情况下是128MB。
Apache HDFS的特点
1)功能强大,操作简单、易用;
2)良好的扩展性;
3)高容错性;
4)支持流式数据访问;
5)适合PB级以上海量数据存储;
6)异构硬件平台间的可移植性。
HDFS的体系结构
HDFS采用master/slave架构。
一个HDFS集群由一个NameNode和一定数目的DataNode组成。
NameNode是一个中心服务器---master机,负责管理文件系统的命名空间及客户端对文件的访问;
DataNode是集群中的slave机,每个slave机充当一个node,启动一个DataNode的守护进程,负责管理本机上的存储。
关键词:Client、Metadata(元数据)、NameNode、DataNode、Block、Rack、Replication(复制)
HDFS的应用场景
基于HDFS的特性,可以将海量数据的存储工作交给HDFS。它支持结构化数据、半结构化数据、非结构化数据的均衡存储,即使是多源异构数据的归档数据(eg 来源于不同数据库、文本文件、网页、网络视频等数据),HDFS都能很好的、可靠的、均衡的存储在服务器集群的磁盘中。
当然,HDFS不是万能的,对用实时性要求比较高的数据文件,它会显得力不从心。另外,由于元数据是存储在NameNode内存中的,而内存是有限的,官网给出的参考值是一个Block元信息大约消耗150byte内存,那么一亿个Block就大约需要20GB内存。所以NameNode存储Block数量是有限的,根据Block切分策略和磁盘文件读取理论,HDFS不适合小文件的存储。
机架感知
***
HDFS安全模式
***
2019年12月18日