【问题标题】:matrix computation using hadoop mapreduce使用 hadoop mapreduce 进行矩阵计算
【发布时间】:2025-12-08 09:00:01
【问题描述】:

我有一个大约 10000 行的矩阵。我写了一段代码,每次迭代都需要一行,做一些长矩阵计算,每行矩阵返回一个双精度数。由于每行的操作次数太多,运行代码需要很长时间。我正在考虑使用 MapReduce 来实现它,但我不确定它是否可能。主要思想是将矩阵行拆分为不同的节点,独立运行作业并将输出组合在一起并返回一个数字列表。根据我的理解,只需一个映射器就可以完成这项工作。我对吗?是否可以?还是有更好的主意?提前致谢。顺便说一句,代码是用 Java 编写的。

【问题讨论】:

    标签: java hadoop mapreduce


    【解决方案1】:

    这似乎是可能的 - 需要考虑的几点:

    您可能想要运行一个身份映射器(将每个输入记录传递给 reducer)并在 reducer 中进行行计算。在 map 端进行计算可能仍会导致所有计算在单个节点上完成(您的 10000 行矩阵小于输入拆分大小是可行的)。

    您需要运行大量的 reducer,以确保作业在您的集群节点上并行化。默认分区器将处理将输入行发送到不同的减速器(假设您的行不是固定宽度,在这种情况下,您应该运行使用计数器作为输出键的自定义映射器,而不是输入行的默认字节偏移量) .

    要将所有结果重新组合在一起,您需要使用单个 reducer 运行第二个 MR 作业

    【讨论】:

    • 太棒了!非常感谢。你提到了非常非常好的观点!当我得到结果时,我会回复你。