Hadoop的组件_HDFS核心概念_第二章
备注:
如果在阅读的过程中,碰到了不懂的概念可自行查询,或者看 4.HDFS 其他知识点拓展,进行查看是否有您需要的概念解释,希望能够帮助到您!祝学习愉快!
1.HDFS前言
HDFS是分布式文件系统 /(分布式文件管理系统),主要用来解决海量数据的存储问题
在多台机器上管理,(服务器上系统一般装的Linux)提供读取,写入,查看目录信息服务
- 设计思想: 运行于商业硬件上/普通商用机器 , 分而治之,即将大文件,大批量文件,分布式的存放于大量服务器上。以便于采取分而治之的方式对海量数据 (TB或者是PB级别的数据量) 进行运算分析。
- 在大数据系统架构中的应用: 为各类分布式运算框架(MapReduce,Spark,Tez,Flink,…)提供数据存储服务。
- 重点概念: 数据块/副本,负载均衡,心跳机制,副本存放策略,元数据/元数据管理,安全模式,机架感知…
2.HDFS的概念和特性
2.1 HDFS设计思路
HDFS 被设计成用来使用低廉的服务器来进行海量数据的存储,那是怎么做到的呢?
1.大文件被切割成小文件(小文件指副本或者可以称之为‘block’,默认切割3个),使用分而治之的思想 让很多服务器对同一个文件进行联合管理
2. 每个小文件做冗余备份,并且分散存到不同的服务器,做到高可靠不丢失
2.2 HDFS 适合的应用类型
1)可构建在廉价机器上
通过多副本提高可靠性,提供了容错和恢复机制
2) 高容错性
数据自动保存多个副本,副本丢失后,自动恢复
3) 适合批处理
移动计算而非数据,数据位置暴露给计算框架
4) 适合大数据处理
GB、TB、甚至 PB 级数据,百万规模以上的文件数量,10K+节点规模
5) 流式文件访问
一次性写入,多次读取,保证数据一致性
2.3 HDFS 不适合的应用类型
有些场景不适合使用HDFS来存储数据。下面列举几个:
1) 低延时的数据访问
对延时要求在毫秒级别的应用,不适合采用HDFS。HDFS是为高吞吐数据传输设计的,因此可能牺牲延时HBase更适合低延时的数据访问。
2)大量小文件
文件的元数据(如目录结构,文件block的节点列表,block-node mapping)保存在NameNode的内存中, 整个文件系统的文件数量会受限于NameNode的内存大小。
经验而言,一个文件/目录/文件块一般占有150字节的元数据内存空间。如果有100万个文件,每个文件占用1个文件块,则需要大约300M的内存。因此十亿级别的文件数量在现有商用机器上难以支持。
3)多方读写,需要任意的文件修改
HDFS采用追加(append-only)的方式写入数据。不支持文件任意offset的修改。不支持多个写入器(writer)。