map和reduce数量生成

关于mr的一些问题 1.影响map和reduce生成个数的数据因子有哪些? map个数的影响因子 1)map输入文件的总大小 2)block块大小 block块越大,块数越少,会降低hdfs元数据压力,并行度降低,处理单个block块的效率越高。 block块越小,块数越多,会导致hdfs压力大,并行度会提高。 3)文件大小 与block越接近越好,若太小,会导致所占block元数据过多,给NameNode造... 阅读详情

控制Hive中Map和reduce的数量

Hive中的sql查询会生成执行计划,执行计划以MapReduce的方式执行,那么结合数据和集群的大小,map和reduce的数量就会影响到sql执行的效率。

除了要控制Hive生成的Job的数量,也要控制map和reduce的数量。

1、 map的数量,通常情况下和split的大小有关系,之前写的一篇blog“map和reduce的数量是如何定义的”有描述。

hive中默认的hive.input.format是org.apache.hadoop.hive.ql.io.CombineHiveInputFormat,对于combineHiveInputFormat,它的输入的map数量

由三个配置决定,

mapred.min.split.size.per.node, 一个节点上split的至少的大小

mapred.min.split.size.per.rack 一个交换机下split至少的大小

mapred.max.split.size 一个split最大的大小

它的主要思路是把输入目录下的大文件分成多个map的输入, 并合并小文件, 做为一个map的输入. 具体的原理是下述三步:

a、根据输入目录下的每个文件,如果其长度超过mapred.max.split.size,以block为单位分成多个split(一个split是一个map的输入),每个split的长度都大于mapred.max.split.size, 因为以block为单位, 因此也会大于blockSize, 此文件剩下的长度如果大于mapred.min.split.size.per.node, 则生成一个split, 否则先暂时保留.

b、现在剩下的都是一些长度效短的碎片,把每个rack下碎片合并, 只要长度超过mapred.max.split.size就合并成一个split, 最后如果剩下的碎片比mapred.min.split.size.per.rack大, 就合并成一个split, 否则暂时保留.

c、把不同rack下的碎片合并, 只要长度超过mapred.max.split.size就合并成一个split, 剩下的碎片无论长度, 合并成一个split.

举例: mapred.max.split.size=1000

mapred.min.split.size.per.node=300

mapred.min.split.size.per.rack=100

输入目录下五个文件,rack1下三个文件,长度为2050,1499,10, rack2下两个文件,长度为1010,80. 另外blockSize为500.

经过第一步, 生成五个split: 1000,1000,1000,499,1000. 剩下的碎片为rack1下:50,10; rack2下10:80

由于两个rack下的碎片和都不超过100, 所以经过第二步, split和碎片都没有变化.

第三步,合并四个碎片成一个split, 长度为150.

如果要减少map数量, 可以调大mapred.max.split.size, 否则调小即可.

其特点是: 一个块至多作为一个map的输入,一个文件可能有多个块,一个文件可能因为块多分给做为不同map的输入, 一个map可能处理多个块,可能处理多个文件。

2、 reduce数量

可以在hive运行sql的时,打印出来,如下:

Number of reduce tasks not specified. Estimated from input data size: 1
In order to change the average load for a reducer (in bytes):
set hive.exec.reducers.bytes.per.reducer=[number]
In order to limit the maximum number of reducers:
set hive.exec.reducers.max=[number]
In order to set a constant number of reducers:
set mapred.reduce.tasks=[number]

reduce数量由以下三个参数决定,
mapred.reduce.tasks(强制指定reduce的任务数量)
hive.exec.reducers.bytes.per.reducer(每个reduce任务处理的数据量,默认为1000^3=1G)
hive.exec.reducers.max(每个任务最大的reduce数,默认为999)

1.Hive自己如何确定reduce数:
计算reducer数的公式很简单N=( hive.exec.reducers.max(最大),总输入数据量/ hive.exec.reducers.bytes.per.reducer (最小))

2.调整reduce个数方法一:
调整hive.exec.reducers.bytes.per.reducer参数的值;
set hive.exec.reducers.bytes.per.reducer=500000000; (500M)
select pt,count(1) from popt_tbaccountcopy_mes where pt = '2012-07-04' group by pt;  //这次有20个reduce

