【问题标题】:Spark streaming recover from stoppage火花流从停止中恢复
【发布时间】:2015-09-18 06:38:34
【问题描述】:

我正在寻找一种将日志数据从文件流式传输到我们的数据库的方法。我一直在阅读有关 Spark streamingStorm 实时管理的信息,但我不知道如何管理由于停止而未处理的数据。

我的意思是,假设系统正在运行并且实时处理数据,系统突然停止并在 10 分钟后重新启动。有没有办法在不影响实时流的情况下处理这些待处理的数据?

谢谢

【问题讨论】:

    标签: apache-spark real-time apache-storm


    【解决方案1】:

    例如在Storm 上,您需要从一个可靠的数据源中读取数据,该数据源保存传入的消息并允许消费者从它停止的点继续。这种数据源的一个例子是kafka

    Kafka 的情况下,直播不会因为您的消费者(风暴、火花或您正在使用的任何东西)停止而停止。 Kafka 将继续接收消息,并将继续将它们提供给订阅特定流的客户端。

    容错的关键在于您选择分发直播流的系统,而不是您选择处理它的工具。您的处理工具可以始终从它们停止的点恢复并继续处理只要消息传递系统允许

    另一个可以处理消费者失败的消息系统代理是Rabbit MQ

    【讨论】:

    • 谢谢,卡夫卡在我的脑海里。我正在寻找的,抱歉之前不清楚,是关于 Spark 或 Storm 如何处理流和批处理数据。回来后会存储需要处理的数据,可能是数小时的数据,但不会影响流式传输过程,因为我总是需要在监控系统上显示实时数据。例如,如果在 X 秒后没有消耗消息,有什么方法可以让 Kafka 将消息移动到另一个主题?这样一来,一个可以有一个实时消费者和一个批量消费者,对吗?提前感谢
    • @GBrian 如果要处理批处理数据,您需要先将其复制到 hdfs 之类的地方(例如,您可以使用 Camus 将数据从数据 kafka 复制到 hdfs),然后处理您的批处理(通常这意味着 hadoop 或 spark)。您不能通过 kafka 运行批处理作业。我有我的 kafka 主题要保留 7 天,但这只是为了确保是否出现问题(例如 Camus 停止工作)我有 7 天的时间来修复它,然后数据被丢弃......
    • @GBrian 而不是 Spark Stream 和 Spark Ba​​tch 不是一回事。而 Storm 只做实时
    猜你喜欢
    • 2020-05-29
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 2016-05-07
    • 1970-01-01
    • 2017-08-04
    相关资源
    最近更新 更多