Hadoop学习之HDFS
HDFS
分布式文件系统
- NameNode:主节点,维护整个文件系统的文件目录树
- SecondaryNameNode:从节点,帮助主节点合并fsimage(元数据信息:描述数据的信息)和edits(元数据信息编辑日志)
- DataNode:按数据块(block:默认128M,大于128会分块,小于128就按照实际大小)作为单元存储数据,block有三个备份,分布在不同节点上
- Client:客户端
客户端读取数据的过程
- 客户端发起请求,去读取数据
- namenode接收到请求后,校验文件是否存在,查找文件对应的元数据信息返回
- 通过元数据信息与datanode进行通信,数据以package传送
HDFS元数据管理
HDFS元数据管理:fsimage&edits - 腾讯云开发者社区-腾讯云 (tencent.com)
HDFS小文件的危害
每一个文件都需要保存元数据信息,大量小文件就会产生大量元数据信息,namenode需要将元数据信息读取到内存中,而内存的容量是相对较小的,所以大量小文件的元数据信息会将内存撑爆;同时,在数据计算时,大量小文件意味着需要更多的task和资源,会降低任务执行效率
HDFS相关操作
1 | hdfs dfs #查看命令文档 |
也可在浏览器地址栏输入:集群ip地址:9870 进入图形操作界面
HDFS优缺点
优点
- 高容错:数据自动保存多个副本
- 适合批处理:移动计算而不是移动数据(代码动,数据不动)
- 适合大数据处理
- 适合流式数据访问:HDFS上的数据不能修改,一次写入,多次读取
- 可构建在廉价机器上
缺点
- 不适合低延时数据访问
- 无法高效地对大量小文件进行存储
- 不支持并发写入、文件随机修改
HDFS为什么不支持修改操作
HDFS采用了这种设计模式的主要原因是为了实现高可靠性和高吞吐量。在HDFS中,文件通常是非常大的,通常是GB或TB级别的,而不是小文件。如果允许修改操作,会涉及到需要将修改写入磁盘中,这会导致非常昂贵的磁盘寻址操作,从而大大降低了吞吐量。此外,允许修改还会增加系统的复杂性和故障率。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 62bit的秘密基地!