草庐IT

hadoop - 组合器在哪里组合映射器输出 - 在 Map 阶段或 Map-reduce 作业中的 reduce 阶段?

我的印象是,组合器就像作用于本地map任务的reducer,即它聚合单个Map任务的结果,以减少输出传输的网络带宽。通过阅读Hadoop-Thedefinitiveguide3rdedition,我的理解似乎是正确的。来自第2章(第34页)组合器函数许多MapReduce作业受到集群上可用带宽的限制,因此尽量减少map和reduce任务之间传输的数据是值得的。Hadoop允许用户指定要在map输出上运行的组合器函数——组合器函数的输出构成reduce函数的输入。由于combiner函数是一种优化,Hadoop不保证为特定映射输出记录调用它的次数(如果有的话)。换句话说,零次、一次或多次

java - MapReduce 程序中的洗牌步骤是否与映射并行运行?

我试图理解一个MapReduce程序。这样做时,我注意到在所有映射任务完成后,reduce任务几乎立即开始执行。现在,这是令人惊讶的,因为那里的reduce任务处理按键分组的数据,这意味着在其间完成了洗牌/排序步骤。发生这种情况的唯一方法是改组与映射并行进行。其次,如果洗牌确实与映射并行完成,那么在ApacheSpark中相当于什么?映射和按键分组和/或排序也可以在那里并行发生吗? 最佳答案 Hadoop的MapReduce不仅仅是map和reduce阶段,还有其他步骤,例如组合器(map-sidereduce)和合并,如下图所示(

hadoop - mapreduce 中间键排序的网络带宽瓶颈?

我一直在学习mapreduce算法以及它如何潜在地扩展到数百万台机器,但我不明白映射阶段之后中间键的排序如何扩展,因为会有:1,000,000x1,000,000:潜在的机器相互交流中间结果的小键/值对?这不是瓶颈吗? 最佳答案 的确,HadoopMapReduce的瓶颈之一是集群上机器之间的网络带宽。但是,每个映射阶段的输出不会发送到集群中的每台机器。map和reduce函数的数量由您正在运行的作业定义。每个map处理其输入数据,对其进行排序以对键进行分组并将其写入磁盘。该作业定义了您希望将多少个reduce函数应用于map的输出

hadoop - 使用 Pig/Hive 进行数据处理而不是直接使用 java map reduce 代码?

(比DifferencebetweenPigandHive?Whyhaveboth?更基础)我有一个数据处理管道,用Hadoop上的多个Javamap-reduce任务编写(我自己的自定义代码,源自Hadoop的Mapper和Reducer)。它是一系列基本操作,例如连接、反转、排序和分组依据。我的代码涉及并且不是很通用。继续这种公认的开发密集型方法与使用多个UDF将所有内容迁移到Pig/Hive的优缺点是什么?哪些工作我不能执行?我会遭受性能下降(使用100sTB)吗?维护时我会失去调整和调试代码的能力吗?我能否将部分作业作为Javamap-reduce进行流水线处理,并将它们的输入

map - 解释什么是 Hadoop 和 Map/Reduce 的最简单方法是什么?

从高层次的角度解释NoSQL非常容易——它基本上是“键值”存储。当然有成千上万的次要和重要的东西,但一般来说它只是键值存储。解释Hadoop和Map/Reduce的最佳方式是什么?可能是一些“真实世界”的例子,即使是新手也可以很容易地进行比较?谢谢! 最佳答案 我最近找到了thisgreatarticle描述MapReduce:I’vebeenplanningonwritingabouttheGoogle’sMapReducealgorithmforsometimebutIcouldn’tfindagoodpracticalexam

xml - How to read compressed bz2 (bzip2) Wikipedia dumps into stream xml record reader for hadoop map reduce

我正在使用HadoopMapReduce对维基百科数据转储(以bz2格式压缩)进行研究。由于这些转储太大(5T),我无法将xml数据解压缩到HDFS中,只能使用hadoop提供的StreamXmlRecordReader。Hadoop确实支持解压缩bz2文件,但它会任意拆分页面并将其发送给映射器。因为这是xml,所以我们需要拆分为标签。有没有办法把hadoop自带的bz2解压和streamxmlrecordreader一起使用? 最佳答案 维基媒体基金会刚刚为HadoopStreaming接口(interface)发布了一个Inpu

java - 我如何调试 Hadoop map reduce

这个问题在这里已经有了答案:Howtodebughadoopmapreducejobsfromeclipse?(6个答案)WheredoeshadoopmapreduceframeworksendmySystem.out.print()statements?(stdout)(5个答案)关闭2年前。我正在尝试构建mapreduce作业。它运行到完成但最后出现奇怪的数据。当我尝试使用system.out.println("debugdata")调试它时它不显示在屏幕上。使用javaAPI生成外部日志文件,尝试使用log.severe("logdata")或使用log4j记录器方法log.i

java - Hadoop Map Reduce For Google web graph

我们的任务是创建mapreduce函数,该函数将为google网络图中的每个节点n输出,列出您可以在3跳中从节点n到达的节点。(实际数据可以在这里找到:http://snap.stanford.edu/data/web-Google.html)以下是列表中项目的示例:121324343541454656从上面的示例图将是这个在上面的简化示例中,例如节点1的路径是α[1->2->4->1],[1->2->4->5],[1->2->4->6],[1->3->4->1],[1->3->4->5],[1->3->4->6]και[1->3->5->6]因此mapreduce将为节点1输出顶点1

hadoop - 没有 Map/Reduce 的 HDFS 分布式读取

是否可以在一台机器上使用HDFS客户端实现从HDSF集群的分布式读取?我用一个由3个数据节点(DN1、DN2、DN3)组成的集群进行了实验。然后我从位于DN1上的客户端程序运行10个同时读取10个独立文件,它似乎只从DN1读取数据。其他数据节点(DN2、DN3)显示为零事件(从调试日志判断)。我检查了所有文件的block是否在所有3个数据节点上都被复制了,所以如果我关闭DN1,那么数据将从DN2读取(仅DN2)。增加读取的数据量没有帮助(尝试从2GB到30GB)。由于我需要读取多个大文件并仅从中提取少量数据(几Kb),因此我想避免使用map/reduce,因为它需要设置更多服务并且还需

java - 由于 Task attempt failed to report status 600 秒,reduce 失败。杀戮!解决方案?

作业的reduce阶段失败并显示:失败的Reduce任务超出了允许的限制。每个任务失败的原因是:任务attempt_201301251556_1637_r_000005_0未能报告状态达600秒。杀!问题详情:Map阶段接收格式为:time,rid,data的每条记录。数据的格式为:数据元素及其计数。例如:a,1b,4c,7对应一条记录的数据。映射器为每个数据元素输出每条记录的数据。例如:key:(time,a,),val:(rid,data)键:(时间,b,),val:(删除,数据)key:(time,c,),val:(rid,data)每一个reduce从所有的记录中接收同一个ke