Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

这篇具有很好参考价值的文章主要介绍了Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.概述

主要对基于Tez的map数和reduce数测试与调优

如果需要查看基于MapReduce的调优可以看这篇:

Hive 基于MapReduce引擎 map和reduce数的参数控制原理与调优经验https://blog.csdn.net/qq_35260875/article/details/110181866?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22110181866%22%2C%22source%22%3A%22qq_35260875%22%7D&ctrtid=Lp7kw

2.数据准备

(1)表信息

本次测试的表和sql都是使用的TPC-DS

Tez文件存储格式为orc。

表名

总数

占用空间

文件数

date_dim

73049

354.1 K

1

item

48000

3.0 M

1

store

118

12.3 K

1

store_sales

23039641872

829.2 G

1874

store_sales的表结构:

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

(2)SQL语句

测试SQL为CPU密集型,密集型的含义:在SQL运行期间CPU占比会很高

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

3.map数的控制

3.1 map数控制测试

影响map个数的tez参数,可以通过在Hive中使用set的形式来使用,set只针对当前session。如果需要全局,则需要修改hive-site.xml和tez-site.xml

参数

默认值

说明

tez.grouping.max-size

1073741824(1GB)

group分割大小的最大值

tez.grouping.min-size

16777216(16MB)

group分割大小的最小值

tez.grouping.split-count

未设置

group的分割组数

mapreduce.input.fileinputformat.split.maxsize这个参数对Tez中的map数也是有影响的。默认为256MB,但是这次测试不针对这个参数

(1)tez.grouping.max-size

测试1:

tez.grouping.max-size =1073741824; 1GB

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

共有363个map数

测试2:

tez.grouping.max-size =536870912; 512MB

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

共有701个map数

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

测试3:

tez.grouping.max-size =268435456; 256MB

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

共有818个map数

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

测试1:

tez.grouping.max-size =2147483648; 2GB

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

共有363个map数

因为2GB大于文件的分割长度

(2)tez.grouping.split-count

测试1:

tez.grouping.split-count =300;

共有363个map数

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

测试2:

tez.grouping.split-count =500;

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

共有749个map数

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

测试3:

tez.grouping.split-count =1000;

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

共有895个map数

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

当设置的值大于原始的895时,tez会直接使用895

测试4:

tez.grouping.split-count =200;

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

共有244个map数

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

3.2 map数控制结果

(1)tez.grouping.max-size

tez.grouping.max-size值

Map数

1073741824

363

536870912

701

268435456

818

2147483648

363

(2)tez.grouping.split-count

tez.grouping.split-count值

Map数

300

363

500

749

1000

895

200

244

4.reduce数的控制

影响reduce个数的参数

参数

默认值

说明

mapred.reduce.tasks

-1

指定reduce的个数

hive.exec.reducers.bytes.per.reducer

67108864

每个reduce的数据处理量

hive.exec.reducers.max

1009

reduce的最大个数

hive.tez.auto.reducer.parallelism

true

是否启动reduce自动并行

前面三个参数的作用和基于MR的相同,故不在做分析,只分析hive.tez.auto.reducer.parallelism参数

(1)hive.tez.auto.reducer.parallelism

hive.tez.auto.reducer.parallelism启用之后,Tez会估计数据量大小,设置并行度。在运行时会根据需要调整估计值。

测试1:

set hive.exec.reducers.max=20;

set hive.tez.auto.reducer.parallelism = false;

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

测试2:

set hive.exec.reducers.max=20;

set hive.tez.auto.reducer.parallelism = true;

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

从dag syslog中可以看到,开启并行执行之后,Reducer 2从20变成了7。

Reducer 3 4 5 6从20变成了5

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验

5.调优流程

(1)map

Tez内部对map数已经有了很多的优化,需要通过dag的系统日志来分析,在有限的资源内,结合集群的资源来提高并发,集群资源越多,map数就可以设置大一点。

(2)reduce文章来源地址https://www.toymoban.com/news/detail-441356.html

需要根据集群的资源以及map端实际的输出数据量来设置reduce数。

6.总结推荐使用

(1)map

  1. tez.grouping.split-count结合集群的资源来设置,例如测试sql:总共分割895,测试过程中895的性能好。

(2)reduce

  1. 推荐reduce数为集群能启动的最大container数的80%,或者小于这个数。
  2. mapred.reduce.tasks这个参数一般不推荐使用。
  3. 是否开启并行,需要根据实际sql的测试结果来判断。最好开启和关闭并行都测试一下

