有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hadoop,Mahout实时处理替代方案

我打算在我的项目中将hadoop用作“计算集群”。然而,后来我读到Hadoop并不是为实时系统设计的,因为作业开始时会产生开销。我正在寻找可以用这种方式的解决方案——可以轻松扩展到多台机器但不需要太多输入数据的作业。更重要的是,我想使用机器学习作业,例如,使用实时创建的神经网络

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


共 (4) 个答案

  1. # 1 楼答案

    也可以试试S4,最初由雅虎发布!现在是Apache孵化器项目。它已经存在了一段时间,当我做概念验证时,我发现它对一些基本的东西很有用。不过,我还没有广泛使用它

  2. # 2 楼答案

    没错,Hadoop是为批处理类型而设计的

    读到这个问题,我想到了Twitter最近开放的Storm框架,它可以被认为是“用于实时处理的Hadoop”

    Storm makes it easy to write and scale complex realtime computations on a cluster of computers, doing for realtime processing what Hadoop did for batch processing. Storm guarantees that every message will be processed. And it's fast — you can process millions of messages per second with a small cluster. Best of all, you can write Storm topologies using any programming language.

    (发件人:InfoQ post

    然而,我还没有使用过它,所以在实践中我真的不能说太多

    Twitter工程博客帖子:http://engineering.twitter.com/2011/08/storm-is-coming-more-details-and-plans.html
    Github:https://github.com/nathanmarz/storm

  3. # 3 楼答案

    您所尝试的将更适合HPCC,因为它同时具有后端数据处理引擎(相当于Hadoop)和前端实时数据交付引擎,无需通过第三方组件增加复杂性。HPCC的一个优点是,两个组件都使用相同的语言和编程范例进行编程。 请访问:http://hpccsystems.com

  4. # 4 楼答案

    考虑到您希望在de“秒”区域中获得实时响应,我建议如下:

    1. 建立一个批处理模型,尽可能多地进行预计算。从本质上讲,尝试做一切不依赖于“最后一秒”数据的事情。在这里,您可以使用常规的Hadoop/Mahout设置,每天或(如果需要)每小时甚至15分钟运行这些批处理

    2. 使用实时系统完成最后几件无法预先计算的事情。 为此,您应该使用提到的s4或最近宣布的twitter storm

    有时,非常简单地将预计算的值全部存储在内存中,然后简单地进行最后一次聚合/筛选/排序是值得的。。。内存中的步骤。如果你能做到这一点,你就可以真正地扩展,因为每个节点都可以完全独立于其他节点运行

    也许为实时组件提供NoSQL后端会有所帮助。 有很多可用的:mongodb、redis、riak、cassandra、hbase、couchdb

    这完全取决于你的实际应用