Spark Streaming 设计问题

Posted

技术标签:

【中文标题】Spark Streaming 设计问题【英文标题】:Spark Streaming design questions 【发布时间】:2017-11-14 13:02:19 【问题描述】:

除了设计问题,我没有任何具体查询。我是火花/流媒体的新手,因此如果我问愚蠢的问题,请原谅我。如果问题不适合本论坛,请删除它。

所以基本上我们有要求,我们必须每小时处理大量数据并生成 o/p 以在 kibana(弹性搜索)中报告。假设我们有两个数据模型,如下所示。 DataModel-1 表示使用该哈希发推文的人的哈希标签和用户 ID。第二个数据模型 DataModel-2 包含 zip 和用户如何在该 zip 中。 DataModel-1 数据是流数据,我们每秒获得近 40K 事件。 DataModel-2 不会经常更改。在输出中,我们需要数据,通过这些数据我们可以看到给定 zip 的标签趋势。就像在给定时间 zip 有多少用户正在使用给定标签发推文一样。

我有以下问题

    我们可以在 kafka 中使用火花流吗?但是我担心的是我们是否能够以每秒 40k 的速度进行扩展。虽然我们已经开始了 POC,但我们会得到答案。但只是想了解其他人的经验和调整我们可以应用来实现它。 如果我要像每 1 小时那样进行批处理,那应该是一个好的数据存储,我可以在其中保存推文并稍后处理它。 Oracle 和 mysql 是否适合存储数据然后将其加载到 spark 中?或者我应该把它转储到 hdfs 中? 除了 Kibana,还有什么好的报表平台?

DataModel-1 [ 哈希:#IAMHAPPY, 用户:[123,134,4566,78899] ]

DataModel-2 [ 邮编:zip1 用户:[123,134] , 邮编:zip2 用户:[4566,78899] ]

报表数据模型 [ 邮编:邮编1, 哈希:[#IAMHAPPY] , 邮编:zip2, 哈希:[#IAMHAPPY] ]

【问题讨论】:

关于#2,您可能会发现这个答案很有趣***.com/a/39753976/3723346 所以,这不是一个设计建议,而是一个设计问题 - 编辑了你的标题 @desertnaut 我已经更新了问题:)。由于我在 spark 方面没有太多经验,因此我需要更多建议。 【参考方案1】:
    是的。我认为您的任务 40K 消息/秒并不难达到。但是... 如果您打算每 1 小时处理一次,请不要使用火花流。您可以在 1 小时内将数据存储到 HDFS,然后使用正常的离线 Spark 应用程序对其进行处理。这比在您的用例中流式传输更合理。 我不知道,但 ELK 很好。

【讨论】:

以上是关于Spark Streaming 设计问题的主要内容,如果未能解决你的问题,请参考以下文章

Spark Streaming架构设计和运行机制总结

Spark Streaming源码解读之Driver中ReceiverTracker架构设计以具体实现彻底研究

11.Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究

第11课:Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究

第11课:Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究

通过Spark Streaming处理交易数据