【问题标题】:Suggested Hadoop-based Design / Component for Ingestion of Periodic REST API Calls用于摄取定期 REST API 调用的建议基于 Hadoop 的设计/组件
【发布时间】:2015-11-11 06:21:23
【问题描述】:

我们计划使用 REST API 调用从端点提取数据并将数据存储到 HDFS。 REST 调用以定期方式(每天或每小时)完成。

我已经使用 Flume 完成了 Twitter 摄取,但我认为使用 Flume 不适合我当前的用例,因为我没有在 Twitter 中使用像这样的连续数据 Firehose,而是离散的定期时间限制调用。

我现在的想法是使用自定义 Java 来处理 REST API 调用并保存到 HDFS,然后在该 Java jar 上使用 Oozie 协调器。

我想听听有关设计以及用于此用例的基于 Hadoop 的组件的建议/替代方案(如果有比我现在想的更容易的话)。如果你觉得我可以坚持 Flume,那么请给我一个想法。

【问题讨论】:

    标签: rest hadoop data-ingestion


    【解决方案1】:

    如 Apache Flume 网站所述:

    Apache Flume 是一个分布式、可靠且可用的系统,用于高效地收集、聚合来自许多不同来源的大量日志数据并将其移动到集中式数据存储。

    如您所见,Flume 的功能之一是收集数据。借助HttpSourceAvroSurceThriftSource 等,“类似推送或类似发射”的数据源很容易集成。在您的情况下,数据必须是从 http-基于服务,集成不是那么明显,但可以做到。例如,通过使用 ExecSource,它运行一个脚本来获取数据并将其推送到 Flume 代理。

    如果您使用负责提取数据并将其写入 HDFS 的专有代码,这样的设计是可以的,但是您会丢失一些有趣的内置 Flume 特性(可能需要您自己实现) ):

    • 可靠性。 Flume 具有确保数据真正持久化在最终存储中的机制,并重试直到有效写入。这是通过在输入(摄取负载峰值)和输出(保留数据直到有效持久化)和事务概念处使用内部通道缓冲数据来实现的。
    • 性能。事务的使用和配置多个并行接收器(数据处理器)的可能性将使您的部署能够处理每秒生成的大量数据。
    • 可用性。通过使用 Flume,您无需处理存储细节(例如 HDFS API)。甚至,如果有一天您决定更改最终存储,您只需重新配置 Flume 代理即可使用新的相关接收器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 2021-12-16
      相关资源
      最近更新 更多