【学习笔记】Hadoop之HDFS的块大小、小文件和副本数

HDFS的块大小

HDFS是以块(Block)作为基本的存储单元,默认块大小是128M。在生产上也有根据集群情况,把HDFS的块大小设置为256M的(主要是看磁盘性能,可以参考博文Hdfs block数据块大小的设置规则)。

比如一个150M的文件要存储到HDFS中,将会拆分成2个块,大小分别是128M、22M。

HDFS不擅长小文件的处理

  HDFS文件系统擅长于处理大文件的场景,不擅长于处理小文件的场景,这主要有两个原因:

  一个是大量的小文件元数据信息的管理维护会对NameNode造成较大的压力,甚至会导致整个集群瘫痪(整个Hadoop的存储和计算都依赖于NameNode元数据的读写)。每个文件的NameNode元数据信息大概是250Byte,4000万个小文件的元数据信息就是需要4000万*250Byte≈10G,也就是说NameNode就需要10G内存来存储和管理这些小文件的 信息。

  另一个原因则是因为读写效率太低,很多小文件的寻道时间都比读取时间要长,真正用于读写的时间就比较少,文件的整个读写时长要远大文件的读写。

  小文件的阈值是30M,一般可以考虑对小文件进行合并:

  • 可以考虑在落地到HDFS之前合并
  • 落地到HDFS之后的合并,如Spark Service,每天根据业务周期去合并历史(如15天之前)的小文件

HDFS的副本数

  在伪分布式模式中,HDFS的副本数是1,在分布式系统中,官方的默认副本数是3,参数是:dfs.replication。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值