HDFS简介:
HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。
它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集的应用处理带来了很多便利。
1、HDFS要求与限制
能处理超大文件
HDFS以支持大数据集合为目标,文件大小一般都在千兆至T字节,一个单一HDFS实例应该能支撑数以千万计的文件。
流式数据访问
HDFS设计的思想:一次写入、多次读取(write-one-read-many访问模型)。一个文件经过创建和写入,关闭之后就不需要改变。
这一假设简化了数据一致性问题,使高吞吐量的数据访问成为可能。
使用商用硬件
Hadoop不需要运行在昂贵并且高可靠性的硬件上,因此,硬件错误是常态。
HDFS可能是有成百上千的server组成,任何一个组件都可能失效,因此错误检测和快速、自动地恢复是HDFS的核心架构目标。
HDFS在面对这种故障时,被设计为能够继续运行而不让用户觉察到明显的中断。
低延迟数据访问
HDFS为达到高数据吞吐量而优化的,这可能会以延迟为代价。因此,需要毫秒范围内低延迟访问数据的应用不适合HDFS。
小文件存储问题
HDFS中的名称节点(Namenode)存储着文件系统的元数据,因此文件数量的限制也由NameNode的内存大小决定。
HDFS上每个文件索引数据块的大小约为150个字节,因此,HDFS上存储文件个数的上限就能确定了。
文件随机读写限制
HDFS中的文件只有一个写入者,而且写操作总是在文件的末尾。它不支持多个写入者,或是在文件的任意位置修改。
总结:
- 流式数据访问模式—简化了数据一致性问题,使数据并发访问成为可能。
- 廉价设备—错误检测、快速恢复、不丢失数据。
- 超大文件存储方式—-分布式存储、分布式访问。
- HDFS存储空间—动态扩容
- 众多小文件的存储—–压缩
- 文件的随机读写—-Hbase
- 大文件总是被分隔成很多小的文件块,分散存储在机房的各个机器的不同磁盘上。
- 文件的读写都是并发执行的
- 一个磁盘或者一台服务器出故障不影响业务。
- 可根据实际需要增加或者删除集群中的节点数
2、HDFS设计需求
针对HDFS的要求,设计需求大概是这么几个:
- 透明性(针对HDFS的一切操作和管理都是透明的)
- 并发控制
- 可伸缩性
- 容错
- 安全需求
(1)透明性
开放分布式处理的标准确定就有8种透明性:访问的透明性、位置的透明性、并发透明性、复制透明性、故障透明性、移动透明性、性能透明性和伸缩透明性。
对于HDSF而言,最重要的是希望能达到如下5个透明性要求:
访问的透明性
用户访问本地文件和远程文件资源所采用的接口是一致的,通过修改配置文件来实现。访问HDFS时也不需要知道所访问的文件存放在集群的哪个节点的哪个磁盘上。
(a)Na