java Hadoop,Mahout实时处理替代方案
我打算在我的项目中将hadoop用作“计算集群”。然而,后来我读到Hadoop并不是为实时系统设计的,因为作业开始时会产生开销。我正在寻找可以用这种方式的解决方案——可以轻松扩展到多台机器但不需要太多输入数据的作业。更重要的是,我想使用机器学习作业,例如,使用实时创建的神经网络
我可以为此使用哪些库/技术
你可以在下面搜索框中键入要查询的问题!
我打算在我的项目中将hadoop用作“计算集群”。然而,后来我读到Hadoop并不是为实时系统设计的,因为作业开始时会产生开销。我正在寻找可以用这种方式的解决方案——可以轻松扩展到多台机器但不需要太多输入数据的作业。更重要的是,我想使用机器学习作业,例如,使用实时创建的神经网络
我可以为此使用哪些库/技术
# 1 楼答案
也可以试试S4,最初由雅虎发布!现在是Apache孵化器项目。它已经存在了一段时间,当我做概念验证时,我发现它对一些基本的东西很有用。不过,我还没有广泛使用它
# 2 楼答案
没错,Hadoop是为批处理类型而设计的
读到这个问题,我想到了Twitter最近开放的Storm框架,它可以被认为是“用于实时处理的Hadoop”
(发件人:InfoQ post)
然而,我还没有使用过它,所以在实践中我真的不能说太多
Twitter工程博客帖子:http://engineering.twitter.com/2011/08/storm-is-coming-more-details-and-plans.html
Github:https://github.com/nathanmarz/storm
# 3 楼答案
您所尝试的将更适合HPCC,因为它同时具有后端数据处理引擎(相当于Hadoop)和前端实时数据交付引擎,无需通过第三方组件增加复杂性。HPCC的一个优点是,两个组件都使用相同的语言和编程范例进行编程。 请访问:http://hpccsystems.com
# 4 楼答案
考虑到您希望在de“秒”区域中获得实时响应,我建议如下:
建立一个批处理模型,尽可能多地进行预计算。从本质上讲,尝试做一切不依赖于“最后一秒”数据的事情。在这里,您可以使用常规的Hadoop/Mahout设置,每天或(如果需要)每小时甚至15分钟运行这些批处理
使用实时系统完成最后几件无法预先计算的事情。 为此,您应该使用提到的s4或最近宣布的twitter storm
有时,非常简单地将预计算的值全部存储在内存中,然后简单地进行最后一次聚合/筛选/排序是值得的。。。内存中的步骤。如果你能做到这一点,你就可以真正地扩展,因为每个节点都可以完全独立于其他节点运行
也许为实时组件提供NoSQL后端会有所帮助。 有很多可用的:mongodb、redis、riak、cassandra、hbase、couchdb
这完全取决于你的实际应用