gpt4 book ai didi

bash - 使用 Amazon MapReduce/Hadoop 进行图像处理

转载 作者:可可西里 更新时间:2023-11-01 14:20:33 25 4
gpt4 key购买 nike

我有一个项目需要我处理大量(1000-10000)大(100MB 到 500MB)图像。我正在进行的处理可以通过 Imagemagick 完成,但我希望实际上是在 Amazon 的 Elastic MapReduce 平台(我相信该平台使用 Hadoop 运行)上进行处理。

在我找到的所有示例中,它们都处理基于文本的输入(我发现 Word Count 样本有十亿次)。我找不到任何有关 Hadoop 此类工作的信息:从一组文件开始,对每个文件执行相同的操作,然后将新文件的输出作为它自己的文件写出。

我很确定这可以用这个平台来完成,并且应该可以用 Bash 来完成;我认为我不需要费心去创建整个 Java 应用程序或其他东西,但我可能是错的。

我不是要别人给我代码,但如果有人有示例代码或指向处理类似问题的教程的链接,我将不胜感激......

最佳答案

你的任务有几个问题。

Hadoop 本身并不像您所看到的那样处理图像。但是您可以将所有文件名和路径导出为文本文件并在其上调用一些 Map 函数。因此,对本地磁盘上的文件调用 ImageMagick 应该不是什么大问题。

但是您如何处理数据局部性?

您无法在 HDFS 中的文件上运行 ImageMagick(只有 Java API 和 FUSE 挂载不稳定)并且您无法预测任务调度。因此,例如可以将映射任务安排到图像不存在的主机。

当然,您可以只使用一台机器和一个任务。但是你没有任何改进。然后你就会有一大堆开销。

当您从 Java 任务中退出时,也会出现内存问题。我写了一篇关于它的博文 [1]。

and should be able to be done using Bash

那是下一个问题,你至少得写个 map task 。您需要一个 ProcessBuilder 来调用具有特定路径和函数的 ImageMagick。

I cannot find anything about this kind of work with Hadoop: starting with a set of files, performing the same action to each of the files, and then writing out the new file's output as it's own file.

猜猜为什么? :D Hadoop 不适合这项任务。

所以基本上我会建议在 EC2 中手动将您的图像拆分到多个主机并在其上运行 bash 脚本。它压力更小,速度更快。要在同一主机上并行化,请将文件拆分到每个核心的多个文件夹中,然后在其上运行 bash 脚本。这应该可以很好地利用您的机器,并且比 Hadoop 更好。

[1] http://codingwiththomas.blogspot.com/2011/07/dealing-with-outofmemoryerror-in-hadoop.html

关于bash - 使用 Amazon MapReduce/Hadoop 进行图像处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7816334/

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