我知道mapreduce输出存储在名为part-r-*forreducer和part-m-*formapper的文件中。当我运行mapreduce作业时,有时会在单个文件中获得整个输出(大小约为150MB),有时对于几乎相同的数据大小,我会得到两个输出文件(一个100mb和另一个50mb)。这对我来说似乎很随意。我找不到任何原因。我想知道它是如何决定将该数据放入单个或多个输出文件中的。如果有任何方式我们可以控制它。谢谢 最佳答案 与Jijo在此处的回答中指定的不同-文件的数量取决于Reducers/Mappers的数量。与集群物理节
我使用以下语法创建了一个Mapper:publicclassxyzextendsMapReduceBaseimplementsMapper{-----publicvoidmap(LongWritablekey,Textvalue,OutputCollectoroutput,Reporterreporter)--}在作业中,我创建了一个Job对象:Jobjob=newJob(getConf());对于这项工作,我无法使用以下方法添加Mapper类:job.setMapper(xyz);错误信息:ThemethodsetMapperClass(Class)inthetypeJobisnot
我有一个perl程序,它将接受一个输入文件并对其进行处理,并生成一个输出文件作为结果。现在我需要在hadoop上使用这个perl程序。因此perl程序将在存储在边缘节点上的数据block上运行,我不应该修改perl代码。我不知道如何开始。有人可以给我任何建议吗?我可以编写一个java程序,在mapper类中使用进程构建器调用perl程序并将结果合并到reducer类中吗??还有其他方法可以实现吗? 最佳答案 我相信您可以使用hadoopstreaming做到这一点。根据tomwhite,hadoop权威指南,第3版的作者。页#622
我是Hadoop的新手,我的map-reduce代码可以工作,但它不会产生任何输出。这是map-reduce的信息:16/09/2013:11:40INFOmapred.JobClient:Jobcomplete:job_201609081210_007816/09/2013:11:40INFOmapred.JobClient:Counters:2816/09/2013:11:40INFOmapred.JobClient:Map-ReduceFramework16/09/2013:11:40INFOmapred.JobClient:SpilledRecords=016/09/2013:
我在Hadoop平台(cloudera发行版)写了一个比较简单的map-reduce程序。除了常规的map-reduce任务之外,每个Map&Reduce都会将一些诊断信息写入标准输出。然而,当我查看这些日志文件时,我发现Map任务相对均匀地分布在节点之间(我有8个节点)。但是reduce任务标准输出日志只能在一台机器上找到。我想,这意味着所有的reduce任务最终都在一台机器上执行,这是有问题的和令人困惑的。有人知道这里发生了什么吗?是配置问题吗?我怎样才能使减少的工作也均匀分布? 最佳答案 如果您的映射器的输出都具有相同的键,它
Hadoop目前在其lib文件夹中附带commons-httpclient-3.0.1.jar。如果我有一个需要commons-httpclient-3.1.jar的map/reduce任务,将这个jar捆绑到我的hadoopjar的lib文件夹中似乎是不够的(就像对任何普通的外部jar所做的那样)依赖项),因为hadoop似乎正在从其lib文件夹中加载以前的jar,而不是使用我提供的那个。不可能使用hadoop也使用的不同版本的jar? 最佳答案 如果一切都失败了,使用maven-shade-plugin重命名commons-ht
我正在使用hadoop流、python、matlab和elasticmapreduce编写分布式图像处理应用程序。我已经使用matlab编译器编译了我的matlab代码的二进制可执行文件。我想知道如何将其合并到我的工作流程中,以便二进制文件成为Amazon的弹性mapreduce处理的一部分?看来我必须使用Hadoop分布式缓存?代码非常复杂(而且不是我写的)所以现在不可能将它移植到另一种语言。谢谢 最佳答案 以下内容并不完全是对您的Hadoop问题的回答,但我忍不住要问您为什么不在Grid资源上执行处理作业?有用于在网格上执行计算
似乎Hadoop(reference)支持它,但我不知道如何使用它。我想:a.)Map-ReadahugeXMLfileandloadtherelevantdataandpassontoreduceb.)Reduce-writetwo.sqlfilesfordifferenttables为什么我选择map/reduce是因为我必须对驻留在磁盘上的超过100k(可能更多)xml文件执行此操作。欢迎大家提出更好的建议感谢任何解释如何使用它的资源/教程。我正在使用Python并且想学习如何使用streaming实现这一点谢谢 最佳答案 这
我有一个Hadoopreduce任务,它分批读取其输入记录并进行大量处理,并为每个输入批处理写入大量输出。我有readHadoop认为写入输出是为了终止挂起任务的“进度”。然而,尽管不断写入大量输出,但我的任务仍会超时并被终止。那么:我如何才能知道Hadoop认为任务上次报告进度的时间?为什么我必须对每个context.write()调用context.progress()?有没有写作不算进步的情况?(例如,我的key是NullWritable。)我在CentOS5.7上使用ClouderaCDH3u1,如果这有什么不同的话。 最佳答案
我有一个Hadoop作业正在运行,它已经完成了4天的map部分,现在它似乎在reduce阶段暂停(reducer已完成30%)我真的希望有一种方法可以只重新处理reduce部分,而不必重新处理长期运行的map部分,有什么建议吗?如果我只有一个reducer,情况可能会变得更糟。 最佳答案 Hadoop只会在您的情况下重新启动Reduce步骤。但是,如果您的作业失败,您不能跳过map步骤。在这种情况下,您应该将这两个阶段分成单独的作业,尤其是当您的映射器是计算密集型的时候。 关于Hadoo