免费安全分布式制作系统的Linux

时间:2008-12-30 02:47:01

标签: makefile distributed data-processing

是否有任何与语言无关的分布式制作系统适用于安全且免费的Linux?

背景资料:

我运行的科学实验(计算机科学实验)有时会有大的依赖树,偶尔会有数千或数万个树节点。此依赖关系树位于数据文件,数据处理可执行文件和结果文件之上。

多年来我尝试过各种技术,包括:

  1. 使用数据库滚动自己的依赖关系跟踪器并在每个工作计算机上运行脚本。这可能会有点麻烦,尤其是在尝试使用非脚本语言时。
  2. 将所有处理命令放在单个makefile中,伪目标可以在不同的工作机器上手动“构建”。这不需要特殊工具,但手动将工作分解为大小均匀的伪目标块并在每个工作箱上正确调用“make”可能会很麻烦。
  3. distmake :自动分配单个makefile中的命令执行...
  4. 我基本上都在寻找像distmake这样的东西,但更安全。据我所知,distmake基本上为每个工作节点留下了一个敞开的后门。

    如果替换者比distmake更强大,那也很好。如果您突破主要的distmake调用,它可以关闭后门服务器,但它不能正确地终止工作节点上的执行进程。


    澄清:

    我正在使用makefile处理数据,而不是使用gcc编译和链接。从我在文档中看到的内容来看,distcc是一个用于分发gcc的专用工具。我将在共享文件系统上托管的非常大的数据文件上运行我自己的可执行文件,而不是源文件上的gcc,因此distcc没有帮助。

    工作节点是外部可见的机器,因此我希望任何工作器守护程序至少与ssh一样安全。在没有阅读源代码的情况下,我可以告诉他们,distmake工作者守护进程打开一个端口并接受任何附加到它的人的命令。它们将以启动守护程序的用户身份执行命令。

6 个答案:

答案 0 :(得分:3)

依赖性很难管理,我不知道任何完美的系统可以在没有大量工作的情况下完成您想要的任务。

我使用的最接近的是以下设置: - 用于管理群集中计算机的Condor队列 - Condor DAGMAN元调度程序,用于提交相互依赖的作业。 DAGMAN是Directed Acyclic Graph MANager的首字母缩写,其中有向无环图用于表示作业之间的依赖关系。

我们已经非常成功地在我们的实验室中为迭代科学协议做了这个并且它工作得很好,尽管这是一个非常有才华的博士后的学习经验,可以让初始实现运行起来。它确实需要你设置和运行一个非常重要的Condor集群,但我认为你有Condor或类似的东西来管理你的所有机器。可能是Sun GridEngine有类似于我不知道的东西。

答案 1 :(得分:2)

还有distcc,声称能够通过SSH操作(尽管除非distmake有点奇怪,否则你应该能够限制对localhost的访问并构建SSH隧道来运行构建),以及icecream

更新:因为目标不是分布式编译,而是恰好使用make作为引导程序的分布式计算,所以使用一个工具更有意义专为分布式计算而设计,如BOINC。以下评论表明condor为所选平台。

答案 2 :(得分:1)

虽然透明地与'make'集成可能会很复杂,但GNU parallel似乎提供了一个方便的选项来跨服务器分发命令。

答案 3 :(得分:0)

如果你对依赖项很勤奋(即make -jxx在本地工作正常),distcc可能就是你想要的。它很容易使用,并与几个流行的CC缓存愉快地工作。同样,正确的依赖关系是关键,特别是在使用缓存来帮助加快重建过程时。

如果您使用GCC生成超出makefile本身模块依赖范围的依赖项,那么您可能会喜欢distcc。我一直在一个小型的构建农场上使用它并取得了巨大的成功..但我的设置/树远没有你描述的那么精致。

答案 4 :(得分:0)

您可以使用AT&T nmake结合coshell计划执行此操作。我不知道如何评估安全性,但Glenn Fowler的团队中充满了伟大的工程师,他们做了很多非常好的事情。我相信他们的源代码:-)他们最知名的工具可能是graphviz

答案 5 :(得分:0)

Makeflow似乎也是一个很好的解决方案:http://www.cse.nd.edu/~ccl/software/makeflow/