【问题标题】:Distributed Processing of Volumetric Image Data体图像数据的分布式处理
【发布时间】:2016-04-27 10:52:10
【问题描述】:

为了开发对象识别算法,我需要在大量体积图像文件(MR 扫描)上反复运行检测程序。 检测程序是一个命令行工具。如果我在本地计算机上以单个文件和单线程运行它,大约需要 10 秒。处理结果写入文本文件。 典型的运行是:

  • 10000 张图片,每张 300 MB = 3TB
  • 单核 10 秒 = 100000 秒 = 大约 27 小时

我可以做些什么来更快地获得结果?我可以访问由 20 个服务器组成的集群,每个服务器有 24 个(虚拟)内核(Xeon E5、1TByte 磁盘、CentOS Linux 7.2)。 理论上,480 个核心的任务应该只需要 3.5 分钟。 我正在考虑使用 Hadoop,但它不是为处理二进制数据而设计的,它会拆分输入文件,这不是一个选项。 我可能需要某种分布式文件系统。我使用 NFS 进行了测试,网络成为一个严重的瓶颈。每个服务器应该只处理他本地存储的文件。 另一种选择可能是购买单个高端工作站而忘记分布式处理。

我不确定,如果我们需要数据局部性, 即每个节点在本地 HD 上保存部分数据并只处理他的 本地数据。

【问题讨论】:

    标签: linux image hadoop machine-learning distributed-computing


    【解决方案1】:

    我经常使用 Spot 实例在 AWS 上运行大规模分布式计算。您绝对应该使用由 20 台服务器组成的集群。

    您没有提及您的服务器使用的是哪个操作系统,但如果它是基于 linux 的,那么您最好的朋友就是 bash。你也很幸运,它是一个命令行程序。这意味着您可以使用 ssh 从一个主节点直接在服务器上运行命令。

    典型的处理顺序是:

    1. 在主节​​点上运行脚本,该脚本通过 ssh 在所有从节点上发送和运行脚本
    2. 每个从节点从存储文件的主节点下载文件的一部分(通过 NFS 或 scp)
    3. 每个从节点处理其文件,通过 scp、mysql 或 text scrape 保存所需数据

    要开始使用,您需要拥有从主服务器访问所有从服务器的 ssh 访问权限。然后,您可以像脚本一样将文件 scp 到每个从站。如果您在专用网络上运行,则不必太担心安全性,因此只需将 ssh 密码设置为简单的。

    在 CPU 内核方面,如果您使用的命令行程序不是为多核设计的,您可以对每个 Slave 运行几个 ssh 命令。最好的办法是运行一些测试,看看进程的最佳数量是多少,因为过多的进程可能会由于内存不足、磁盘访问或类似情况而变慢。但是假设您发现 12 个同时进程的平均时间最快,然后通过 ssh 同时运行 12 个脚本。

    完成所有工作并非易事,但是,您将永远能够在很短的时间内完成处理。

    【讨论】:

    • 这或多或少是我们现在正在做的事情。它工作得不是很好。整个系统很难维护,脚本也很复杂。应该有一些软件可以解决这个问题,看起来很普通。这实际上是一个“令人尴尬的并行”问题。
    • 我可以看到它可能很笨拙。使用 AWS 可能更容易,因为您可以使用所有正确的启动脚本创建新服务器,并从 S3 获取数据,而运行大约 20 台物理服务器听起来就像一场噩梦!
    【解决方案2】:

    您可以使用 Hadoop。是的,FileInputFormat 和 RecordReader 的默认实现是将文件拆分为块并将块拆分为行,但是您可以编写自己的 FileInputFormat 和 RecordReader 实现。我为另一个目的创建了自定义 FileInputFormat,我遇到了相反的问题 - 比默认更精细地拆分输入数据,但是有一个很好看的食谱可以解决你的问题:https://gist.github.com/sritchie/808035 plus https://www.timofejew.com/hadoop-streaming-whole-files/

    但另一方面,Hadoop 是一头沉重的野兽。它对映射器的启动有很大的开销,因此映射器的最佳运行时间是几分钟。你的任务太短了。也许可以创建更聪明的 FileInputFormat,它可以将一堆文件解释为单个文件并将文件作为记录提供给同一个映射器,我不确定。

    【讨论】:

    猜你喜欢
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2011-04-21
    • 2018-10-01
    • 1970-01-01
    • 2021-10-27
    相关资源
    最近更新 更多