Linux 体图像数据的分布式处理
对于目标识别算法的开发,我需要在一大组体积图像文件(MR扫描)上重复运行检测程序。 检测程序是一个命令行工具。如果我在本地计算机上以单个文件和单线程运行它,大约需要10秒。处理结果将写入文本文件。 典型的运行方式是:Linux 体图像数据的分布式处理,linux,image,hadoop,machine-learning,distributed-computing,Linux,Image,Hadoop,Machine Learning,Distributed Computing,对于目标识别算法的开发,我需要在一大组体积图像文件(MR扫描)上重复运行检测程序。 检测程序是一个命令行工具。如果我在本地计算机上以单个文件和单线程运行它,大约需要10秒。处理结果将写入文本文件。 典型的运行方式是: 10000个图像,每个300 MB=3TB 单芯10秒=100000秒=约27小时 我可以做些什么来更快地获得结果?我可以访问一个由20台服务器组成的集群,每个服务器有24个(虚拟)核心(Xeon E5,1字节磁盘,CentOS Linux 7.2)。 理论上,480个内核只需
- 10000个图像,每个300 MB=3TB
- 单芯10秒=100000秒=约27小时
本地数据。我定期使用Spot实例在AWS上运行大规模分布式计算。您肯定应该使用由20台服务器组成的集群供您使用 您没有提到您的服务器正在使用哪些操作系统,但如果它是基于linux的,您最好的朋友是bash。您还很幸运,它是一个命令行程序。这意味着您可以使用ssh从一个主节点直接在服务器上运行命令 典型的处理顺序是:
完成这一切不是一件小事,但是,您将永远能够在很短的时间内完成处理。我经常使用Spot实例在AWS上运行大规模分布式计算。您肯定应该使用由20台服务器组成的集群供您使用 您没有提到您的服务器正在使用哪些操作系统,但如果它是基于linux的,您最好的朋友是bash。您还很幸运,它是一个命令行程序。这意味着您可以使用ssh从一个主节点直接在服务器上运行命令 典型的处理顺序是:
完成这一切不是一件小事,但是,您将永远能够在很短的时间内完成处理。您可以使用Hadoop。是的,FileInputFormat和RecordReader的默认实现是将文件分割成块并将块分割成行,但您可以编写自己的FileInputFormat和RecordReader实现。我创建自定义FileInputFormat的另一个目的是,我遇到了相反的问题——比默认值更精细地分割输入数据,但有一个很好的方法可以解决您的问题:plus
但从另一个角度看,Hadoop是一头沉重的野兽。它对映射程序的启动有很大的开销,所以映射程序的最佳运行时间是几分钟。你的任务太短了。也许可以创建更聪明的FileInputFormat,它可以将一堆文件解释为单个文件,并将文件作为记录提供给同一个映射器,我不确定。您可以使用Hadoop。是的,FileInputFormat和RecordReader的默认实现是将文件分割成块并将块分割成行,但您可以编写自己的FileInputFormat和RecordReader实现。我创建自定义FileInputFormat的另一个目的是,我遇到了相反的问题——比默认值更精细地分割输入数据,但有一个很好的方法可以解决您的问题:plus 但从另一个角度看,Hadoop是一头沉重的野兽。它对映射程序的启动有很大的开销,所以映射程序的最佳运行时间是几分钟。你的任务太短了。也许有可能