草庐IT

MPI_Reduce

全部标签

hadoop - Map Reduce 保持输入顺序

我尝试使用hadoop实现一个处理文本文件的应用程序。问题是我无法保持输入文本的顺序。有什么方法可以选择哈希函数吗?这个问题可以通过分配分区轻松解决输入到每个映射器,然后将分区发送到reducers。这可以用hadoop实现吗? 最佳答案 MapReduce的基本思想是,事情完成的顺序是无关紧要的。所以你不能(也不需要)控制以下顺序:输入记录通过映射器。键和相关值通过缩减器。您唯一可以控制的是值在迭代器中的放置顺序,该顺序在缩减器中可用。这是使用称为“二级排序”的结构完成的。thisterm的简单谷歌操作导致您可以继续的几个点。我喜

hadoop - 为什么要对 map reduce 中生成的中间键进行 SORT?

我理解为什么中间键值按键分组但为什么要对它们进行排序? 最佳答案 分组就是这样实现的。当您按键排序时,它们会组合在一起。它是否已排序并不重要……重要的是相同的键彼此相邻。排序可能不是最好的方法。也许某种哈希算法会更快:O(N)而不是O(NlogN)。它被实现为排序只是因为有一些应用程序需要排序的键(例如HBase/BigTable)。最近开发了一种可插入排序,并且在测试版中可用。我还没有机会尝试一下。http://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop

python - 将python协同过滤代码转换为使用Map Reduce

我使用Python计算项目之间的余弦相似度。给定表示购买(用户、项目)的事件数据,我有一个由我的用户“购买”的所有项目的列表。给定这个输入数据(user,item)X,1X,2Y,1Y,2Z,2Z,3我建立了一个python字典{1:['X','Y'],2:['X','Y','Z'],3:['Z']}从那个字典中,我生成了一个购买/未购买矩阵,也是另一个字典(bnb)。{1:[1,1,0],2:[1,1,1],3:[0,0,1]}从那里开始,我通过计算(1,1,0)和(1,1,1)之间的余弦来计算(1,2)之间的相似度,得到0.816496我这样做是为了:items=[1,2,3]fo

configuration - 为什么 Hadoop 中正确的 reduce 数量是 0.95 或 1.75?

hadoop文档指出:Therightnumberofreducesseemstobe0.95or1.75multipliedby(*mapred.tasktracker.reduce.tasks.maximum).With0.95allofthereducescanlaunchimmediatelyandstarttransferringmapoutputsasthemapsfinish.With1.75thefasternodeswillfinishtheirfirstroundofreducesandlaunchasecondwaveofreducesdoingamuchbett

hadoop - 使用 HBASE MAP REDUCE API 将数据加载到 Hbase 表中

我对Hbase和MapReduceAPI很陌生。我对MapReduce概念很困惑。我需要使用MAPReduceAPI将文本文件加载到Hbase表中。我用谷歌搜索了一些示例,但在那里我可以找到MAPPER()而不是reducer方法。我对什么时候使用mapper以及什么时候使用Reducer()感到困惑。我的想法是这样的:我们使用映射器将数据写入Hbase从中读取数据HBASE我们使用mapper和reducer()。请任何人清除我详细解释。我正在尝试将数据从文本文件加载到HBASE表。我用谷歌搜索并尝试了一些代码,但我不知道如何加载文本文件并在HBASEmapreduceAPI中读取。

hadoop - Map Reduce 插槽定义

我即将成为一名ClouderaHadoop管理员。从一开始,我就听到很多关于Hadoop集群中每台机器计算槽的信息,比如定义MapSlot和Reduce槽的数量。我在互联网上搜索了一个日志时间来获取MapReduceSlot的新手定义,但没有找到。浏览PDF解释MapReduce配置时,我真的很生气。当涉及到集群机器中的计算插槽时,请解释它的确切含义。 最佳答案 在map-reducev.1中,mapreduce.tasktracker.map.tasks.maximum和mapreduce.tasktracker.reduce.t

Hadoop 似乎在对给定 reduce 调用的值进行迭代期间修改了我的关键对象

Hadoop版本:0.20.2(在AmazonEMR上)问题:我有一个在映射阶段编写的自定义key,我在下面添加了它。在reduce调用期间,我对给定键的值进行了一些简单的聚合。我面临的问题是,在reduce调用的值迭代期间,我的key发生了变化,我得到了那个新key的值。我的key类型:classMyKeyimplementsWritableComparable,Serializable{privateMyEnumtype;//MyEnumisasimpleenumeration.privateTreeMapsubKeys;MyKey(){}//forhadooppublicMyKe

hadoop - 为什么 map 和 reduce 同时运行?

我是Hadoop的新手。我记得我从某个地方了解到,在Hadoop中,所有map函数都必须在reduce函数开始之前完成。但是当我运行这样的mapreduce程序时,我只是得到了打印输出:map(15%),reduce(5%)map(20%),reduce(7%)map(30%),reduce(10%)map(38%),reduce(17%)map(40%),reduce(25%)为什么它们并行运行? 最佳答案 在真正的Reduce阶段开始之前,Shuffle、Sort和Merge在Mappers不断完成时发生。这个百分比表明了这一点

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

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

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

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