gpt4 book ai didi

java - 我需要学习哪些概念才能实现以下场景?

转载 作者:太空宇宙 更新时间:2023-11-04 06:25:18 25 4
gpt4 key购买 nike

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

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

这是我的想法:

  1. 将数据分成小的 .txt。我已经这样做了
  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();
}
}
}
}

最佳答案

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

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

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

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

关于java - 我需要学习哪些概念才能实现以下场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26866325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com