3.调整reduce个数方法二;
set mapred.reduce.tasks = 15;
select pt,count(1) from popt_tbaccountcopy_mes where pt = '2012-07-04' group by pt;这次有15个reduce

4.reduce个数并不是越多越好;
同map一样,启动和初始化reduce也会消耗时间和资源;
另外,有多少个reduce,就会有多少个输出文件,如果生成了很多个小文件,那么如果这些小文件作为下一个任务的输入,则也会出现小文件过多的问题;
手把手教你用C语言实现GNSS卫星方位角计算(附RTKLIB风格代码解析) 本文详细介绍了如何使用C语言实现GNSS卫星方位角计算,包括从地固坐标系到站心坐标系的转换链条。通过RTKLIB风格的代码解析,展示了XYZ到ENU坐标转换的核心原理和C语言实现框架,帮助开发者掌握卫星方位角和高度角的计算技巧,适用于GNSS观测数据质量分析和精密定位算法开发。 阅读详情

相关推荐

WSL2+Ubuntu-22.04搭建PX4仿真环境:从零避坑到一键起飞

本文详细指导在Windows系统上通过WSL2和Ubuntu-22.04搭建PX4仿真开发环境的完整流程,涵盖环境配置、源码下载、依赖安装、Gazebo仿真及常见错误解决方案,帮助开发者从零避坑实现无人机一键起飞仿真。

k8s6orchestrator的博客 670

hadoop中map和reduce的数量设置问题

map和reduce是hadoop的核心功能,hadoop正是通过多个map和reduce的并行运行来实现任务的分布式并行计算,从这个观点来看,如果将map和reduce的数量设置为1,那么用户的任务就没有并行执行,但是map和reduce的数量也不能过多,数量过多虽然可以提高任务并行度,但是太多的map和reduce也会导致整个hadoop框架因为过度的系统资源开销而使任务失败。所以用户在提交m

java的涟漪 2181

保姆级教程:5分钟搞定微信小程序live-player组件接入监控视频流

本文提供了一份详细的微信小程序接入实时监控视频流的实战指南。文章对比了live-player与video组件的核心差异,重点解析了如何申请并开通live-player组件的严格权限,并提供了播放RTMP流(低延迟)的完整配置、状态监听与错误处理代码。同时,也介绍了使用video组件播放HLS流的备选方案,帮助开发者根据项目需求快速选择并实现稳定可靠的监控视频播放功能。

open4的博客 296

Hadoop如何计算map数和reduce数

阅读本文可以带着下面问题: 1.map和reduce的数量过多会导致什么情况? 2.Reduce可以通过什么设置来增加任务个数? 3.一个task的map数量由谁来决定? 4.一个task的reduce数量由谁来决定? 一般情况下,在输入源是文件的时候,一个task的map数量由splitSize来决定的,那么splitSize是由以下几个来决定的 goalSize...

weixin_30488313的博客 267

HFSS螺旋线圈的优化设计与高效仿真实践

本文详细介绍了HFSS螺旋线圈的优化设计与高效仿真实践,涵盖核心参数设置、参数化建模、仿真加速技巧及结果分析。通过HFSS软件实现螺旋线圈的高效仿真,特别适用于无线充电和RFID系统设计,提升设计效率与性能验证准确性。

weixin_30235225的博客 445

从零开始:在Windows WSL中搭建Openfoam7+blastfoam2.0.0开发环境(避坑大全)

本文详细指导在Windows WSL中搭建OpenFOAM 7与BlastFOAM 2.0.0开发环境,重点解析了安装过程中的常见“坑点”,如编译模式不匹配导致的符号错误,并提供了从系统准备、软件部署到环境验证的完整解决方案,帮助开发者高效构建CFD与爆炸模拟开发平台。

stem5的博客 527

mapreduce 作业中 map/reduce 个数的计算

