问题标签 [mapreduce]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
eclipse - 你如何干净地卸载 Eclipse MapReduce 插件?
我正在尝试让用于 hadoop 开发的 eclipse 插件工作,我使用的是 hadoop 0.18.3。我在 Eclipse v3.5.2 (M20100211-1343) 上安装了旧的 MapReduce 插件 ( http://www.alphaworks.ibm.com/tech/mapreducetools ),方法是将其复制到 /Applications/eclipse/plugins 并重新启动 eclipse 但那没有t 工作,我认为这是因为它是为旧版本的 hadoop 和 eclipse(大约 2007 年)开发的。然后我意识到 hadoop 发行版在 contrib/eclipse-plugin 下有一个 jar - 所以将它复制到 /Application/eclipse/plugins 并重新启动......然后事情变得很时髦。因此,我尝试将它们都删除,以便重新开始,但是失败了,当我转到“窗口-> 打开透视图-> 其他”时,旧插件的“幽灵”...没有图标,它只是说“”
我似乎无法将 eclipse 恢复到一个干净的先前状态 - 我很想从一个全新的 eclipse 安装重新开始,但这会做很多工作(安装其他插件,如 git 和 pydev 以及重新创建工作区)。那么如何干净地卸载 Eclipse MapReduce 插件呢?
或者:如何正确安装 eclipse hadoop 插件,连接到本地 tasktracker 并为 hadoop 0.18.3 开发 HDFS?
java - 分配工作的有效算法?
解释起来有点复杂,但我们开始吧。基本上,问题是“如何以有效的方式将问题分解为子问题”。这里的“高效”意味着分解的子问题尽可能大。基本上,如果我根本不需要分解问题,那将是理想的。然而,因为一个工人只能处理特定的问题,我确实需要分手。但我想找到一种尽可能粗略的方法。
这是一些伪代码..
我们有这样的问题(对不起,它是在 Java 中。如果你不明白,我很乐意解释)。
一个子问题是:
那么,工作将是这样的。
现在我们有了 'Worker' 的实例,它们有自己的 state sections I have
。
唷。
所以,我们有很多Problem
s 并且Workers
不断地要求更多SubProblems
。我的任务是分解Problems
并SubProblem
交给他们。然而,困难在于,我必须稍后收集 SubProblems 的所有结果并将它们合并(减少)到Result
整个Problem
.
然而,这是昂贵的,所以我想给工人尽可能大的“块”(尽可能多targetedSections
)。
它不必是完美的(在数学上尽可能高效或其他)。我的意思是,我想不可能有一个完美的解决方案,因为你无法预测每次计算需要多长时间等等。但是有一个很好的启发式解决方案吗?或者也许我可以在开始设计之前阅读一些资源?
任何建议都非常感谢!
编辑:我们也可以控制部分分配,因此控制它是另一种选择。基本上,对此的唯一限制是工人只能拥有固定数量的部分。
mapreduce - Fork/Join 和 Map/Reduce 的区别
Fork/Join 和 Map/Reduce 之间的主要区别是什么?
它们的分解和分布类型(数据与计算)是否不同?
hadoop - 使用 Hadoop MapReduce 排序字数
我对 MapReduce 非常陌生,我完成了一个 Hadoop 字数统计示例。
在该示例中,它生成未排序的字数文件(带有键值对)。那么是否可以通过将另一个 MapReduce 任务与之前的任务结合起来,按单词出现的数量对其进行排序?
mapreduce - 用 opencl 解决一个经典的 map-reduce 问题?
我正在尝试将一个经典的 map-reduce 问题(可以与 MPI 很好地并行)与 OpenCL,即 AMD 实现并行。但结果让我很困扰。
我先简单介绍一下问题。有两种类型的数据流入系统:特征集(每个参数 30 个)和样本集(每个参数 9000 多个维度)。这是一个经典的 map-reduce 问题,因为我需要计算每个样本(Map)上每个特征的得分。然后,总结每个特征的总体得分(减少)。大约有 10k 个特征和 30k 个样本。
我尝试了不同的方法来解决这个问题。首先,我尝试通过特征来分解问题。问题是分数计算由随机内存访问组成(选择 9000 多个维度中的一些并进行加/减计算)。由于我无法合并内存访问,因此需要成本。然后,我尝试通过样本分解问题。问题是总分的总和,所有线程都在竞争很少的分数变量。它不断覆盖原来不正确的分数。(我不能先进行个人评分,然后再总结,因为它需要 10k * 30k * 4 个字节)。
我尝试的第一种方法在具有 8 个线程的 i7 860 CPU 上给了我相同的性能。但是,我不认为这个问题是无法解决的:它与光线追踪问题非常相似(您需要针对数百万条三角形进行数百万条光线的计算)。有任何想法吗?
此外,我发布了一些我拥有的代码:
按特征分解(有效,但速度慢):
按样本分解,不起作用:
python - Disco/MapReduce:使用先前迭代的结果作为新迭代的输入
目前正在 Disco 上实施 PageRank。作为一种迭代算法,一次迭代的结果被用作下一次迭代的输入。
我有一个代表所有链接的大文件,每一行代表一个页面,行中的值代表它链接到的页面。
对于 Disco,我将这个文件分成 N 个块,然后运行 MapReduce 一轮。结果,我得到了一组 (page, rank) 元组。
我想将此排名提供给下一次迭代。但是,现在我的映射器需要两个输入:图形文件和页面排名。
- 我想将图形文件和页面排名“压缩”在一起,这样每一行代表一个页面,它是排名,它是链接。
- 由于这个图形文件被分成 N 个块,我需要将 pagerank 向量拆分为 N 个并行块,并将 pagerank 向量的区域压缩到图形块
这一切似乎都比必要的复杂,并且作为一个非常简单的操作(使用典型的 mapreduce 算法),我似乎错过了一些关于 Disco 可以真正简化方法的东西。
有什么想法吗?
python - Disco/MapReduce:在拆分数据上使用 chain_reader
我的算法目前使用 nr_reduces 1 因为我需要确保给定键的数据是聚合的。
要将输入传递给下一次迭代,应该使用“chain_reader”。但是,映射器的结果是单个结果列表,这似乎意味着下一次映射迭代将作为单个映射器进行!有没有办法拆分结果以触发多个映射器?
hadoop - Hadoop 0.2:如何从 TextOutputFormat 读取输出?
我的 reducer 类使用 TextOutputFormat(Job 给出的默认 OutputFormat)生成输出。我喜欢在 MapReduce 作业完成后使用这些输出来聚合输出。除此之外,我喜欢用 TextInputFormat 写出聚合信息,以便该过程的输出可以被 MapReduce 任务的下一次迭代使用。谁能给我一个关于如何使用 TextFormat 读写的例子?顺便说一句,我使用 TextFormat 而不是 Sequence 的原因是互操作性。任何软件都应使用输出。
hadoop - 使用 Hadoop,我的减速器是否可以保证使用相同的键获取所有记录?
我正在使用 Hive 运行 Hadoop 作业,实际上它应该uniq
在许多文本文件中出现。在 reduce 步骤中,它为每个键选择最近的时间戳记录。
Hadoop 是否保证每个具有相同键的记录(由 map 步骤输出)都将转到单个 reducer,即使多个 reducer 在集群中运行?
我担心在具有相同键的一组记录中间发生随机播放后,映射器输出可能会被拆分。
parallel-processing - 如何使用 shell 命令实现 MapReduce?
如何在集群上并行执行 Unix shell 命令(例如 awk one liner)(第 1 步)并将结果收集回中央节点(第 2 步)?
更新:我刚刚发现http://blog.last.fm/2009/04/06/mapreduce-bash-script 它似乎完全符合我的需要。