我是hadoop的新手,我将开发一个应用程序,使用hadoop处理多个图像并向用户显示实时结果,同时计算正在进行中。基本方法是分发可执行文件和一堆图像并收集结果。
我可以在计算过程中以交互方式获得结果吗?
对于这种用例,还有除hadoop流媒体之外的其他选择吗?
如何通过图片提供可执行文件?除了用stdin喂它之外,我找不到任何其他例子。
答案 0 :(得分:2)
为了处理Hadoop上的图像,组织计算的最佳方法是:
我不知道你的完整案例,但一种可能的解决方案是使用Kafka + Spark Streaming。您的应用程序应将图像以二进制格式放入Kafka队列,而Spark将在群集上以微批量消费和处理它们,通过某些第三个组件更新用户(至少将图像处理状态放入Kafka以用于另一个应用程序)处理它)
但总的来说,您提供的信息并不完整,无法为您的具体案例推荐一个好的架构
答案 1 :(得分:0)
正如0x0FFF在另一个答案中所说,问题没有提供足够的细节来推荐一个合适的架构。虽然这个问题已经很久了,但我只是在研究中加入了我在这个主题上所做的研究,以便它可以帮助任何人进行研究。
Spark是在分布式系统上进行处理的好方法。但它并没有一个强大的社区致力于OpenCV。 Storm是另一个Apache的免费开源分布式实时计算系统。 Storm可以轻松可靠地处理无限数据流,实现Hadoop为批处理所做的实时处理。
StormCV是Apache Storm的扩展,专门用于支持分布式计算机视觉管道的开发。 StormCV通过添加计算机视觉(CV)特定操作和数据模型,可以将Storm用于视频处理。该平台使用Open CV进行大多数CV操作,并且将此库用于其他功能相对容易。
有一些使用OpenCV风暴的例子。他们的官方git中心页面上有一些例子。您可能希望查看此人脸检测示例并尝试进行人体检测 - https://github.com/sensorstorm/StormCV/blob/master/stormcv-examples/src/nl/tno/stormcv/example/E2_FacedetectionTopology.java。
答案 2 :(得分:0)
您实际上可以使用Hadoop Storm框架创建自定义逻辑。您可以轻松集成某些特定计算机视觉库的任何功能,并将其分配到此框架的各个部分。除了Storm有一个很好的扩展名为DRPC服务器,它允许你将你的逻辑用作简单的RPC调用。您可以在我的文章Consuming OpenCV through Hadoop Storm DRPC Server from .NET
中找到一个简单的示例,说明如何通过Storm使用OpenCV人脸检测来处理视频文件