通过CombineTextInputFormat实现小文件优化(调优技能)

0x00 文章内容

  1. 未修改前情况
  2. CombineTextInputFormat实现小文件优化

说明:本文章在MapReduce编程例子之Combiner与Partitioner 的Combiner例子基础上执行。

0x01 未修改前情况

1. 当前文件情况

a. 目前/files文件夹有4个文件

[hadoop-sny@master jar]$ hadoop fs -ls /files/
Found 4 items
-rw-r--r--   1 hadoop-sny supergroup         39 2019-04-18 21:20 /files/put.txt
-rw-r--r--   1 hadoop-sny supergroup         50 2019-12-30 17:12 /files/small1.txt
-rw-r--r--   1 hadoop-sny supergroup         31 2019-12-30 17:10 /files/small2.txt
-rw-r--r--   1 hadoop-sny supergroup         49 2019-12-30 17:11 /files/small3.txt
2. 执行未修改前作业

a. 执行命令如下:

hadoop jar hadoop-learning-1.0.jar com.shaonaiyi.hadoop.CombinerWC /files/* /output/comwc/
3. 查看结果

a. 可在YARN的Web UI界面上看到有4个Map Task
在这里插入图片描述

0x02 CombineTextInputFormat实现小文件优化

1. 修改代码

a. 添加一行代码

   //合并小文件CombineTextInputFormat
        job.setInputFormatClass(CombineTextInputFormat.class);

在这里插入图片描述

2. 执行修改后作业

a. 执行命令如下(与前面一样):

hadoop jar hadoop-learning-1.0.jar com.shaonaiyi.hadoop.CombinerWC /files/* /output/comwc/
3. 查看结果

a. 可在YARN的Web UI界面上看到只有1个Map Task
在这里插入图片描述

0xFF 总结

  1. 一个Map Task就是一个JVM进程,将一个目录下的所有文件当成了一个split来执行,可以减少JVM的启动,从而提高性能。

作者简介:邵奈一
全栈工程师、市场洞察者、专栏编辑
| 公众号 | 微信 | 微博 | CSDN | 简书 |

福利:
邵奈一的技术博客导航
邵奈一 原创不易,如转载请标明出处。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值