【问题标题】:What concepts do I need to learn to achieve following scenario?我需要学习哪些概念才能实现以下场景?
【发布时间】:2014-11-11 13:44:05
【问题描述】:

可能是我在这里想得很大声,但是如何按照以下条件在不同的计算机上运行一个简单的 java 程序(没有其他依赖项)(不需要并行处理):

  1. 我有一组数据。假设数据在.txt 文件中。
  2. 我还有一个简单的 java 程序(见下文),它使用这些数据作为输入。
  3. 现在我有 10 台计算机。我们称它们为节点。
  4. 我必须在每个节点上运行 java 程序(节点彼此独立)并从每个节点取回输出并保存 进入另一个txt。假设output.txt。这可能就像减少映射减少技术的一部分。

这是我的想法:

  1. 将数据分成小的.txt(s)。我已经这样做了
  2. 通过将 Java 程序解压到 .jar 中,在每个节点上安装它。已经这样做了

现在我接下来要做什么才能实现它?我是并行处理和 MPI 的新手。只是需要一些指导。

感谢您提前提供的帮助:)

这里是 Java 程序:

import java.io.*;

public class CopyFile {

    public static void main(String args[]) throws IOException {

        FileInputStream in = null;
        FileOutputStream out = null;

        try {

            in = new FileInputStream("input.txt");
            out = new FileOutputStream("output.txt");
            int c;

            while ((c = in.read()) != -1) {
                 // want to do some computation. Let's say finding prime number
            }

        } finally {

            if (in != null) {
                in.close();
            }

            if (out != null) {
                out.close();
            }
        }
    }
}

【问题讨论】:

  • 为什么是负面的?需要反馈..
  • 你刚才描述的听起来很像并行处理......也不清楚你在问什么,请修改和澄清
  • @MuhammadHijazi FYI 这不是并行处理。当我已经提到“不需要并行处理”时,你怎么能想到它。另外,我正在从每个节点收集数据。所有节点相互独立。请在投票之前仔细阅读它,先生!在并行处理中,所有节点将相互连接
  • 并行处理不一定需要一台计算机运行多个进程,它可以通过网络完成。您所描述的是获取一堆数据,将其发送到(用您自己的话)一堆节点,让这些节点并行处理该数据,然后返回一个输出。那就是并行编程。我也没有否决你的问题,那是其他人,所以请放松,我只是想帮忙。
  • 为了确保我理解,您想要获取数据,将其拆分,并由多个节点处理,然后将处理后的数据返回到要重新组合/处理/输出的基节点,对吗?

标签: java parallel-processing mapreduce distributed-computing


【解决方案1】:

您与“不需要并行处理”相矛盾,您实际上将您的问题定义为embarrassingly parallel,这意味着节点之间不需要同步。

在你已经完成的部分(安装java,复制文件)之后,你只需要启动程序。如果有 10 个节点,你可能会更快地使用 shell 或 python 脚本来访问每个节点,但是随着节点数量的增加,它变得越来越复杂,这就是为什么你有 Hadoop/YARN 或 MPI 来处理这个给你的问题。

例如在 MPI 中会有一个主节点和 N 个从节点。主服务器将读取文件并将其逐行发送给从服务器。完成后,它可以接收并连接来自 slave 的答案,这与您要在 output.txt 中写入的内容相同。

如果您将其视为 Map/Reduce 作业,那么您又错了,因为这将是映射部分。该文件将通过 Hadoop 或 Spark 在您的节点之间拆分为输入,您将检查每个输入,例如您想要检查的内容。之后,您将发出有趣的行或其他一些数据。在大多数系统中,您可以跳过您想要执行的 Reduce 部分,并且只需将映射的结果再次连接起来。

【讨论】:

  • 同意!我将在 master 和 slave 中使用 MPI
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多