草庐IT

java - 如何在 Hadoop 1.0.4 中链接 mapper/reducer?

我使用的是Hadoop1.0.4的"new"API(包org.apache.hadoop.mapreduce中的类)。当我想链接mapper/reducer时,我发现ChainMapper、ChainReducer是为“旧”API(包org.apache.hadoop.mapred中的类)编写的。我该怎么办? 最佳答案 我也在找。我确实得到了答案,尽管已经晚了,但我认为分享这个可能会对某人有所帮助。从Hadoop2.0开始,您可以在org.apache.hadoop.mapreduce.lib.chain包中找到ChainMappe

java - Hadoop(java)改变Mapper输出值的类型

我正在编写一个映射器函数,它生成一些user_id的键,值也是文本类型。这是我的做法publicstaticclassUserMapperextendsMapper{privatefinalstaticIntWritableone=newIntWritable(1);privateTextuserid=newText();privateTextcatid=newText();/*mapmethod*/publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{String

Hadoop Map-Reduce : what you can tell about a state: mappers: 80%, reducer :20%

在采访中有人问我一个问题:关于状态,你能说些什么:映射器:80%,缩减器:20%?我的理解是,进入那种状态是不可能的。因为在reducer开始工作之前,所有映射器都应该完成运行:收集所有键值对并按键分组。我说的对吗? 最佳答案 Reducers为20%意味着后台线程已开始将数据从mapper输出位置复制到reducer输入位置。这就是为什么在映射器输出达到100%之前,reducers进度显示为20%。 关于HadoopMap-Reduce:whatyoucantellaboutasta

hadoop - 按键然后按值对 Mapper 输出进行排序

我正在尝试编写一个示例MapReduce程序,其Mapper输出如下所示:1/1/201215:11:461/1/201219:09:261/1/201214:01:251/1/201217:32:261/1/201217:41:001/1/201219:35:381/1/201214:28:101/1/201215:45:55我希望我对reducer的输入按键排序,然后按值排序。默认情况下,Hadoop框架仅按键对映射器输出进行排序。我想我应该使用二级排序来完成这项任务,但不确定如何使用它。谁能帮我解决这个问题? 最佳答案 在高层

python-2.7 - java.io.IOException : Broken pipe on increasing number of mappers/reducers, 很多

我在6个节点的hadoop集群上运行MapReduce作业,配置了4个映射任务和10个缩减任务。Mapper/Reducer在增加map/reduce任务数量时失败很多,如下所示,我遇到以下错误:标准错误日志java.lang.RuntimeException:PipeMapRed.waitOutputThreads():subprocessfailedwithcode143atorg.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:362)atorg.apache.hadoop.streamin

spring - Hadoop Mapper 中的依赖注入(inject)

我想在我的Mapper类中注入(inject)一个依赖项。示例映射器类:publicclassMapper(){privateMyInterfacemyObject;publicvoidmap(){//Mapcodehere}}我想使用Spring将MyInterface的实现注入(inject)到myObject。这不可能直接使用spring,因为Hadoop框架本身会实例化Mapper对象。我唯一能做的就是向我的Mapper类添加一个配置函数,然后执行如下操作:publicvoidconfigure(){//createapplicationcontexthere,thenmyOb

hadoop - 使用 Kerberos 安全连接到 Mapper 中的 HIVE

我的目标是在安全集群(kerberos)HDP2.3上运行MapReduce并连接到Oozie工作流调度程序中的Hive。我能够在直线中连接到配置单元,或者当我使用以下连接字符串将其作为java应用程序(yarnjar)运行时:DriverManager.getConnection("jdbc:hive2://host:10000/;principal=hive/_HOST@REALM","","");但是当我在Mapper中运行它时它失败了。ERROR[main]org.apache.thrift.transport.TSaslTransport:SASLnegotiationfai

Hadoop - Reducer 正在等待 Mapper 输入?

如标题中所述,当我执行我的Hadoop程序(并在本地模式下调试它)时,会发生以下情况:1.我的测试数据中的所有10个csv行都在Mapper、Partitioner和在映射步骤之后调用的RawComperator(OutputKeyComparatorClass)中得到正确处理。但是OutputValueGroupingComparatorClass和ReduceClass的函数之后不会执行。2.我的应用程序如下所示。(由于空间限制,我省略了我用作配置参数的类的实现,直到有人有想法,涉及它们):publicclassRetweetApplication{publicstaticintD

java - 接口(interface)作为Mapper值输出

我有一个映射器,其输出值设置为如下接口(interface):publicinterfaceOutValueextendsWritable{}在映射期间,我创建具有此签名的对象并发出它们:publicclassOutRecordimplementsOutValue{}我的Mapper是这样的:publicclassExampleMapperextendsMapper{}但是我收到了这个错误:java.io.IOException:Typemismatchinvaluefrommap:expectedOutValue,recievedOutRecordatorg.apache.hadoo

Hadoop Map Reduce,如何将第一个reducer输出和第一个map输入结合起来,作为第二个mapper的输入?

我需要使用mapreduce实现一个功能。要求如下。映射器的输入是一个包含两列productId和Salescount的文件Reducersoutput,salescount总和要求是我需要计算salescount/sum(salescount)。为此,我打算使用嵌套的mapreduce。但是对于第二个映射器,我需要使用第一个reducer输出和第一个映射的输入。我怎样才能实现这个。或者有什么替代方法吗?问候维努 最佳答案 您可以按照自己的方式使用ChainMapper和ChainReducer到PIPEMappers和Reduce