博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MapReduce Task数目划分
阅读量:4206 次
发布时间:2019-05-26

本文共 1440 字,大约阅读时间需要 4 分钟。

Map任务的个数

  Mapper数据过大的话,会产生大量的小文件,过多的Mapper创建和初始化都会消耗大量的硬件资源。Mapper数太小,并发度过小,Job执行时间过长,无法充分利用分布式硬件资源。

Mapper数量由什么决定?

  1. 输入文件数目
  2. 输入文件的大小
  3. 配置参数

  输入目录中文件数量决定多少个Map会被运行起来,应用针对每一个分片运行一个Map。对于每一个输入的文件会有一个map split。如果输入文件超过了HDFS块的大小(128M)那么对于同一个输入文件会有多余2个的Map运行起来。

涉及参数:mapreduce.input.fileinputformat.split.minsize //启动map最小的split size大小,默认0mapreduce.input.fileinputformat.split.maxsize //启动map最大的split size大小,默认256Mdfs.block.size//block块大小,默认128M计算公式:splitSize =  Math.max(minSize, Math.min(maxSize, blockSize))    下面是FileInputFormat class 的getSplits()的伪代码:       num_splits = 0      for each input file f:         remaining = f.length         while remaining / split_size > split_slope:            num_splits += 1            remaining -= split_size      where:        split_slope = 1.1 分割斜率        split_size =~ dfs.blocksize 分割大小约等于hdfs块大小

会有一个比例进行运算来进行切片,为了减少资源的浪费。例如一个文件大小为260M,在进行MapReduce运算时,会首先使用260M/128M,得出的结果和1.1进行比较。大于则切分出一个128M作为一个分片,剩余132M,再次除以128,得到结果为1.03,小于1.1,则将132作为一个切片,即最终260M被切分为两个切片进行处理,而非3个切片。

Reduce任务的个数

  Reduce任务是一个数据聚合的步骤,数量默认为1,一个Reduce任务对应一个输出文件。一个job的ReduceTasks数量是通过mapreduce.job.reduces参数设置,也可以通过编程的方式,调用Job对象的setNumReduceTasks()方法来设置。一个节点Reduce任务数量上限由mapreduce.tasktracker.reduce.tasks.maximum设置(默认2)。

可以采用以下探试法来决定Reduce任务的合理数量:1.每个reducer都可以在Map任务完成后立即执行:      0.95 * (节点数量 * mapreduce.tasktracker.reduce.tasks.maximum)2.较快的节点在完成第一个Reduce任务后,马上执行第二个:      1.75 * (节点数量 * mapreduce.tasktracker.reduce.tasks.maximum)

转载地址:http://ibhli.baihongyu.com/

你可能感兴趣的文章
滴滴顺风车上线新功能,特殊时期便捷出行
查看>>
不会延期!iPhone 12S预计如期在9月发售:升级三星LTPO屏幕
查看>>
腾讯物联网操作系统TencentOS tiny线上移植大赛,王者机器人、QQ公仔、定制开发板等礼品等你来拿 !
查看>>
为云而生,腾讯云服务器操作系统TencentOS内核正式开源
查看>>
腾讯汤道生:开源已成为许多技术驱动型产业重要的创新推动力
查看>>
微信小程序多端框架 kbone 开源
查看>>
视频质量评估算法 DVQA 正式开源
查看>>
在中国提供了60亿次服务的疫情模块向世界开源 腾讯抗疫科技输出海外
查看>>
在中国提供了60亿次服务的疫情模块向世界开源
查看>>
世界卫生组织与腾讯加深合作 新冠肺炎AI自查助手全球开源
查看>>
Hibernate 中get, load 区别
查看>>
java反射详解
查看>>
JPA 注解
查看>>
JQuery 简介
查看>>
Java创建对象的方法
查看>>
Extjs自定义组件
查看>>
TreeGrid 异步加载节点
查看>>
Struts2 标签库讲解
查看>>
Google Web工具包 GWT
查看>>
材料与工程学科相关软件
查看>>