到了这里,关于Hive 基于Tez引擎 map和reduce数的参数控制原理与调优经验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HIVE 3 使用 MR 引擎多表关联 (JOIN) 导致丢数的问题复现、问题根源及解决方案 (附代码)

    本文意图解决 HIVE 3 版本中使用 MR 作为运算引擎进行 JOIN 操作时导致的丢数情况。 Apache Hive 在 2.3 版本后宣布放弃维护 MapReduce 作为底层执行引擎,并转而使用 Tez 作为默认的查询引擎。但是由于 Tez 在大作业量和高并发时的严重性能问题,导致许多任务不得不继续使用 MapRe

    2024年02月13日
    浏览(37)
  • 基于hadoop下的使用map reduce分布式系统的高考高频词汇统计

    hadoop 课程设计报告 一、设计目的与要求 1 、设计目的 通过hadoop课程设计可以加深、巩固对本门专业课程理论知识的掌握。通过eclipse和hadoop来编写课设报告等方面的实践训练,筑牢编程基础,培养良好的逻辑思维能力,提高综合运用能力。同时也锻炼学生自我管理和自我发展

    2024年02月07日
    浏览(53)
  • 云计算实验1 基于Hadoop的云计算平台配置和map-reduce编程案例

    本实验考察学生Hadoop平台下的环境配置、分布式文件存储操作和管理以及基于Hadoop的分布式编程的设计与实现。 Linux的虚拟机环境、线上操作视频和实验指导手册 完成Hadoop开发环境安装、熟悉基本功能和编程方法。 请按照线上操作视频和实验知道手册,完成以下实验内容:

    2024年02月03日
    浏览(43)
  • 基于hadoop下的使用map reduce分布式系统的高考高频词汇统计(内有源码下载)

    hadoop 课程设计报告 一、设计目的与要求 1 、设计目的 通过hadoop课程设计可以加深、巩固对本门专业课程理论知识的掌握。通过eclipse和hadoop来编写课设报告等方面的实践训练,筑牢编程基础,培养良好的逻辑思维能力,提高综合运用能力。同时也锻炼学生自我管理和自我发展

    2024年02月11日
    浏览(35)
  • CDH6.3.2搭建HIVE ON TEZ

    参考 https://blog.csdn.net/ly8951677/article/details/124152987 ----配置hive运行引擎 在/etc/hive/conf/hive-site.xml中修改如下: hive.execution.engine mr–tez 或者运行代码的时候: 如果内存不够:可以修改如下参数设置 在配置文件设置后,如果集群重启会把配置的恢复,需要再CDH界面配置:

    2024年02月13日
    浏览(41)
  • map-reduce中的组件

    用户提交 MapReduce 作业到 JobTracker。 JobTracker 将 MapReduce 作业分割成 Map 任务和 Reduce 任务。 JobTracker 将 Map 任务分配给 TaskTracker。 TaskTracker 执行 Map 任务。 Map 任务将输出数据写入临时文件。 JobTracker 将临时文件分发给 Reduce 任务。 JobTracker 将 Reduce 任务分配给 TaskTracker。 TaskT

    2024年02月09日
    浏览(43)
  • zeppelin在使用hive的时候报错: Cannot modify tez.application.tags at runtime

    Could not open client transport with JDBC Uri: jdbc:hive2://ucd-prod-vdp-usdp-103.viatris.cc:10000/default;principal=hadoop/ucd-prod-vdp-usdp-103.viatris.cc@UCDIPA.VIATRIS.CC;hive.server2.proxy.user=zhangliang;?tez.application.tags=paragraph_1692003609572_1614159237;mapreduce.job.tags=paragraph_1692003609572_1614159237;: Failed to open new session: java.lang

    2024年02月12日
    浏览(40)
  • FPGA时序优化之Reduce MUXF Mapping

    我们都知道,FPGA中的拥塞有:全局拥塞,短线拥塞和长线拥塞。 今天我们就来看短线拥塞的一种解决方案:Reduce MUXF Mapping。 在介绍Reduce MUXF Mapping,我们需要知道什么是MUXF,这就得从UltraScale的CLB说起。 我们都知道,在7系列的FPGA中,每个CLB有两个Slice;而在UltraScale系列中,

    2024年04月25日
    浏览(45)
  • filter、map、reduce 一次性说清楚

    filter() 方法是 JavaScript 中数组的一个方法,用于筛选数组中符合指定条件的元素,并返回一个新的数组,新数组中包含筛选出的元素。 filter() 方法语法如下: 其中,参数 callback 是一个回调函数,用于定义筛选规则,该函数接收三个参数 element、index、array,分别代表当前正在

    2024年02月06日
    浏览(45)
  • JavaScript 之 常用迭代方法forEach、filter()、map()、reduce()

    代码如下: 如下: 代码简洁很多,如下: 简介 : filter() 方法创建给定数组一部分的浅拷贝,其包含通过所提供函数实现的测试的所有元素。 语法 : 参数、返回值 描述 参考官网: 官网——Array.prototype.filter(). 代码如下: 代码如下: 下例使用 filter() 根据搜索条件来过滤数

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包