我有一个基于C++的MapReduce作业,我正在使用Hadoop流。然而,即使我在命令行配置中将它们设置为18作为mapred.tasktracker.reduce,每个节点的最大reducer数量最终还是7.tasks.maximum=18;还有什么可以阻止reducer发出更多的reduce任务吗? 最佳答案 修改mapred.tasktracker.reduce.tasks.maximum属性后,您是否重新启动集群中的任务跟踪器?您应该能够转到JobTrackerwebui页面并确认每个任务跟踪器现在配置了18个reduce
如何将Mapper中收集的少量元数据传递给Reducer?在我的特定问题中,我只想传递两个long值,所以我不会为这些使用MultipleOutputFormat或MultipleOutputs。我尝试过的一些变体:(1)映射器context.getCounter("Countergroup","Counter").increment(1);reducercounter=context.getCounter("Countergroup","Counter").getValue();计数器不会定期更新,因此Reducer中的函数调用结果为0值。(2)映射器context.getConfi
是否有任何.xml文件或类似文件明确指定是我要运行Map任务或Reduce任务的节点。如果这是依赖于hadoop体系结构的,那么如何指定节点。 最佳答案 不,没有这样的功能。我怀疑是否会创建这样的功能,因为这会破坏可扩展性和容错性。 关于java-如何在Hadoop中显式指定map节点或reduce节点,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10781968/
我正在使用mongo-hadoop适配器来运行map/reduce作业。除了启动时间和工作所花费的时间外,一切都很好。即使数据集非常小,map时间也为13秒,reduce时间为12秒。事实上,我已经更改了mapred-site.xml和core-site.xml中的设置。但是map/reduce花费的时间似乎是恒定的。有什么办法可以减少它。我还从hanborq探索了优化的hadoop分布.他们使用工作池来更快地启动/设置作业。由于hanborq分布不是很活跃,是否有其他地方可用的等效项。它是4个月前更新的,基于旧版本的hadoop。我的一些设置如下:mapred-site.xml:ma
我想在reducer1的内存中保存文件A,在reducer2的内存中保存文件B。在hadoop中使用分布式缓存技术可能吗?或者,还有其他方法可以实现吗?谢谢 最佳答案 是的,如果文件相当小,您可以将这些文件设置在分布式缓存中。点击此链接http://developer.yahoo.com/hadoop/tutorial/module5.html#auxdata.它可能对你有用。如果您考虑这部分代码,则由您决定要在哪个reducer中处理哪个文件。Path[]cacheFiles=DistributedCache.getLocalCa
我目前正在使用Solr作为NoSQL数据库。我已经为各种类型的文档编制了索引,这些文档有时之间存在关联。对于新用例,我必须执行Solr不支持的等效连接。我想知道是否有一种方法可以将map-reduce作业提交到hadoop,然后hadoop可以从Solr中提取数据并执行连接。我正在寻找:讨论执行此操作的现有开源项目示例代码或批评告诉我这既不容易完成,也不能在一般情况下完成。提前致谢。注意:我在这里看到了一些关于相关或类似主题的问题:here,here和here但我没有得到我要找的东西。 最佳答案 您有两个基本选项。1)使用SOLRR
为什么我在我的hadoopmapreduce程序中出现类转换异常?现在这给了我一个异常(exception)。我的map应该以键/值的形式将输出生成为Text/IntWritable。我正在这样做,但仍然收到IOExceptionpublicclassAverageClaimsPerPatentsByCountry{publicstaticclassMyMapextendsMapReduceBaseimplementsMapper{@Overridepublicvoidmap(LongWritablekey,Textvalue,OutputCollectoroutput,Reporte
对于我的mapreduce作业,我正在读取输入文件中的行以获取外部文件路径。所以我用作输入的文件如下所示:/user/local/myfiles/temp1.png/user/local/myfiles/temp2.jpg/user/local/myfiles/temp3.txt/user/local/myfiles/temp4.txt....我想对这些文件执行一些操作。我需要从我在map函数中读取的字符串路径中获取文件对象。我的问题是:我应该把这些文件的实际副本放在哪里,以便我可以获取它们?我是否将它们放在hadoopdfs上?当我把它们放在本地系统上时,我得到一个找不到文件的错误,
我正在尝试在10个数据节点的集群中测试Mapreduce程序的性能。在此过程中,我使用了5个Reducers,然后是10个等等。我在想增加reducer的数量也会使工作完成得更快,但我观察到在30之后,即使你将数量增加到70,工作运行时间也没有任何区别,尽管有超过400个独特的keys和reducer的数量增加超过30应该会有所不同不是吗?谁能帮助我了解这是否有任何特殊原因?提前致谢 最佳答案 您没有观察到性能提升的原因有多种。当您进行此性能测试时,您正在运行哪些基准测试?还有你有多少映射器?你的工作有多大等等...根据您在此处简要
我想将#ofreducetasks设置为正好等于一个作业中可用的reduceslots的数量。默认情况下,reduce任务被计算为可用reduce插槽数量的约1.75倍(在ElasticMapreduce上)。我注意到我的工作非常均匀地完成reduce任务,因此最好在工作中每个reduce槽运行1个reducer。但是如何从我的作业配置中识别集群指标? 最佳答案 你可以使用ClusterMetrics获取Map-Reduce集群当前状态信息的类,如集群大小、黑名单和退役跟踪器数量、集群槽容量、当前占用/保留的map&reduce槽数