HDFS

分布式文件系统

  • NameNode:主节点,维护整个文件系统的文件目录树
  • SecondaryNameNode:从节点,帮助主节点合并fsimage(元数据信息:描述数据的信息)和edits(元数据信息编辑日志)
  • DataNode:按数据块(block:默认128M,大于128会分块,小于128就按照实际大小)作为单元存储数据,block有三个备份,分布在不同节点上
  • Client:客户端

客户端读取数据的过程

  1. 客户端发起请求,去读取数据
  2. namenode接收到请求后,校验文件是否存在,查找文件对应的元数据信息返回
  3. 通过元数据信息与datanode进行通信,数据以package传送

HDFS元数据管理

HDFS元数据管理:fsimage&edits - 腾讯云开发者社区-腾讯云 (tencent.com)

HDFS小文件的危害

每一个文件都需要保存元数据信息,大量小文件就会产生大量元数据信息,namenode需要将元数据信息读取到内存中,而内存的容量是相对较小的,所以大量小文件的元数据信息会将内存撑爆;同时,在数据计算时,大量小文件意味着需要更多的task和资源,会降低任务执行效率

HDFS相关操作

1
2
3
hdfs dfs #查看命令文档
hdfs dfsadmin -safemode #查看安全模式文档
#安全模式只接受读请求

也可在浏览器地址栏输入:集群ip地址:9870 进入图形操作界面

HDFS优缺点

优点

  • 高容错:数据自动保存多个副本
  • 适合批处理:移动计算而不是移动数据(代码动,数据不动)
  • 适合大数据处理
  • 适合流式数据访问:HDFS上的数据不能修改,一次写入,多次读取
  • 可构建在廉价机器上

缺点

  • 不适合低延时数据访问
  • 无法高效地对大量小文件进行存储
  • 不支持并发写入、文件随机修改

HDFS为什么不支持修改操作

HDFS采用了这种设计模式的主要原因是为了实现高可靠性和高吞吐量。在HDFS中,文件通常是非常大的,通常是GB或TB级别的,而不是小文件。如果允许修改操作,会涉及到需要将修改写入磁盘中,这会导致非常昂贵的磁盘寻址操作,从而大大降低了吞吐量。此外,允许修改还会增加系统的复杂性和故障率。