博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MapReduce工作模型(重要)
阅读量:4300 次
发布时间:2019-05-27

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

Input就是数据

数据以key-value形式进来之后,我们需要一个解码器InputFormat,它是用来计算有多少个逻辑块以及我怎么读取这些内容。

然后就是Map过程,Map就是我们处理业务数据的过程,比如说WordCount,那我们就对每个单词计数。

然后是combiner是局部汇总,也就是把本机上的结果先汇总,减轻Reducer的压力。但这步不是必须的。

再往下就是Partitioner,它就是一个计算我哪块数据要往哪个Reducer上发,一般默认对key算出一个哈希值,再对Reducer机器的数量取模,就知道发到哪台机器了。

shuffle就是实际传送的过程。

Reducer负责汇总所有机器传来的结果,有几个Reducer最后就有几个输出文件,所以我们还需要一个加码器。解码就是这个内容,我告诉你怎么读,我不告诉你你不知道。而加码器就是我来制定我自己读文件的规则。

————————————————————————————————

重要概念:

1. Input Split(输入分片):

在执行map计算之前,要根据input进行分片。

每一个Input split对应一个map任务(可以看图),而且Input split存的不是数据块,

存的是一个分片长度和记录了数据位置的数组。

 

 

如何控制Mapper的个数:

这里先贴一下,我觉得这得动手才能了解。

 

(1)默认map个数

     如果不进行任何设置,默认的map个数是和blcok_size相关的。
     default_num = total_size / block_size;

(2)期望大小

     可以通过参数mapred.map.tasks来设置程序员期望的map个数,但是这个个数只有在大于default_num的时候,才会生效。
     goal_num = mapred.map.tasks;
---------------------  经过以上的分析,在设置map个数的时候,可以简单的总结为以下几点:
(1)如果想增加map个数,则设置mapred.map.tasks 为一个较大的值。
(2)如果想减小map个数,则设置mapred.min.split.size 为一个较大的值。
(3)如果输入中有很多小文件,依然想减少map个数,则需要将小文件merger为大文件,然后使用准则2。
--------------------- 
 

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

你可能感兴趣的文章
期货市场技术分析03_主要反转形态
查看>>
期货市场技术分析04_持续形态
查看>>
期货市场技术分析05_交易量和持仓兴趣
查看>>
TB交易开拓者入门教程
查看>>
TB创建公式应用dll失败 请检查用户权限,终极解决方案
查看>>
python绘制k线图(蜡烛图)报错 No module named 'matplotlib.finance
查看>>
talib均线大全
查看>>
期货市场技术分析06_长期图表和商品指数
查看>>
期货市场技术分析07_摆动指数和相反意见理论
查看>>
满屏的指标?删了吧,手把手教你裸 K 交易!
查看>>
不吹不黑 | 聊聊为什么要用99%精度的数据回测
查看>>
X 分钟速成 Python
查看>>
对于模拟交易所引发的思考
查看>>
高频交易的几种策略
查看>>
量化策略回测TRIXKDJ
查看>>
量化策略回测唐安奇通道
查看>>
CTA策略如何过滤部分震荡行情?
查看>>
量化策略回测DualThrust
查看>>
量化策略回测BoolC
查看>>
量化策略回测DCCV2
查看>>