草庐IT

reducer-combiner

全部标签

hadoop - 让多个 reduce 任务组装一个 HDFS 文件作为输出

Hadoop中是否有任何低级API允许在不同机器上运行的多个reduce任务组装单个HDFS作为其计算输出?类似于,在作业开始时创建stubHDFS文件,然后每个reducer创建可变数量的数据block作为输出,并根据特定顺序将它们分配给该文件 最佳答案 答案是否定的,对于罕见的用例来说,这将是不必要的复杂化。你应该做什么选项1-在hadoop命令末尾添加一些代码intresult=job.waitForCompletion(true)?0:1;if(result==0){//statuscodeOK//lsjoboutputdi

java - 在 map reduce word count 程序中需要获取单词存在的文件

我正在读取多个输入文件以解决字数统计问题。示例文件名:文件1.txt文件2.txt文件3.txt我能够获得字数,但如果我还想获得文件名以及字数,应该添加什么。举个例子,文件1的内容:欢迎使用Hadoop文件2的内容:这是hadoop当前输出:Hadoop2是1这1到1欢迎1预期输出:Hadoop2File01.txtFile02.txt是1个File02.txt这1个File02.txt到1File01.txt欢迎1File01.txt 最佳答案 首先对输入进行拆分字符串文件=((FileSplit)inputSplit).getP

validation - 使用 map reduce 在数据集中执行地址验证

我有一个数据集,其中包含来自全局150个国家/地区的地址,您的任务是验证它们,数据存储在3个字段中-地址行、城市、邮政编码。我还有可用的每个国家的地址验证解决方案,但数据集不包括国家代码。任务是设计逻辑来处理数据并为每条记录找到国家/地区,以便它们可以通过验证组件运行。什么是最有效的方法。由于对每条记录运行所有150个地址验证组件被认为效率不高,我正在考虑并行处理和使用mapreduce。我的逻辑是这样的:一个可能的解决方案需要分布式方法和map/reduce框架中的并行处理,例如:可以将数据集分成相等的“block”,每个国家/地区将在不同集群上并行处理。在每个block上运行的映射

hadoop - hadoop reducer 的 reduce() 调用可以接收的最大记录数是多少?

我有一个映射器,它的输出通过使用我自己的分区器映射到多个不同的缩减器实例。我的分区程序确保始终将给定发送到给定的reducer实例。我想知道的是,如果由于某种原因,输入数据是倾斜的,并且我得到了一个特定键的一百万条记录(更准确地说,#records无法放入内存),reducer是否有任何可能的方式还可以正常工作吗?我的意思是,传递给reducer的hadoop可迭代对象是惰性加载程序吗? 最佳答案 与Reducer关联的值的唯一实际限制是本地磁盘上的可用空间,包括Map和Reduce端。这可以通过添加更多节点并因此添加更多Map/R

hadoop - 基于一个元素对整个 Reducer 值列表做一些事情

我有一个有趣的问题,我正在努力适应MapReduce。我有一堆日志条目。我需要做的是这样的:检查给定IP的任何条目是否设置了特定标志。如果是,则对具有该IP的所有条目应用转换,否则不转换。最简单的方法是关闭IP,然后在reducer中迭代一次值以检查是否设置了该标志,然后再次转换(如果需要)。不幸的是,我似乎只能迭代一次传递给reducer的Iterable。我看到的可能的解决方案是:在reducer中,将我正在读取的值序列化到磁盘,以便稍后可以延迟反序列化以进行第二次迭代。这看起来有点像hack。预先运行一些作业,生成要转换的IP列表,并将其存储在HBase或其他东西中。这显然需要H

memory - 比较使用 Map Reduce(Cloudera Hadoop 0.20.2)两个大小接近 3GB 的文本文件

我正在尝试在hadoopmap/reduce(用java、linux内核操作系统编写)中执行以下操作文本文件'rules-1'和'rules-2'(总共3GB大小)包含一些规则,每个规则由结束符分隔,因此可以使用readLine()函数读取文件。这些文件“rules-1”和“rules-2”需要作为一个整体从hdfs导入到我集群中的每个映射函数中,即这些文件不能跨不同的映射函数拆分。映射器的map函数的输入是一个名为“record”的文本文件(每行以结束符结束),因此我们从“record”文件中获取(键,值)对。该文件是可拆分的,可以作为整个map/reduce过程中使用的不同map函

sorting - hadoop streaming 是否在 map 和 reduce 阶段之间使用稳定的排序?

这对多阶段作业有影响。例如,如果我们在作业的第1阶段按键“a”排序,在作业的第2阶段按键“b”排序(将第1阶段的输出作为标准输入),我们是否可以假设当两个阶段完成时记录是按键“b”排序,然后按键“a”排序?出于这个问题的目的,假设映射器和缩减器不排列记录顺序。还假设reduce任务的数量为1个或更多。请记住,答案可能会因阶段1的reduce任务数量而异。例如,如果阶段1的reduce任务数量大于1,则keya将被拆分到多个文件中(尽管在相对于每个文件的排序顺序)。然而,当只有一个reduce任务时,所有值都将出现在同一个文件中,这可能是稳定性的必要条件,具体取决于实现。如果答案是肯定的

java - hadoop java : how to know that end of reducer input is reached?

我的reducer是这样的publicstaticclassReduceextendsMapReduceBaseimplementsReducer{ListallRecords=newArrayList();publicvoidreduce(IntWritablekey,Iteratorvalues,OutputCollectoroutput,Reporterreporter)throwsIOException{allRecords.add(values.next());Text[]outputValues=newText[7];for(inti=1;i>=7;i++){outputV

hadoop - 转换序列文件并通过 map 和 hadoop 中的 reduce 任务获取键值对

我想通过hadoopmapreduce应用程序从顺序文件中获取所有键值对。我关注了以下帖子http://lintool.github.com/Cloud9/docs/content/staging-records.html用于读取主类中的顺序文件,但该功能有效。我想将所有键值对打印到hdfs系统中的普通文本文件,我该如何实现?我的代码如下所示。importjava.io.File;importjava.io.IOException;importjava.util.*;importjava.util.logging.Level;importjava.util.logging.Logger

java - Hadoop MR 在 reduce 方法中保持数组引用

我想要一个arrayList来保存对reduce函数中对象的引用。@Overridepublicvoidreduce(finalTextpKey,finalIterablepValues,finalContextpContext)throwsIOException,InterruptedException{finalArrayListbsonObjects=newArrayList();for(finalBSONWritablevalue:pValues){bsonObjects.add(value);//dosomecalculations.}for(finalBSONWritabl