草庐IT

reducer-combiner

全部标签

hadoop - Cassandras Map Reduce 支持

我最近遇到了一个案例,其中Cassandra非常适合存储基于时间的事件,每个事件类型都有自定义的ttls(另一种解决方案是将它保存在hadoop中并手动进行簿记(ttls和其他东西,恕我直言,非常复杂想法)或切换到hbase)。问题是在没有Datastax企业版的情况下,cassandraMapReduce支持的开箱即用效果如何。他们似乎在CassandraFS上投入了很多,但我问自己是否正常的PigCassandraLoader得到积极维护并且实际上可以扩展(因为它似乎只是迭代切片中的行)。这是否适用于数百万行? 最佳答案 您可以

language-agnostic - Map Reduce 框架/基础设施

MapReduce是一种最近似乎受到很大关注的模式,我开始在我的一个专注于事件处理管道(iPhone加速度计和GPS数据)的项目中看到它的体现。我需要为这个项目构建大量的基础设施,事实上它超过了与之交互的逻辑代码的2倍。我构建的一些组件包括EventProcessors(带有输入和输出缓冲区、计时等)、EventListeners、聚合器和分阶段管道。这让我想到了mapreduce所需的“通用”基础设施是什么。由于我经常使用.Net,我可以看到框架和语言结构中内置的映射减少基础设施。函数式语言本身就支持这种范式。似乎每种语言都可以与mapreduce一起使用。甚至还有围绕该概念构建的语

hadoop - 如何直接将 mapper-reducer 的输出发送到另一个 mapper-reducer 而无需将输出保存到 hdfs

问题最终得到解决在底部查看我的解决方案最近我正在尝试运行MahoutinAction的第6章(list6.1~6.4)中的推荐系统示例。但是我遇到了一个问题,我已经用谷歌搜索了但找不到解决方案。问题来了:我有一对mapper-reducerpublicfinalclassWikipediaToItemPrefsMapperextendsMapper{privatestaticfinalPatternNUMBERS=Pattern.compile("(\\d+)");@Overrideprotectedvoidmap(LongWritablekey,Textvalue,Contextco

Hadoop 向所有 reducer 发送记录

如何将特定记录发送到我的所有reducer?我知道Partitioner类及其作用,但我没有看到任何简单的方法来确保将记录发送到所有reducer。基本上,Partitioner有这个方法:intgetPartition(K2key,V2value,intnumPartitions)我的第一个想法是让Partitioner和Mapper如下协作:Mapper保持输出记录的次数等于reduce任务的数量,Partitioner返回所有整数(从0到numPartitions-1),这样可以确保记录到达所有分区。还有其他更聪明的方法可以解决这个问题吗?例如,我为需要发送到所有分区的记录返回-

hadoop - hadoop 必须在 reduce 之前完成映射吗?

我在大学的讲师说,(Hadoop)reduce操作只有在所有map操作完成后才能开始。这与明显有时显示的map-reduce流操作的输出形成对比:map80%reduce13%map80%reduce27%andthenmap100%reduce27%..map100%reduce100%(我家里有一个mapreduce三节点集群,我已经运行了一些流媒体作业)。鉴于我的讲师知道他在说什么,输出意味着什么?当reduce已启动但map未完成时,作业处于什么状态? 最佳答案 Reduce阶段有3个步骤:1)复制(数据到reducers)

hadoop - 是否可以在 hadoop 中将映射器的一部分发送到 reducer,而仅将另一部分写入 HDFS?

我想将部分映射器输出写入一个文件夹,比如HDFS中的文件夹A。输出的另一部分,我希望它由reducer处理。这可能吗?我知道多个输出。这可能使用多个输出吗?谢谢! 最佳答案 是的,可以使用MultipleOutputs,根据文档,在map阶段通过MultipleOutputs传递的任何输出都会被reducer忽略,所以这正是您想要的。我在myGitHub上写了一个小例子我希望你会发现它很有用。 关于hadoop-是否可以在hadoop中将映射器的一部分发送到reducer,而仅将另一部分

sorting - 深入了解hadoop中Map reduce作业中map阶段的内部工作?

我正在阅读Hadoop:Thedefinitiveguide3rdedtition通过汤姆怀特。它是了解Hadoop内部结构的极好资源,特别是Map-Reduce我感兴趣的。从书中,(第205页):洗牌和排序MapReduce保证每个reducer的输入都按键排序。系统执行排序的过程——并将map输出作为输入传输到reducer——被称为shuffle。我由此推断,key在发送到reducer之前是经过排序的,说明job的map阶段的输出是排序的。请注意:我不称之为映射器,因为映射阶段包括映射器(由程序员编写)和MR框架的内置排序机制。map侧每个映射任务都有一个循环内存缓冲区,它将输

hadoop - 有没有办法在 Hadoop 中终止 reducer 任务?

运行几个mapreduce作业,一个作业接管了所有的reducer容量。有没有办法杀死一两个reducer任务来释放集群?我可以直接转到任务跟踪器服务器之一并手动终止java进程。但我想知道是否有更体面的方法来做到这一点? 最佳答案 您可以通过以下方式终止任务尝试:hadoopjob-kill-task[task_attempt_id]要获取任务尝试ID,您需要更深入地了解任务(通过单击作业跟踪器上的任务超链接)。 关于hadoop-有没有办法在Hadoop中终止reducer任务?,我

java - 为什么将 Mapper 和 Reducer 类声明为静态的?

这可能表明我缺乏对Java的理解,但我想知道为什么在大多数MapReduce程序中映射器和缩减器类被声明为静态的? 最佳答案 当将mapper和reducer类声明为另一个类的内部类时,必须将它们声明为静态的,以便它们不依赖于父类。Hadoop使用反射为每个运行的map或reduce任务创建类的实例。创建的新实例需要一个零参数构造函数(否则它怎么知道要传递什么)。通过在不使用static关键字的情况下声明内部映射器或reduce类,java编译实际上创建了一个构造函数,该构造函数期望在构造时传入父类的实例。您应该能够通过对生成的类文

Hadoop reduce 停止运行

我现在有一个可怕的问题。当我在hadoop中运行作业时,map进程正常,达到100%,没有发生任何故障。然而,当reduce进程运行时,它在达到67%时停止了。这很奇怪。我是hadoop的新手,在网上搜索了很多资料,但现在仍然很困惑。下面是一段输出。13/10/2521:40:00INFOinput.FileInputFormat:Totalinputpathstoprocess:213/10/2521:40:01INFOmapred.JobClient:Runningjob:job_201310252001_000313/10/2521:40:02INFOmapred.JobClie