草庐IT

java - 使用 map reduce 的行数

我每天都有几千个文件从其他人那里放到一个目录中,每个文件大约400MB到1GB大。我想统计目录中的总行数。我打算像下面这样做mapreduce映射器publicstaticclassLineMapperextendsMapper{privatefinalstaticIntWritableone=newIntWritable(1);publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{context.write("static_key",one);}}reducerp

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

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

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

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数据库。我如何

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

java - Apache Crunch 管道如何生成 map reduce 作业?

我是Crunch/Cascading等Hadoop管道框架的新手。我想知道在这些框架的底部,它们是否生成原始的映射器和缩减器类,就像原始的MapReduce程序一样?从Crunch源代码中,我没有找到将管道转换为原始MapReduce类的代码。 最佳答案 您可以使用代码中的以下行可视化MapReduce计划紧缩创建。将在pipeline.dot中创建的DOT代码复制到graphviz中以查看计划。Stringdot=pipeline.getConfiguration().get("crunch.planner.dotfile");F

hadoop - 如何从 Oozie 触发的流式 Map Reduce 作业输出 Hadoop EL 计数器?

我正在使用Oozie触发流式MapReduce作业,为此我想收集以下HadoopEL常量:MAP_IN:Hadoop映射器输入记录计数器名称。MAP_OUT:Hadoopmapper输出记录计数器名称。REDUCE_IN:Hadoopreducer输入记录计数器名称。REDUCE_OUT:Hadoopreducer输入记录计数器名称。我看到这些可以使用${hadoop:counters('mr-action')[RECORDS][REDUCE_OUT]}但是,我不知道如何让这些值通过STDOUT输出回屏幕,或者输出到我启动Oozie工作流的服务器上HDFS中的文件。我试过将这些值传递给

hadoop - Hadoop 中 map、shuffle、merge 和 reduce 时间的精确定义

在Hadoop中,作业执行后会提供以下指标:map时间减少时间洗牌时间合并时间我找不到这些时间的确切定义,因为所有来源都不清楚这些时间是如何准确计算的。这是我的看法:map时间是读取输入和应用map功能以及排序数据的时间reduce时间是应用reduce函数并编写输出的时间Shuffletime是mergemap排序数据传输到reducer的时间合并时间是仅在reduce端合并map输出的时间我不确定粗体部分。我的分析正确吗? 最佳答案 我决定研究Hadoop代码以获得更多见解。下图解释了我的发现。我发现:map时间是maptask

hadoop - Map-reduce 通过 Oozie

如果我使用Oozie来运行MapReduce作业,是否有关于将启动多少映射器的具体数字?是吗:一个用于Oozie,一个用于map-reduce作业或一个用于Oozie,一个映射器用于每64MBblock(默认block大小) 最佳答案 上面的回答主要集中在一个mapreduce作业需要多少个map和reduce上。但是,当您特别询问oozie时,我将通过Oozie分享我在mapreduce(在pig中)方面的经验。解释当您启动oozie工作流程时,您需要1个yarn应用程序。我不确定逻辑是什么,但看起来这些应用程序通常需要1张map