以不同语言调用不同的子进程,理想情况是共享内存

时间:2015-09-28 06:56:47

标签: parallel-processing fork bigdata ipc shared-memory

我正在研究大数据解决方案。通常我从一大块大数据开始,处理它,将结果发送到下一个工具以进行更多处理,依此类推。以下是这样一个工具链的样子的一个小例子。大多数情况下它不是很深(2或3级),根部的扇出通常也小于3.但叶子中的扇出可以很容易100。

这些工具来自各种来源,可以是封闭源。所以我无法将所有工具的输入和输出变为通用格式。此外,这些工具将以不同的语言编写。 C,Java,Python,Bash,......

最终产品将在具有大量RAM的服务器上运行。所以我想转到内存中的共享内存解决方案。

根工具是一个中介(注意:这将是我解决我的问题的想法,当然我可能是错的,并且会有更好的方法)。中介器将工具链作为输入(用户将选择子过程的选择和顺序),调用不同的子过程,分配数据,在子过程完成时接收来自子过程的信号,并且可以运行下一个过程。同一级别的子流程应该并行运行。

现在问我的问题:首先 - 这是一个好的设计吗?第二:哪种API /函数/编程技术最适合调用所有这些进程,以便共享RAM? (所以也许并不总是可以共享RAM。这不是那么重要。)

mediator
|-- toolA
|    |-- toolA1
|    |    |-- toolA11
|    |    +-- toolA12
|    +-- toolA2
|         +-- toolA21
+-- toolB
    |-- toolB1
    |-- toolB2
    +-- toolB3

1 个答案:

答案 0 :(得分:0)

我不太清楚我理解您的所有问题/解释,但是如果您想避免使用文件系统来编写中间文件(来自一个工具的输出文件是下一个工具的输入文件),如果如果您的服务器上有足够的可用内存来存储这些文件,那么您可以考虑使用内存中的文件系统。

如果你在Linux上运行,你可以使用/dev/shm作为工作的基本目录,或者安装一个更方便的目录tmpfs ......