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

简介: 通过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

image.png


0x02 CombineTextInputFormat实现小文件优化


1. 修改代码

a. 添加一行代码

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


image.png


2. 执行修改后作业

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


hadoop jar hadoop-learning-1.0.jar com.shaonaiyi.hadoop.CombinerWC /files/* /output/comwc/


3. 查看结果

a. 可在YARN的Web UI界面上看到只有1个Map Task


image.png


0xFF 总结


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


相关文章
|
3月前
|
缓存 监控 算法
软件测试中的性能瓶颈分析与优化策略
【10月更文挑战第6天】 性能测试是确保软件系统在高负载条件下稳定运行的重要手段。本文将深入探讨性能测试的常见瓶颈,包括硬件资源、网络延迟和代码效率等问题。通过具体案例分析,我们将展示如何识别并解决这些问题,从而提升软件的整体性能。最后,文章还将分享一些实用的性能优化技巧,帮助读者在日常开发和测试中更好地应对性能挑战。
133 3
|
3月前
|
算法 Java 测试技术
java性能调优涉及哪些方面
本文详细探讨了性能调优的各个方面,包括Java编程、多线程、JVM监控、设计模式和数据库调优。文章还介绍了性能调优的标准制定、介入时机、系统性能的影响因素,以及如何衡量和判断系统的性能与负载承受能力。最后,提出了性能调优的具体策略,包括代码、设计、算法优化及参数调整,并讨论了限流、智能化扩容等兜底策略。
java性能调优涉及哪些方面
|
3月前
|
存储 数据管理 测试技术
提升软件测试效率的实用技巧与策略
在软件开发过程中,测试是一个至关重要的环节,它直接关系到产品质量和用户体验。本文将探讨几种实用的技巧和策略,帮助测试人员提升工作效率,确保软件质量。从测试自动化到持续集成,我们将一一解析这些方法如何优化测试流程。
|
2月前
|
机器学习/深度学习 人工智能 Java
探索软件测试中的自动化框架选择与优化策略####
本文深入探讨了在软件测试领域,面对众多自动化测试框架时,如何根据项目特性、团队技能及长远规划做出最佳选择,并进一步阐述了优化这些框架以提升测试效率与质量的策略。通过对比分析主流自动化测试框架的优劣,结合具体案例,本文旨在为测试团队提供一套实用的框架选型与优化指南。 ####
|
8月前
|
敏捷开发 分布式计算 测试技术
深入理解软件测试中的自动化框架选择与优化策略
【2月更文挑战第29天】 在软件开发的生命周期中,测试环节扮演着至关重要的角色。随着敏捷开发和持续集成的普及,自动化测试成为确保软件质量和加快产品上市速度的关键手段。本文将探讨在构建自动化测试框架时面临的挑战,分析不同类型自动化框架的特点及其适用场景,并提出一系列优化策略,旨在帮助测试工程师提高测试效率,确保测试结果的准确性。
88 0
|
4月前
|
存储 安全 jenkins
提升软件测试效率的策略与实践
在软件开发过程中,测试环节扮演着至关重要的角色。它不仅保障了软件产品的质量,还在很大程度上决定了产品的最终用户体验。本文将探讨几种实用的策略和实践方法,旨在提高软件测试的效率。从自动化测试工具的应用,到持续集成环境的搭建,再到测试用例的高效管理,我们将一一解析如何优化测试流程,减少重复工作,确保软件质量的同时,缩短上市时间。
58 4
|
8月前
|
缓存 编译器 数据处理
【C/C++ 性能优化】循环展开在C++中的艺术:提升性能的策略与实践
【C/C++ 性能优化】循环展开在C++中的艺术:提升性能的策略与实践
749 0
|
6月前
|
监控 Java 调度
探索JVM性能调优,调优不仅是技术挑战,更是成长过程。
【7月更文挑战第1天】探索JVM性能调优:** 本文深入JVM内存模型,关注堆内存与方法区、栈的优化,通过调整-Xms, -Xmx及垃圾收集器参数减少GC频率。探讨了Serial到G1等垃圾收集器的选择策略,利用jstat、jmap等工具诊断性能瓶颈。实战案例中,通过问题定位、内存分析解决Full GC问题,强调开发者需理解JVM原理,运用工具在复杂场景下实现高效调优。调优不仅是技术挑战,更是成长过程。
49 0
|
8月前
|
机器学习/深度学习 人工智能 算法
提升软件测试效率与质量的策略分析
在快速发展的信息技术时代,软件产品已成为日常生活和工作的核心组成部分。随着软件系统的复杂度日益增加,确保其功能性、稳定性及安全性的软件测试工作变得尤为重要。本文针对如何提升软件测试的效率与质量进行了深入探讨,分析了当前软件测试面临的挑战,并提出了一系列创新策略。这些策略包括采用自动化测试工具、实施持续集成和持续部署(CI/CD)、利用人工智能进行测试用例生成以及强化测试团队的技能培训等。通过综合运用这些策略,可以显著提高软件测试的质量和效率,减少人工成本,同时加速产品的上市时间。
166 4
|
8月前
|
存储 网络协议 Java
服务优化实践
v服务优化实践
53 2