map任务split切片 reduce个数 partition
来源:互联网 发布:redmine数据迁移 编辑:程序博客网 时间:2024/05/21 10:40
mapreduce(map和reduce个数) map任务split切片 reduce个数 partition(下面有源码)
map个数:由任务切片spilt决定的,默认情况下一个split的大小就是block
由参与任务的文件个数决定的
maxSize:由配置参数mapred.max.spilt.size确定,已经不考虑用户设定的maptask个数;
minSize:inputSplit的最小值,由配置参数mapred.min.spilt.size确定,默认值为1;
BlockSize:HDFS中块的大小
splitSize=max(minsplitSzie,min(maxsplitSize,blockSize=128M))
fileSzie/splitSzie=split个数
conf.setLong("mapred.max.split.size",splitSize)
conf.setLong("mapred.min.split.size",splitSize)
按照正常方式,当最后两个切片小于blockSize大小的110%,会合并成一个block.
对于大文件,一般选择split=block,如果split<block 则会增加map执行的并发度,但是会造成在节点之间拉取数据
对于小文件,默认一个文件启动一个map,这样会启动多个map,增大节点资源消耗,此时可以使用使用InputFormat(下面有源码)将多个小文件加入到一个split,并适当增大split的大小,这样会减少map启动的个数,减少并发度,减少资源消耗
reduce个数:由分区个数决定 可以由用户在程序中Driver自定义job.setNumReduceTasks(3);一个ruduce对应一个结果文件partition
partiton(分区):用来指定map输出的key交给哪个reuducer处理 默认是通过对map输出的key取hashcode (hashcode值唯一且对于数字和字母都可以进行处理)对指定的reduce个数求模(取余)
key.hashcode() % N=job.setNumReduceTasks(n)
Group 分组:map输出的相同key放到一个分组
Sort 排序: 根据key进行排序
/** Partition keys by their {@link Object#hashCode()}. */
@InterfaceAudience.Public
@InterfaceStability.Stable
public class HashPartitioner<K, V> extends Partitioner<K, V> {
/** Use {@link Object#hashCode()} to partition. */
public int getPartition(K key, V value,
int numReduceTasks) {
return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;
}
}
public abstract class CombineFileInputFormat<K, V> extends CombineFileInputFormat<K, V> implements InputFormat<K, V>{
public InputSplit[] getSplits(JobConf job, int numSplits)
throws IOException {
List<InputSplit> newStyleSplits =
super.getSplits(new Job(job));
InputSplit[] ret = new InputSplit[newStyleSplits.size()];
for(int pos = 0; pos < newStyleSplits.size(); ++pos) {
CombineFileSplit newStyleSplit =
(CombineFileSplit) newStyleSplits.get(pos);
ret[pos] = new CombineFileSplit(job, newStyleSplit.getPaths(),
newStyleSplit.getStartOffsets(), newStyleSplit.getLengths(),
newStyleSplit.getLocations());
}
return ret;
}
}
- map任务split切片 reduce个数 partition
- map任务和reduce任务个数如何计算
- Map Reduce个数问题
- hive优化 map+reduce+split
- Map个数与Reduce个数的应用
- 远程提交Map/Reduce任务
- 远程提交Map/Reduce任务
- 给mrjob的python脚本加map reduce 个数限制 和 hadoop任务调度优先级
- hive 执行时reduce 任务个数 设置
- hive (map和reduce 个数的设定 )
- Map和Reduce个数设置问题
- map和reduce 个数的设定
- 如何确定map以及reduce的个数
- Hive 设置map 和 reduce 的个数
- Hive 设置map 和 reduce 的个数
- Hive 设置map 和 reduce 的个数
- Hive 设置map 和 reduce 的个数
- Hadoop map和reduce的个数
- 2017新成员基础练习
- 算法训练 5-2求指数
- HTTP协议详解
- 挑战程序竞赛系列(29):3.4熟练掌握动态规划
- python爬虫爬取豆瓣书籍信息并生成表格
- map任务split切片 reduce个数 partition
- LRU缓存策略-LintCode
- 目标
- binbinyang--Unable to create converter for class
- Glide Demo及自定义
- Web Reference和Service Reference的区别
- Linux编译出的进程内没有新编写的函数
- 80%的站长不知道的“网站微调”优化技术
- EasyuI TreeGrid设置行可选、checkbox可勾选,以及根据checkbox勾选,默认选中行