Hadoop、Mahout 实时处理替代方案
Posted
技术标签:
【中文标题】Hadoop、Mahout 实时处理替代方案【英文标题】:Hadoop, Mahout real-time processing alternative 【发布时间】:2011-11-28 23:55:16 【问题描述】:我打算在我的项目中使用 hadoop 作为“计算集群”。但是后来我读到 Hadoop 不适用于实时系统,因为与工作开始相关的开销。我正在寻找可以以这种方式使用的解决方案 - 可以轻松扩展到多台机器但不需要太多输入数据的作业。更重要的是,我想使用机器学习工作,例如使用之前创建的实时神经网络。
我可以为此目的使用哪些库/技术?
【问题讨论】:
模型学习阶段需要实时,还是模型使用阶段需要实时? @David Gruzman 模型使用阶段 您的实时要求有多快?秒?分钟? 15分钟? ... 【参考方案1】:你说得对,Hadoop 是为批处理而设计的。
阅读这个问题,我想到了 Twitter 最近开源的 Storm 框架,它可以被认为是“用于实时处理的 Hadoop”。
Storm 可以轻松地在计算机集群上编写和扩展复杂的实时计算,实现 Hadoop 用于批处理的实时处理。 Storm 保证每条消息都会被处理。而且速度很快——您可以使用一个小型集群每秒处理数百万条消息。最重要的是,您可以使用任何编程语言编写 Storm 拓扑。
(来自:InfoQ post)
但是,我还没有使用它,所以在实践中我真的不能说太多。
Twitter 工程博客帖子:http://engineering.twitter.com/2011/08/storm-is-coming-more-details-and-plans.html Github:https://github.com/nathanmarz/storm
【讨论】:
【参考方案2】:鉴于您希望在“秒”区域内获得实时响应,我建议您这样做:
为尽可能多的预计算设置批处理模型。基本上尝试做不依赖于“最后一秒”数据的所有事情。在这里,您可以使用常规 Hadoop/Mahout 设置并每天或(如果需要)每小时甚至 15 分钟运行这些批处理。
使用实时系统来完成最后几件无法预先计算的事情。 为此,您应该考虑使用提到的 s4 或最近宣布的 twitter storm。
有时,将预先计算的值全部存储在内存中,然后简单地在内存中执行最后的聚合/过滤/排序/...步骤,这是值得的。如果你能做到这一点,你就可以真正扩展,因为每个节点都可以完全独立于所有其他节点运行。
也许为您的实时组件配备 NoSQL 后端会有所帮助。 有很多可用的:mongodb、redis、riak、cassandra、hbase、couchdb,...
这一切都取决于您的实际应用。
【讨论】:
【参考方案3】:也可以试试S4,最初由 Yahoo! 发布及其现在的 Apache 孵化器项目。它已经存在了一段时间,当我进行概念验证时,我发现它对一些基本的东西很有用。虽然没有广泛使用它。
【讨论】:
【参考方案4】:您尝试做的将更适合 HPCC,因为它同时具有后端数据处理引擎(相当于 Hadoop)和前端实时数据交付引擎,无需增加通过第三方组件的复杂性。 HPCC 的一个好处是两个组件都使用相同的语言和编程范式进行编程。 查看它们:http://hpccsystems.com
【讨论】:
以上是关于Hadoop、Mahout 实时处理替代方案的主要内容,如果未能解决你的问题,请参考以下文章
Web 应用程序有啥方法可以从支持蓝牙的硬件读取实时数据?如果没有,有啥替代方案?