当前位置: 首页 > news >正文

【大数据之Hadoop】三十四、Hadoop综合调优之小文件优化方法

1 Hadoop小文件弊端

  HDFS上每个文件都要在NameNode上创建对应的元数据,这个元数据的大小约为150byte,这样当小文件比较多的时候,就会产生很多的元数据文件,一方面会大量占用NameNode的内存空间,另一方面就是元数据文件过多,使得寻址索引速度变慢。

  小文件过多,在进行MR计算时,会生成过多切片,需要启动过多的MapTask。每个MapTask处理的数据量小,导致MapTask的处理时间比启动时间还小,白白消耗资源。

2 Hadoop小文件解决方案

(1)在数据采集的时候,就将小文件或小批数据合成大文件再上传HDFS(数据源头)

(2)Hadoop Archive(存储方向)
  是一个高效的将小文件放入HDFS块中的文件存档工具,能够将多个小文件打包成一个HAR文件,从而达到减少NameNode的内存使用

(3)CombineTextInputFormat(计算方向)
  CombineTextInputFormat用于将多个小文件在切片过程中生成一个单独的切片或者少量的切片(小文件放在一起统一进行切片)。

(4)开启uber模式,实现JVM重用(计算方向)
  当存在很多小文件的任务开启和结束关闭时间大于任务的执行时间时使用一个策略:将小文件的任务开启之后运行,运行完成也不结束。

  默认情况下,每个Task任务都需要启动一个JVM来运行,如果Task任务计算的数据量很小,可以让同一个Job的多个Task运行在一个JVM中,不必为每个Task都开启一个JVM。

  在没有开启uber模式下,对/input路径上上传的小文件执行wordcount程序,可用看到控制台上显示uber模式是关闭的,且http://hadoop103:8088/cluster中该任务开启的容器超过1个,不大于9个。

  开启uber模式,在mapred-site.xml中添加如下配置:

<!--  开启uber模式,默认关闭 -->
<property><name>mapreduce.job.ubertask.enable</name><value>true</value>
</property><!--uber模式中最大的mapTask数量,可向下修改  --> 
<property><name>mapreduce.job.ubertask.maxmaps</name><value>9</value>
</property>
<!--uber模式中最大的reduce数量,可向下修改 -->
<property><name>mapreduce.job.ubertask.maxreduces</name><value>1</value>
</property>
<!--uber模式中最大的输入数据量,默认使用dfs.blocksize 的值,可向下修改 -->
<property><name>mapreduce.job.ubertask.maxbytes</name><value></value>
</property>

  分发该文件,再次运行wordcount程序,观察到控制台显示uber模式开启,且http://hadoop103:8088/cluster中该任务开启的容器只有1个。

  只有一个容器的原因:开启uber模式,将小文件的任务开启之后运行,运行完成也不结束,减少开关任务的时间。

http://www.lryc.cn/news/69846.html

相关文章:

  • 周赛 Round#3 题解
  • 详解HTTPS加密过程
  • 聚观早报 | ChatGPT登顶美区iOS免费榜;库克不满苹果首款MR设备
  • position:sticky-粘性吸附布局
  • 【MySQL】-【数据库的设计规范】
  • 全面解析缓存应用经典问题
  • Java版本企业电子招采系统源码——信息数智化招采系统
  • Rust每日一练(Leetday0005) 罗马数字、公共前缀、三数之和
  • 【告别校园,迎接未来】
  • SaaS系统用户权限设计
  • 我们为什么还要学习Altium Designer?
  • Q1业绩整体回暖,影视行业找到增长新路径
  • Zabbix
  • OpenHarmony支持HDMI接口声卡适配说明
  • AtCoder Beginner Contest 300G - P-smooth number解题报告
  • 数据分析与预处理常用的图和代码
  • Http与Https 比较
  • 02 面向对象( 继承,抽象类)
  • [C++]22种设计模式的C++实现大纲
  • 用Powerpoint (PPT)制作并导出矢量图、高分辨率图
  • 小白量化《穿云箭集群量化》(9)用指标公式实现miniQMT全自动交易
  • java Class类详解
  • DMGI:Unsupervised Attributed Multiplex Network Embedding
  • C++基本介绍
  • 如何理解工业互联网与智能制造,怎么共建智慧工厂?
  • 主机访问不到虚拟机(centos7)web服务的解决办法
  • 第四章 ActiveMQ与SpringBoot集成——ActiveMQ笔记(动力节点)
  • Halcon 算子 select_shape_std 和 select_shape_xld区别
  • 【Java基础】匿名内部类
  • 基于Freertos的ESP-IDF开发——6.使用DHT1温湿度传感器