1. 问题描述 当在hadoop集群提交mapreduce作业时,map 和 reduce 的个数是如何计算的? 2. map个数的计算 2.1map个数的计算和分片大小(splitSize)是有关系的,所以我们先看看splitSize的计算公式: long splitSize = Math.max(minSize, Math.min(maxSize, bloc...

秀才的专栏 1263

Cesium中实现GPU计算的泥石流地形侵蚀

通过模拟分析,可以提前识别可能发生泥石流的区域,为防灾减灾提供依据,及时发布预警,避免或减少人员伤亡和财产损失。:在建设公路、桥梁、水库等基础设施时,通过泥石流模拟分析,可以预测泥石流可能对这些设施的影响,帮助工程设计者采取合适的防护措施,确保设施的安全性。:模拟分析有助于为灾后救援工作提供科学依据,确定受灾区域的范围、救援难度等,为救援队伍制定合理的行动方案,提升救援效率。:泥石流是山区常见的地质灾害之一,通过模拟分析可以评估某一地区发生泥石流的风险,指导土地使用规划、人口迁移等决策。

weixin_43481439的博客 1320

MapReduce中的mapper个数决定(很全)

即上面两个的较小值,即满足各种参数设置下的最小map数。

yuan_53yuan的博客 1920

数据去重复_京东商品评论情感分析|文本数据预处理

本文爬取了十款热销手机的文本评论数据后,首先对文本评论数据做文本预处理,文本评论数据中存在大量的无价值信息,引入无用的文本数据,对其作情感分析,显然没有价值,得出的文本挖掘结果也不尽人意。所以对于文本评论数据先进行文本预处理是必不可少的一步,把大量的、冗余的、无价值的信息去除,可以极大提高文本数据的质量,精确文本分析结果。1 文本去重1.1文本去重的原因文本数据预处理时,首先应去除文本评论数据中反...

weixin_34556808的博客 2074

C++跨平台Word文档处理库DuckX实战指南:从原理到项目集成

在C++开发中,处理Office文档,尤其是Word文件,常因缺乏原生易用的库而面临挑战。Office Open XML(OOXML)作为.docx文件的基础标准,其本质是包含XML文件的ZIP压缩包。理解这一原理,开发者便能通过解析和操作XML来实现文档的读写。DuckX库正是基于此,为C++提供了轻量级的解决方案。它封装了底层的ZIP处理和XML解析,提供了简洁的面向对象API,其技术价值在于实现了跨平台、无外部依赖的Word文档自动化生成与处理。这尤其适用于服务器端、嵌入式环境或需要脱离Office软

weixin_33508411的博客 387

MapReduce参数调优

设置Map,reduce参数调优其个数,以及如何保证输出端的小文件合并等问题

m0_70949976的博客 2888

YOLOv11 TensorRT极致加速:C++部署性能优化完全指南

购买即可解锁300+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,别人有的本专栏也有!

LXY_LOVE36的博客 118

Mapreduce不设置reduce,只执行map的输出结果

http://m.blog.youkuaiyun.com/blog/yhc13429826359/9962047 Mapreduce不设置reduce,只执行map的输出结果 2013-8-14阅读3070 评论5 在写MR程序时候,有时我们不需要reduce,比如对原始数据做Format等,这样我们在MR程序中就不需要写reduce函数,同样在main函数配置中也不需要

qiezikuaichuan的专栏 7967

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Hive合理设置 Map 及 Reduce 数

合理设置 Map 及 Reduce 数 1)通常情况下,作业会通过 input 的目录产生一个或者多个 map 任务。 主要的决定因素有:input 的文件总个数,input 的文件大小,集群设置的文件块大小。 2)是不是 map 数越多越好? 答案是否定的。如果一个任务有很多小文件(远远小于块大小 128m),则每个小文件 也会被当做一个块,用一个 map 任务来完成,而一个 map 任务启动和初始化的时间远远大 于逻辑处理的时间,就会造成很大的资源浪费。而且,同时可执行的 map

song_quan_的博客 1641

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

map和reduce 个数的设定 (Hive优化)经典

