草庐IT

MPI_Reduce

全部标签

hadoop - mapreduce 的哪个部分/类是停止 reduce 任务的逻辑实现

在HadoopMapReduce中,在所有映射器完成之前,没有缩减器启动。有人可以解释一下这个逻辑是在哪个部分/类/代码行实现的吗?我说的是HadoopMapReduce版本1(不是Yarn)。我已经搜索了mapreduce框架,但是类太多了,我不太了解方法调用及其顺序。换句话说,我需要(首先用于测试目的)让reducers开始减少,即使仍然有工作的映射器。我知道这样我得到的工作结果是错误的,但我知道这是更改框架部分的一些工作的开始。那么我应该从哪里开始查看并进行更改? 最佳答案 这是在洗牌阶段完成的。对于Hadoop1.x,请查看

hadoop - 有什么方法可以防止在所有 map task 完成之前 reduce task 开始

我想在Hadoop集群上同时运行多个作业,但我想阻止某些作业在该作业的所有映射任务完成之前开始缩减阶段(使缩减槽繁忙或保留)。是否有任何配置可以像上面那样设置主题限制?谢谢。 最佳答案 减少慢启动默认情况下,调度程序会等待作业中5%的maptask完成为同一工作安排reducetask。对于大型作业,这可能会导致问题集群利用率,因为它们在等待map任务时占用reduce槽完全的。将mapred.reduce.slowstart.completed.maps设置为更高的值,例如0.80(80%),有助于提高吞吐量。引用:Hadoop权

hadoop - map() 和 reduce() 应该返回相同类型的键/值对吗?

在编写MapReduce作业(如果相关,特别是Hadoop)时,必须定义一个map()和一个reduce()函数,两者都会产生一系列键/值对。键和值的数据类型由应用程序自由定义。在字数统计的典型示例中,这两个函数都产生类型为(string,int)的对,键是一个字,值是出现次数。在这里-以及我见过的所有其他示例-输出的键和值类型在两个函数之间是一致的。map()和reduce()生成的键/值对的类型必须/应该在任何MapReduce应用程序中相同吗?如果是:为什么? 最佳答案 没有。显然,map的输出对类型和reduce的输入对类型

hadoop - map-reduce 是否可以有多个输出文件?

在我的输入文件中,我有一列作为国家/地区。现在,我的任务是将特定国家/地区的记录放入以该国家/地区命名的单独文件中。这可能在Map-reduce中做吗?!请分享您对此的看法。 最佳答案 是的,在hadoop中你可以使用MultipleOutputFormat要做到这一点,使用它的generateFileNameForKeyValue方法。使用您的国家/地区名称作为键并使用记录作为值,这应该完全按照您的需要工作。 关于hadoop-map-reduce是否可以有多个输出文件?,我们在Sta

hadoop - 连接 Elastic Map Reduce ruby​​ 客户端时出错

我正在按照AWS上提到的步骤使用SSH使用交互式Hivesession。我使用了以下资源https://github.com/ucbtwitter/getting-started/wiki/Using-Elastic-Map-Reduce-via-Command-Linehttp://docs.amazonwebservices.com/ElasticMapReduce/latest/GettingStartedGuide/SignUp.html我最初收到此错误“错误:缺少key访问ID”,然后我修复了我的JSON文件。JSON文件的格式与上述链接中提到的格式相同。当我运行这个命令时.

hadoop - Hbase Map 和 Reduce 在同一张表上

是否可以在同一个hbase表上进行映射和归约?例如考虑wordcount示例,我想映射列的每一行,减少它并立即在同一行上写入worcount。有可能这样做吗?如果有,性能如何? 最佳答案 我还没有尝试过这个,但我确实看到了陷入无限循环的风险。因此,如果你能做到这一点,那么你必须确保你用作输入的键范围不会与你作为输出产生的键重叠。 关于hadoop-HbaseMap和Reduce在同一张表上,我们在StackOverflow上找到一个类似的问题: https:/

hadoop - 在 map/reduce 之间共享资源

运行map任务会减慢reduce任务吗?我所说的放慢速度是指它们共享公共(public)资源吗? 最佳答案 当然,它们会以某种方式影响系统。它们都是在同一台机器上运行的java进程。然而,在当今的系统配置中,只要您不对插槽数量做一些愚蠢的事情,这就没什么大不了的。每个map任务或reduce任务本身都不是多线程或多进程的,因此它大多只使用一个CPU核心。这就是为什么一般的经验法则是每个核心1个映射或减少插槽是有道理的。因此,如果您有12个核心,则可以执行8个映射槽和4个缩减槽之类的操作。此外,这些任务将共享同一个磁盘,但这也没什么大

hadoop - 为什么有时mapreduce Average Reduce Time 是负数?

我在hadoop集群上运行mapreduce作业。我在浏览器中看到的job运行时间master:8088和master:19888(jobhistoryserverwebUI)如下:主人:8088大师:19888我有两个问题:为什么两张图片的耗时不同?为什么有时平均减少时间是负数? 最佳答案 看起来AverageReduceTime是基于之前任务(洗牌/合并)完成所花费的时间,而不一定是reduce实际运行所花费的时间。看着这个sourcecode您可以看到在第300行附近发生的相关计算。if(attempt.getState()=

Hadoop 计数器 : how to access the Reporter object outside map() and reduce()

要使用计数器,我需要有权访问Reporter对象。Reporter对象作为参数传递给map()和reduce(),因此我可以这样做:reporter.incrCounter(NUM_RECORDS,1);但是我需要在MultipleOutputFormat类中使用计数器(我正在使用方法生成文件名键值)问题:如何访问MultipleOutputFormat类中的Reporter对象? 最佳答案 您可以创建自己的MultipleOutputFormat类,MyMultipleOutputFormat(这听起来有点像你在做的)并创建一个接

hadoop - 多个映射后跟一个使用 Hadoop 和 HBase 的 reduce

我有几个Hbase表。我希望在每个表上运行一个映射任务(每个映射都是一个不同的Mapper类,因为每个表都包含异构数据),然后是一个reduce。如果不明确地将每个映射后的数据减少到临时SequenceFile中,我无法确定这是否可行。如有任何帮助,我们将不胜感激。 最佳答案 您似乎一次只能在一个表上运行MR(请参阅TableMapReduceUtil)。因此,最有可能的是,您最好的选择就是您所怀疑的:将每个表的输出保存到一个临时位置(例如SequenceFile或tmphbase表),然后编写一个最终的MR作业,将该位置作为输入并