是什么?
Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。有一定高度的容錯性,而且提供了高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS是海量数据存储解决方案
HDFS设计之初就是针对超大文件的存储的,小文件不会提高访问和存储速度,反而会降低;其次它采用了最高效的访问模式,也就是经常说的流式数据访问,特点就是一次写入多次读取;再有就是它运行在普通硬件之上,即使硬件故障,也就通过容错来保证数据的高可用。
分布式文件管理系统很多,HDFS是其中一种。适用于一次写入多次查询的情况,不支持并发写情况,小文件不合适。
HDFS相关概念
Block | 大文件的存储会被分割为多个block进行存储。默认为64MB,每个block会在多个datdnode上存储多份副本 。默认为3份【默认配置可更改】 |
---|---|
Namenode | 主要负责存储一些metadata信息。主要包括文件目录、block和文件对应关系,以及block和datanode的对应关系 |
Datanode | 负责存储数据,上面我们所说的高度的容错性大部分在datanode上实现 |
HDFS架构图
主从结构:
- 主节点,只有一个:namenode
- 从节点,有很多个:datanode
namenode负责:
- 接收用户请求操作
- 维护文件信息系统的目录结构
- 管理文件与block之间的关系,block与datanode之间的关系
- 存储元数据
- 注意:namenode归根结底要放在磁盘上的,以保证数据的持久性,但是为了提高效率,一般在hadoop运行时放在内存中
什么是元数据
除去文件内容之外的文件数据,如:文件大小、名称等属性
datanode负责:
- 存储文件内容
- 文件被分成block存储在磁盘上
- 为了保证数据安全,文件会有多个副本
- 维护了block与本地文件的映射关系
为什么
HDFS的四大优点让其成为数据存储的主流选择:
- 高吞吐量:
HDFS的每个block分布在不同rack上,在用户访问时,HDFS会计算使用最近和访问量最小的服务器给用户提供。由于block在不同rack上都有备份,所以不再是单数据访问,所以速度和效率是非常快的。另外HDFS可以并行从服务器集群中读写,增加了文件读写的访问带宽。 - 高容错性:
上面简单的介绍了一下高度容错。系统故障是不可避免的,如何做到故障之后的数据恢复和容错处理时至关重要的。HDFS通过多方面保证数据的可靠性,多份复制并且分布到物理位置不同的服务器上,数据校验功能、后台的连续自检数据一致性功能,都为高容错提供了可能。 - 容量扩充:
因为HDFS的block信息存放到namenode上,文件的block分布到datanode上,当扩充的时候,仅仅添加datanode数量,系统可以在不停止服务的情况下作扩充,不需要人工干预 - 低成本:
可以通过普通机器组成的服务器集群来分发及处理数据。这些服务群总计可达数千个节点。
缺点
- 低延迟数据访问
比如毫秒级
低延迟与高吞吐率 - 小文件存取
占用namenode大量内存
寻道时间超过读取时间 - 并发写入、文件随机修改
一个文件只能有一个写者(不能够修改)
仅支持append
怎么做
-help [cmd] | 显示命令的帮助信息 |
---|