草庐IT

Iterator-reducer

全部标签

Hadoop - 是否有 reduce task 节点分配的位置意识检查

到目前为止我读过的所有书籍和博客都没有提供太多关于reducetask分配的信息。看起来可用槽的reduce任务分配是随机。这没有意义,因为在不考虑数据(map)局部性的情况下跨网络洗牌数据违反了hadoop设计原则。来自同一个文件的block很有可能(不是绝对的可能性)被放置在同一个机架或附近的机架中。因此,这些拆分/block的maptask也将在这些机架中(大多数时候)。如果这是一种可能的情况,为什么不尝试将reduce任务分配给与map任务相同的机架中的插槽?这不会提高1000多个节点集群的性能吗?特别是当输入是序列或映射文件时。谁能确认reducer随机放置是正确的(正版书是

java - 在 arraylist 中缓存可迭代以在 reducer 中迭代两次不起作用

我的MR程序有一些奇怪的问题,不知道为什么它会这样工作。也许可以给我提示它有什么问题?这就是我的Mapper函数的样子:IntegerClick_ID=0;publicvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,InterruptedException{Stringline=value.toString();String[]lineArr=line.split("\t");Stringnm_uv_id=lineArr[0];Stringsession_id=lineArr[1];Stringtim

java - mapred.reduce.tasks 没有按预期工作

我有一个简单的mapreduce作业,它使用默认的映射器和缩减器。输入是一些文本文件。我在伪分布式模式下使用Hadoop2.x。我担心的是,即使我设置了mapred.reduce.tasks=2,仍然只有一个reducer被调用。packageorg.priya.sort;importjava.net.URI;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.conf.Configured;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.i

java - Hadoop - 使用 Java 将 reducer 输出合并到单个文件

我有一个生成一些输出到HDFS目录的pig脚本。pig脚本还在同一个HDFS目录中生成一个SUCCESS文件。pig脚本的输出被分成多个部分,因为脚本中使用的reducer数量是通过“SETdefault_paralleln;”定义的我现在想使用Java将所有文件部分连接/合并到一个文件中。我显然想在连接时忽略SUCCESS文件。我如何在Java中执行此操作?提前致谢。 最佳答案 您可以通过shell命令使用getmerge将多个文件合并为一个文件。Usage:hdfsdfs-getmergeExample:hdfsdfs-getm

hadoop - 为什么map/reduce输出一个空文件,没有报异常

我实现了一个简单的map/reduce程序来制作倒排索引(我的小型搜索引擎的一部分)。每件事都很好。但是在我将输入文件大小扩大到20MB以上(仍然是测试用的小文件)后,输出文件将是空的。这意味着我可以找到文件“part-00000”,但它是0个字节。奇怪的是一点也不异常(exception)。这是我的日志:(注意“Mapinputrecords=19405,Combineoutputrecords=4111513,Reduceinputrecords=0”)SEInvertedIndexProgramstarts!...12/10/2800:58:05WARNutil.NativeCo

java - 在多个 map-reduce 作业之间传递数据库连接对象

从根本上说,这个问题是关于:同一个数据库连接是否可以跨多个进程使用(因为不同的map-reduce作业在真正不同的独立进程中)。我知道这是一个微不足道的问题,但如果有人也能回答这个问题那就太好了:如果与数据库的最大连接数(在托管数据库的服务器上预先配置)有筋疲力尽,一个新的进程试图建立一个新的连接?它是否等待一段时间,如果是,是否有办法为此等待时间设置超时。在这种特殊情况下,我是在谈论PostGres数据库,用于与数据库对话的语言是java。为了让您了解问题的背景,我有多个并行运行的map-reduce作业(大约40个reducer),每个作业都想更新一个PostGres数据库。我如何

java - 两个相等的组合键不会到达同一个 reducer

我正在使用MapReduce框架在Java中制作Hadoop应用程序。我只对输入和输出使用文本键和值。在减少到最终输出之前,我使用组合器执行额外的计算步骤。但我遇到的问题是键没有转到同一个reducer。我在组合器中创建并添加这样的键/值对:publicstaticclassStep4CombinerextendsReducer{privatestaticTextkey0=newText();privatestaticTextkey1=newText();publicvoidreduce(Textkey,Iterablevalues,Contextcontext)throwsIOExc

hadoop - Hadoop 不应该仅基于 hashCode 在 reducer 中分组 <key, (list of values) 吗?

我决定创建自己的WritableComparable类来了解Hadoop如何使用它。因此,我创建了一个带有两个实例变量(orderNumbercliente)的Order类并实现了所需的方法。我还为getters/setters/hashCode/equals/toString使用了Eclipse生成器。在compareTo中,我决定只使用orderNumber变量。我创建了一个简单的MapReduce作业,仅用于计算数据集中订单的出现次数。我的一个测试记录错误地是Ita而不是Itá,正如你在这里看到的:123Ita123Itá123Itá345Carol345Carol345Caro

hadoop - 如何在单个 MapReduce 作业中实现多个 reducer

我有一个庞大的数据集,我需要对相同的数据执行不同的功能。我想要四个输出文件。由于四个操作不同,我可以使用四个partitioner和四个reducer来实现相同的操作吗?是否有可能或者我是否需要编写四个作业来执行此操作?请帮助我! 最佳答案 第一种方法我认为您应该在一个独特的reduce方法中实现代码,并根据执行的过程发出n个键。例如:您实现A、B、C和D技术,然后,在您的映射器中您可以实现此(伪代码):dataA=ProcessA(key,value)context.write("A",dataA)dataB=ProcessB(k

hadoop - 由于没有减少运算符(operator), reduce task 数设置为 0,配置单元作业没有取得进展

我在我的集​​群上使用Cloudera发行版和Hive的第13版。我遇到了一个问题,在写入日志行后作业没有取得任何进展-“由于没有reduce运算符,reduce任务数设置为0”下面是相同的日志,你能帮我看看这是什么类型的问题,因为这不是代码问题,就好像我重新运行它成功完成的相同作业一样。Logginginitializedusingconfigurationinjar:file:/opt/cloudera/parcels/CDH-5.2.1-1.cdh5.2.1.p0.12/jars/hive-common-0.13.1-cdh5.2.1.jar!/hive-log4j.proper