2011-10-01 72 views
18

我打算在我的项目中使用hadoop作为“计算集群”。然而,然后我读到Hadoop不适用于实时系统,因为与开始工作有关的开销。我正在寻找可以用这种方式的解决方案 - 可以轻松扩展到多台机器但不需要太多输入数据的工作。我还想使用机器学习工作,例如使用在神经网络之前实时创建。Hadoop,Mahout实时处理替代

我可以为此使用哪些库/技术?

+0

您是否需要在模型学习阶段或模型使用阶段进行实时? –

+0

@David Gruzman模型使用阶段 – mmatloka

+0

您的实时需求有多快?秒?分钟? 15分钟? ... –

回答

10

你是对的,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

也可以尝试S4,最初是由雅虎发布及其现在的Apache孵化器项目。它已经存在了一段时间,我发现它对于一些基本的东西是有好处的,当我做了一个概念验证的时候。尽管还没有广泛使用它。

4

既然你想在德“秒”区域实时响应的事实,我建议是这样的:

  1. 设置预计算尽可能地成批处理模型。基本上尽量去做所有不依赖于“最后一秒”数据的事情。在这里,您可以使用常规Hadoop/Mahout设置,每天或每小时甚至15分钟运行这些批次(如果需要)。

  2. 使用实时系统做最后几件事情,不能预先计算。 为此,您应该使用提及的s4或最近公布的twitter storm来查看。

有时候值得去非常简单和预先计算的值存储在所有的记忆和简单地做在内存中的最后聚集/过滤/排序/ ...步骤。如果你能做到这一点,你可以真正扩展,因为每个节点都可以独立于所有其他节点运行。

也许有一个NoSQL后端为您的实时组件提供帮助。 有很多可用的:mongodb,redis,riak,cassandra,hbase,couchdb,...

这一切都取决于您的真实应用。

0

你想要做的事情会更适合HPCC,因为它具有后端数据处理引擎(相当于Hadoop)和前端实时数据传输引擎,无需通过第三方组件增加复杂性。 HPCC的一个好处就是两个组件都使用相同的确切语言和编程范例进行编程。 请查看:http://hpccsystems.com