一、    控制hive任务中的map数:  1.    通常情况下,作业会通过input的目录产生一个或者多个map任务。  主要的决定因素有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为128M, 可在hive中通过set dfs.block.size;命令查看到,该参数不能自定义修改); 2.    举例:  a)    假设input目录下有

ATCO[这里,只是顺手插曲] 680

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

hive优化之 控制hive任务中的map数和reduce数

一、    控制hive任务中的map数:  1.    通常情况下,作业会通过input的目录产生一个或者多个map任务。  主要的决定因素有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为128M, 可在hive中通过set dfs.block.size;命令查看到,该参数不能自定义修改); 2.    举例:  a)    假设input目录下有

lhy66的专栏 572

hive (map和reduce 个数的设定 )

一、    控制hive任务中的map数:  1.    通常情况下,作业会通过input的目录产生一个或者多个map任务。  主要的决定因素有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为128M, 可在hive中通过set dfs.block.size;命令查看到,该参数不能自定义修改); 2.    举例:  a)    假设input目录下有

u013777684的专栏 600

java map/reduce_Hadoop MapReduce Java API

MapperInput:输入为 InputFormat产生的InputSplitThe Hadoop MapReduce framework spawns one map task for eachInputSplitgenerated by theInputFormatfor the job设定mapper的API,需要提供map函数pass mapper to Jobandcall...

weixin_35171603的博客 75

Hive性能调优 | 数据倾斜

点击上方蓝色字体,选择“设为星标”回复”资源“获取更多资源大数据技术与架构点击右侧关注,大数据开发领域最强公众号!大数据真好玩点击右侧关注,大数据真好玩!往期回顾之Hive性能调优系列:...

微信搜:import_bigdata,大数据领域硬核原创作者 449

MongoDB Map Reduce

MapReduce原理与利用MangoDB实现MapReduce

yiweixiaomiandui的博客 316

MapReduce阶段划分

MapReduce执行的4个阶段,分别为Split阶段—> Map阶段 —> Shuffle阶段 —> Reduce阶段。

disgocloser的博客 1447

大数据处理实践之快递数量统计

本文介绍了基于MapReduce的快递查询统计系统开发过程。系统采用Hadoop分布式计算框架,通过Java编写的MapReduce程序实现对快递数据的分析处理,统计每个用户的快递数量并输出结果。文章详细阐述了系统架构设计,包括Mapper阶段提取用户ID和快递数量形成键值对,Reducer阶段进行汇总计算的逻辑流程。

qq_66019225的博客 1034

mapreduce原理_mapreduce执行原理详解,各个阶段做了什么?

今天抽时间又重新整体复习了下mapreduce在各个阶段的执行过程,感觉每一次学习都会有更大的收获,今天就把我学习到的东西全都和大家一起分享出来,方便自己梳理知识和记忆的同时,也希望能给其他小伙伴带来收获!每天进步一点点!一.什么是MapReduceMapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从...

weixin_39583029的博客 2086

Hadoop基础知识3

1、MapReduce是什么? Hadoop MapReduce是针对谷歌MapReduce的开源实现,运行在分布式文件系统HDFS上。MapReduce是一种并行编程模型,用于大规模数据集(大于1TB)的并行运算,可以大幅提高程序性能,实现高效的批量数据处理。MapReduce的核心思想就是“分而治之”,它把输入的数据集切分为若干独立的数据块,分发给一个主节点管理下的各个分节点来共同并行完成,最后,通过整合各个节点的中间结果得到最终结果。它将复杂的、运行于大规模集群上的并行计算过程高度抽象到两个函数——

让, 570

Hadoop源码学习系列—— HAR归档Job设计要点

hadoop版本:CDH3u2     hadoop 中生成har文件是通过mapred job实现的,这个主要的class是“HadoopArchives.java”,它是tools包里面的一个类。这个类有800多行code,包含map reduce 自定义的inputformat和其它辅助方法,细读起来还需要花点时间。    一个har job命令行举例: # 归档"/fc/src...

The Big Data Way 659
上一篇: Hive Multi Insert 引起的GC overhead limit exceeded
下一篇: Hive常用函数
yjgithub
博客等级 码龄11年 53粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值