草庐IT

Iterator-reducer

全部标签

Hadoop 集群 - 如何知道每个 tasktracker 的理想最大 map/reduce 任务数

我刚刚使用Hadoop0.20.205设置了一个Hadoop集群。我有一个主机(NameNode和JobTracker)和另外两个盒子(从机)。我试图了解如何定义要使用的map和reduce任务的数量。到目前为止,我了解到我可以设置每个TaskTracker能够同时处理的最大map和reduce任务数:*mapred.tasktracker.map.tasks.maximum*和*mapred.tasktracker.reduce.tasks.maximum*.此外,我还可以使用*mapred.map.tasks*定义整个集群可以同时运行的最大map任务数。是吗?如果是这样,我怎么知道

java - Hadoop 2.2 链 MapReduce 作业 Map -> Reducer -> Map -> Reducer

我有两个MapReduce作业,第一个Reducer的输出是第二个Mapper的输入:Map1->Reduce1->Map2->Reduce2现在Map2从Reduce1输出的文件中读取。所以Map1->Reduce1和Map2->Reduce2是独立的。它有效,但如果R​​educe1的输出直接是Map2的输入,它会更容易,我认为会更优化。有办法吗?在这种情况下,Map2将只是一个身份映射器,所以如果我可以这样做会更好:Map1->Reduce1->Reduce2Reduce1、Map2和Reduce2具有相同的输入和输出类型。谢谢! 最佳答案

Hadoop reducer 清理函数

在hadoopreduce代码中,我有一个打印总计数的清理函数,但它打印了两次。我认为这是因为它正在打印键+值的计数和单独的计数,但我不确定。我的代码是这样的:protectedvoidcleanup(Contextcontext)throwsIOException,InterruptedException{Textt1=newText("TotalCount");context.write(t1,newIntWritable(count));}在reducer类中,输出是:TotalCount9477TotalCount4738 最佳答案

hadoop - 插入覆盖本地目录启动 map reduce 作业以进行简单查询

我有两个配置单元查询select*fromtab1limit3;这会快速返回3行,而无需启动任何mapreduce作业;如果我要求将输出写入本地目录,则相同的查询`INSERTOVERWRITELOCALDIRECTORY"/tmp/query1/"select*fromtab1limit3;此查询启动一个mapreduce作业,扫描表的所有文件,然后返回3行,所讨论的表很大,因此扫描整个表需要很长时间。为什么两个查询的执行方式不同? 最佳答案 一个简单的解释是:当您在Hive中执行一个简单的select*fromtab1limit

hadoop - 哪个决定了 hive 中 map 任务和 reduce 任务的数量?

我使用配置单元运行查询“select*fromT1,T2whereT1.a=T2.b”,架构为T1(aint,bint),T2(aint,bint),当它运行时,生成了6个map任务和1个reduce任务,我想问一下,哪个决定了map任务和reduce任务的数量?数据量是多少? 最佳答案 map任务的数量取决于数据量、block大小和分割大小。例如:如果您的block大小为128MB,文件大小为1GB,那么将有8个映射任务。您可以使用拆分大小来控制它。Hive作业中的reducer数量默认为1。你必须通过配置更新它mapred.re

java - 在 Hadoop 中链接一个 Reduce-only 作业

我正在使用ControlledJobs在Hadoop2.2.0中实现一个MR作业链。基本架构是这样的:mapper1->reducer1->mapper2->reducer2但是,mapper2是标识。有没有办法可以轻松让reducer1生成key-value-pairs传给reducer2?现在,两轮的作业输出配置如下://setintermediate/mapperoutputjob.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(Text.class);//setreduceroutputjob.setOut

java - 如何使用具有多对多关系的两个表在 Java Mapreduce 上执行 reduce side join?

首先,我不确定这是否可能。如果可能的话,我仍然不确定这是否是正确的做法。我拥有的是:HDFS上的两个名为A和B的大型csv文件A有以下列:a1、a2、a3、a4B有以下列:b1、b2、b3、b4、b5我想要的是:加入两个文件,假设a1=b1我遇到的问题是:如果连接键上的两个文件之间存在多对多关系,我如何使用Java上的HadoopMapreduce执行此操作?从下图中可以看出,A有4行匹配a1=x,B有2行匹配b1=x。因此,在a1=b1=x上连接两个表会产生4*2=8行(组合),如最后一个表所示。使用reduce侧连接,我无法做到这一点,因为这意味着增加键值对,这违背了MapRedu

java - Hadoop : Reducer class not called even with Overrides

我在hadoop中尝试了mapreducewordcount代码,但是reducer类从未被调用,程序在运行mapper类后终止。importjava.io.IOException;importjava.util.*;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.conf.*;importorg.apache.hadoop.io.*;importorg.apache.hadoop.mapreduce.*;importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat

hadoop - 是否可以在特定的从节点上安排 Map Reduce 作业?

是否可以在Hadoop集群中的某些特定节点而不是所有节点上安排任何mapreduce作业?例如,在10个可用节点中的4个从属节点上。我尝试在Google上搜索但没有找到任何相关结果。Thispage表示默认情况下所有作业都安排在整个集群上。我的需求原因:作为研究生水平的作业,我必须实现一个分布式关系数据库。我正在使用Hadoop,根据分配要求,我们必须将数据复制到集群的连接机器。现在我们的一个复制模型要求在可用机器的子集上运行查询。 最佳答案 假设在hadoop集群上处理一些数据,你已经提交了一个mapreduce作业,现在它所做的

java - map reduce 程序在线程 "main"java.io.IOException : Job failed 中显示错误异常

我正在尝试运行我的mapreduce程序。在我尝试运行它之后,输出如下。(我只显示输出的最后一部分)FileSystemCountersFILE:Numberofbytesread=3052FILE:Numberofbyteswritten=224295FILE:Numberofreadoperations=0FILE:Numberoflargereadoperations=0FILE:Numberofwriteoperations=0HDFS:Numberofbytesread=0HDFS:Numberofbyteswritten=0HDFS:Numberofreadoperatio