代码之家  ›  专栏  ›  技术社区  ›  Meredith L. Patterson

流数据和Hadoop?(不是Hadoop流媒体)

  •  12
  • Meredith L. Patterson  · 技术社区  · 15 年前

    我想使用MapReduce方法分析连续的数据流(通过HTTP访问),所以我一直在研究ApacheHadoop。不幸的是,Hadoop似乎希望使用固定大小的输入文件开始一项工作,而不是在新数据到达时将其交付给消费者。这是真的吗,还是我错过了什么?是否有不同的MapReduce工具可以处理从打开的套接字中读取的数据?可伸缩性是这里的一个问题,所以我更愿意让MapReducer处理混乱的并行化问题。

    我玩过 Cascading 并且能够在通过HTTP访问的静态文件上运行作业,但这并不能解决我的问题。我可以使用curl作为中间步骤,将数据转储到Hadoop文件系统的某个地方,并编写一个看门狗,以便在每次准备好新的数据块时启动一个新的作业,但这是一个肮脏的黑客行为;必须有一些更优雅的方法才能做到这一点。有什么想法吗?

    10 回复  |  直到 9 年前
        1
  •  10
  •   SquareCog    15 年前

    你所描述的黑客或多或少是做事情的标准方法——Hadoop从根本上说是一个面向批处理的系统(首先,如果数据没有结束,那么还原程序就永远无法启动,因为它们必须在映射阶段结束后启动)。

    旋转您的日志;当您旋转它们时,将它们转储到HDF中。让一个监督程序(可能是一个分布式程序,由动物园管理员协调)监控倾倒场并启动新的处理工作。您需要确保作业在足够大的输入上运行,以保证开销。

    hbase是Hadoop生态系统中的一个大表克隆,您可能会感兴趣,因为它允许连续的插入流;但是,您仍然需要以批处理模式运行分析查询。

        2
  •  6
  •   DrDol    13 年前

    怎么样 http://s4.io/ . 它是为处理流数据而设计的。

    更新

    新产品正在崛起: Storm -分布式和容错实时计算:流处理、连续计算、分布式RPC等

        3
  •  2
  •   Andrei Savu    15 年前

    我想你应该看看埃斯佩尔·塞普( http://esper.codehaus.org/ )

        4
  •  1
  •   frankdou    14 年前

    雅虎S4 http://s4.io/

    它提供实时的流计算,如map reduce

        5
  •  1
  •   Fábio Batista Raza Ahmed    12 年前

    推特 Storm 是你需要的,你可以试试!

        6
  •  1
  •   Kim_Spin    10 年前

    这里有多个选项。 我建议将kafka和storm+(hadoop或nosql)结合起来作为解决方案。 我们已经使用这些开源工具构建了我们的大数据平台,而且它工作得非常好。

        7
  •  0
  •   kkrugler    15 年前

    您的用例听起来类似于使用Hadoop编写Web爬虫程序的问题——数据流从打开的套接字(缓慢)返回,以便通过HTTP获取远程页面。

    如果是这样,那么请参见 Why fetching web pages doesn't map well to map-reduce . 你可能想看看 FetcherBuffer bixo中的类,它在reducer中实现了一种线程方法(通过级联)来解决这类问题。

        8
  •  0
  •   ambodi    10 年前

    正如您所知,Hadoop在流挖掘中的主要问题是:首先,它使用的是hfds,这是磁盘和磁盘操作带来的延迟,这将导致流中的数据丢失。第二,管道不平行。map reduce通常在批数据上运行,而不是像在流数据上那样在实例上运行。

    我最近读了一篇关于M3的文章,它通过绕过HDF并在对象数据库中执行内存计算来解决第一个问题。对于第二个问题,他们使用的是增量学习者,不再是批量学习。值得一看 M3 : Stream Processing on Main-Memory MapReduce . 我在任何地方都找不到这个M3的源代码或API,如果有人找到了,请在这里共享链接。

    此外,Hadoop Online也是另一个尝试解决与M3相同问题的原型: Hadoop Online

    然而, Apache Storm 是解决这个问题的关键,但这还不够。你需要一些地图还原的优价,这就是为什么你需要一个叫做 SAMOA 它实际上有很多Mahout所缺乏的在线学习算法。

        9
  •  0
  •   Kai Wähner    10 年前

    市场上有几种成熟的流处理框架和产品。开源框架如ApacheStorm或ApacheSirk(都可以在Hadoop上运行)。您还可以使用IBM InfoSphere Streams或Tibco StreamBase等产品。

    看看这篇InfoQ文章,它详细解释了流处理以及所有这些框架和产品: Real Time Stream Processing / Streaming Analytics in Combination with Hadoop . 此外,本文还解释了这是如何补充Hadoop。

    顺便说一句:许多软件供应商,如Oracle或Tibco,将这种流处理/流分析方法称为“快速数据”而不是“大数据”,因为您必须实时操作而不是批处理。

        10
  •  0
  •   member555    9 年前

    您应该尝试Apache Spark Streaming。 为了你的目的,它应该工作得很好。