"hadoop最终指南-汤姆·怀特“一书的摘要如下:
用户映射函数和用户约简函数之间的所有逻辑称为混洗。洗牌然后跨越两个地图和缩小。在用户的map()函数之后,输出在内存循环缓冲区中。当缓冲区已满80%时,后台线程将开始运行。后台线程将将缓冲区的内容输出到溢出文件中。此溢出文件由键进行分区。在每个分区中,通过key.After排序对键值对进行排序,如果启用了组合器函数,则调用组合器函数。所有溢出文件将合并到一个MapOutputFile中。所有地图任务的MapOutputFile将通过网络收集,以减少任务。减少任务将执行另一种任务。然后调用用户的约简函数。
所以问题是:
1.)根据上面的总结,这就是流程:
1a.)这是流还是别的什么东西?
1b.)你能用一个例子来解释上面的流程吗?比如说单词计数例子,(我在网上找到的那些不是那么详细)?
2.)那么映射器的相位输出是一个大文件(MapOutputFile)?这是一个大文件,被破解,键值对被传递给相应的还原器?
3.)为什么排序第二次发生,而数据已经被排序&当传递到各自的减速机时合并?
4.)假设mapper1在datanode1上运行,那么reducer1是否有必要在Datanode1上运行?或者它可以在任何Datanode上运行?
发布于 2017-04-05 16:41:17
回答这个问题就像改写整个历史。你的很多疑问都与操作系统的概念有关,而不是MapReduce。
要了解更多有趣的想法,请参考:http://bytepadding.com/big-data/map-reduce/understanding-map-reduce-the-missing-guide/
https://stackoverflow.com/questions/42132371
复制相似问题