什么是HDFS?

Hadoop中数据的存储是由HDFS负责的。HDFS(Hadoop Distributed File System)基于Google File System(GFS)的实现,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的。

HDFS组成部分

HDFS由四部分组成,HDFS Client、NameNode、DataNode和Secondary NameNode。
HDFS是一个主/从(Mater/Slave)体系结构,HDFS集群拥有一个NameNode和一些DataNode。
NameNode管理文件系统的元数据,DataNode存储实际的数据。
HDFS Client:就是客户端。
1、提供一些命令来管理、访问 HDFS,比如启动或者关闭HDFS。
2、与 DataNode 交互,读取或者写入数据;读取时,要与 NameNode 交互,获取文件的位置信息;写入 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。
NameNode:即Master,
1、管理 HDFS 的名称空间。
2、管理数据块(Block)映射信息
3、配置副本策略
4、处理客户端读写请求。
DataNode:就是Slave。NameNode 下达命令,DataNode 执行实际的操作。
1、存储实际的数据块。
2、执行数据块的读/写操作。
Secondary NameNode:并非 NameNode 的热备。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。
1、辅助 NameNode,分担其工作量。
2、定期合并 fsimage和fsedits,并推送给NameNode。
3、在紧急情况下,可辅助恢复 NameNode。

HDFS特点

  1. 高容错性、可构建在廉价机器上
  2. 适合批处理
  3. 适合大数据处理
  4. 流式文件访问

    HDFS局限

  5. 不支持低延迟访问

  6. 不适合小文件存储
  7. 不支持并发写入
  8. 不支持修改

    HDFS读写操作示意

    读操作

    image.png

    写操作

    image.png


附参考资料: