Hadoop的小文件问题

本文详细探讨了Hadoop在HDFS、MapReduce和Hive上遇到的小文件问题及其解决方案。针对HDFS,建议通过归档或程序合并小文件。在MapReduce中,利用CombineFileInputFormat减少map任务数量。而在Hive中,通过设置参数如mapred.max.split.size和使用CombineHiveInputFormat来合并小文件,并调整reduce任务的数量以优化输出文件的大小。

https://blog.csdn.net/u010010664/article/details/83105174

1、 HDFS上的小文件问题

   现象:在现在的集群上已经存在了大量的小文件和目录。

   方案:文件是许多记录(Records)组成的,那么可以通过调用HDFS的sync()方法和append方法结合使用,每隔一定时间生成一个大文件。或者可以通过写一个程序来来合并这些小文件。

   Hadoop archive -archiveName test.har -p /A/B/C/D/ E1/F1 E2/F2 /A/G/   小文件归档命令

2、 MapReduce上的小文件问题

如果文件非常小,并且拥有大量的这种小文件,那么每一个map task都仅仅处理非常小的input数据,因此会产生大量的map tasks。

Hadoop内置提供了一个 CombineFileInputFormat 类来专门处理小文件,其核心思想是:根据一定的规则,

将HDFS上多个小文件合并到一个 InputSplit中,然后会启用一个Map来处理这里面的文件,以此减少MR

整体作业的运行时间。CombineFileInputFormat类继承自FileInputFormat,主要重写了List  getSplits(JobContext job)方法;

这个方法会根据数据的分布,mapreduce.input.fileinputformat.s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值