草庐IT

reducer-combiner

全部标签

hadoop - 在 map reduce 的 reduce 端进行同机数据处理

HadoopMapReduce的一大优势是Map进程发生在它们操作的数据所在的同一台机器上(在可能的范围内)。但这对Reduce端来说可能是真的吗?例如,在Map-only作业的极端情况下,所有输出数据最终都与相应的输入数据位于同一台机器上(对吗?)。但在输出与输出有些相关的中间情况下,对输出进行分区并尽可能将其保存在同一台机器上似乎是合理的。这可能吗?这已经发生了吗? 最佳答案 Reducers的输入可以驻留在任何节点(本地或远程)上,而不必在它们运行的​​同一台机器上。当Mappers完成时,它们的输出被写入到它们运行的​​机器

hadoop - 从另一个 Java 进程运行 Map Reduce 任务

我已准备好MR作业。到目前为止,我一直在通过调用./bin/hadoopjarjarname来运行任务。现在我必须从另一个Java进程运行相同的MR作业。我怎样才能做同样的事情?谢谢。 最佳答案 如果您确实想使用来自外部java程序的hadoopjar运行,您可以尝试ProcessBuilder。ProcessBuilderprobuilder=newProcessBuilder("hadoopjar...");//Starttheprocessandwaitforittofinish.Processprocess=processB

java - Hadoop MapReduce : size of data processed in shuffle and reduce phase

我在包含多个AWS实例的集群上运行HadoopMapReduceJava应用程序。我想知道是否有可能在混洗阶段知道数据集的大小,即总共有多少数据被混洗。另外,是否可以知道每个reducer任务处理了多少数据? 最佳答案 您应该能够从JobTrackerWebUI中找到此信息。有一个名为“Reduceshufflebytes”的计数器详细说明了被打乱的总字节数-参见https://issues.apache.org/jira/browse/HADOOP-4845以及原始链接票证以获取更多信息。对于每个reducer计数,深入到已完成的

hadoop - 挣扎于简单的 hadoop map reduce 代码任务

我是hadoop世界的新手,我真的在为一项简单的任务而苦苦挣扎,却找不到完成它的方法。我们有一个场景,其中有不同的客户调用不同的人(与不同的移动运营商)。每个电话的详细信息都有通话开始时间日期,通话结束时间和日期,已调用电话的各种运营商名称。我们有以下格式的输入文件:客户电话|通话开始时间及日期|通话结束时间及日期|已调用电话的各种移动运营商例如输入文件是这样的:9898765467|03:1412/10/2013|03:4012/10/2013|airtel9898765467|06:2012/10/2013|07:0512/10/2013|vodaphone9899875321|0

hadoop - 在 Hadoop 中完成 Map 和 Reduce 任务的时间

我愿意了解这两个计数器的真正含义Totaltimespentbyall映射占用的时隙(毫秒)和所有人花费的总时间减少了占用的时隙(毫秒)。刚写了个类似字数统计的MR程序我得到了**所有map在占用槽中花费的总时间(毫秒)=15667400所有reduce在占用slots上花费的总时间(ms)=158952花费的CPU时间(毫秒)=51930真正的7米38.886秒**为什么会这样?????第一个计数器的值非常非常高这实际上是其他三个无法比拟的。请清除这个对我来说。谢谢问候 最佳答案 可能需要更多关于输入数据的上下文,但前两个计数器显

输出键为 NullWritable 时的 Hadoop reducer 输出顺序

我正在编写一个hadoop应用程序,其最终输出是一个bmp图像。我将输出格式更改为byte,这是我的问题:如果我将输出键设置为NullWritable,reducer输出顺序会是什么? 最佳答案 reducer的输出键类型对reducer输出的顺序没有影响-它由reducer输入键控制,并且通过键compareTo方法或原始比较器的自然排序,如果配置。所以顺序将与你的reducer处理记录的顺序相同(除非你的reducer维护键/值之间的状态并定期刷新此状态) 关于输出键为NullWri

java - 在 map reduce spark 的设置键值对中插入一个 if 循环

如何在sparkmapreduce中设置键时插入if循环?我希望如果输入的单词是以大写字母开头的,则将其设置为键,否则不(字数统计示例示例输入-affaAgshsdjdDhh示例输出-Agshs1嗯1) 最佳答案 你必须使用filter()sample_input.txtaffaAgshsdjdDhhsmallCapitalFirstbignotFirstBigSpark外壳valdata=sc.textFile("sample_input.txt")valfilteredData=data.flatMap(line=>line.s

hadoop - mapper和reducer类是否需要部署在一个Hadoop集群的所有节点上

是否需要将包含我的Mapper/Reducer类的jar文件部署到所有运行Hadoop的节点上?还是只在主节点(NameNode)上? 最佳答案 简短回答:否。开始MapReduce作业的节点/网关机器。您需要将主要的MapReduceDriverjar放入本地文件系统,所有依赖jar都可以放入本地文件系统或HDFS小路。因此,当您开始作业时,您将使用-libjars参数传递依赖库jar路径。HDFSjar将在HDFS中的路径中包含hdfs://前缀。本地系统上需要主MapReducejar才能启动mapreduce作业,这实际上是

Hadoop 处理 reducer 中的数据倾斜

我正在尝试确定hadoopapi(hadoop2.0.0mrv1)中是否有某些可用的Hook来处理reducer的数据倾斜。场景:有一个自定义的组合键和分区器来将数据路由到缩减器。为了处理奇怪的情况,但很可能是一百万个键和大值在同一个reducer上结束的情况,需要某种启发式方法,以便可以进一步划分这些数据以产生新的reducer。我正在考虑一个两步过程将mapred.max.reduce.failures.percent设置为10%并让作业完成通过传递一个失败的数据集重新运行作业通过驱动程序进行配置,这将导致我的分区程序然后随机划分倾斜数据。分区器将实现可配置接口(interface

hadoop - Hadoop 如何决定有多少节点将执行 Map 和 Reduce 任务?

我是hadoop的新手,我正在努力理解它。我在谈论hadoop2。当我有一个我想执行MapReduce的输入文件时,在MapReduce程序中我说了Split的参数,所以它会创建与splits一样多的map任务,对吧?资源管理器知道文件在哪里,并将任务发送给拥有数据的节点,但谁说有多少节点将执行任务?mapsdonde之后就是shuffle,哪个节点做reduce任务是由做hashmap的partitioner决定的,对吧?有多少节点会做reduce任务?做过map的节点也会做reduce任务吗?谢谢。TLDR:如果我有一个集群并运行MapReduce作业,Hadoop如何决定有多少节