【发布时间】:2016-05-27 03:38:30
【问题描述】:
我正在评估 Kafka/Spark/HDFS 以开发 NRT(亚秒)Java 应用程序,该应用程序从外部网关接收数据并将其发布到各种主题的桌面/移动客户端(消费者)。同时,数据将通过流式处理和批处理(持久)管道提供给分析和机器学习。
例如,流程将是......
- 独立的 TCP 客户端从外部 TCP 服务器读取流数据
- 客户端根据数据包 (Kafka) 发布不同主题的数据,并将其传递到流式管道进行分析 (Spark)
- 桌面/移动消费者应用订阅各种主题并接收 NRT 数据事件 (Kafka)
- 消费者还从流/批处理管道 (Spark) 接收分析
必须对 Kafka 集群进行管理、配置和监控,以实现最佳性能和可扩展性。这可能需要额外的人力资源和工具来管理操作。
Kafka、Spark 和 HDFS 可以选择部署在 Amazon EC2(或使用连接器的 Google Cloud)上。
我正在阅读有关 Google Cloud DataFlow、Cloud Storage、BigQuery 和 Pub-Sub 的信息。数据流提供了自动缩放和工具来实时监控数据管道,这非常有用。但是设置有一些限制,例如pub-sub push 要求客户端使用 https 端点,并且应用程序部署需要使用 Web 服务器,例如GCE 上的应用引擎 webapp 或 Web 服务器。
这可能不如部署可以利用 pub-sub 和数据流管道传输数据的双向 tcp/ip 应用程序高效(我担心使用 http 时的延迟)。
理想情况下,Google 云上的首选设置是运行 TCP 客户端连接到部署在 GCE 上的外部网关,该网关使用 pub-sub 将数据推送到桌面消费者应用程序。此外,它将利用 DataFlow 管道进行分析和云存储,使用用于 ML 的 spark(预测 API 有点限制),使用 cloudera spark 连接器进行数据流。
可以在 Google 云上部署 Kafka/Spark/HDFS 等,但这有点违背了利用 Google 云技术的目的。
感谢您对上述设置是否可以使用 Google 云或继续使用 EC2/Kafka/Spark 等的任何想法。
【问题讨论】:
标签: apache-spark apache-kafka google-cloud-platform google-cloud-dataflow bigdata