Apache spark 流分析的体系结构。我需要哪个经纪人?

Apache spark 流分析的体系结构。我需要哪个经纪人?,apache-spark,apache-kafka,apache-storm,mosquitto,broker,Apache Spark,Apache Kafka,Apache Storm,Mosquitto,Broker,出于研究目的,我正在研究一种体系结构来进行实时(以及离线)数据分析和语义注释。 我附加了一个基本模式: 我有一些传感器连接到树莓皮3。我想我们可以使用像mosquitto这样的mqqt代理来处理这个链接。 然而,我想收集关于raspberry的数据,做点什么,然后将它们转发到一个商品硬件集群,以使用Spark或Storm进行实时推理(关于哪个的任何提示?)。 然后,这些数据必须存储在NoSql数据库(可能是Cassandra或HBase)中,Hadoop集群可以访问该数据库,以便对其执行批处理推

出于研究目的,我正在研究一种体系结构来进行实时(以及离线)数据分析和语义注释。 我附加了一个基本模式: 我有一些传感器连接到树莓皮3。我想我们可以使用像mosquitto这样的mqqt代理来处理这个链接。 然而,我想收集关于raspberry的数据,做点什么,然后将它们转发到一个商品硬件集群,以使用Spark或Storm进行实时推理(关于哪个的任何提示?)。 然后,这些数据必须存储在NoSql数据库(可能是Cassandra或HBase)中,Hadoop集群可以访问该数据库,以便对其执行批处理推理、语义数据丰富并重新存储在同一数据库中。因此,客户可以查询系统以提取有用的信息

我应该在红块中使用哪种技术? 我的想法是MQQT,但卡夫卡可能更适合我的目的


星火大战风暴

火花是火花和风暴之间的赢家。至少一个原因是Spark更能以高性能的方式处理大数据量。Storm努力以高速处理大量数据。至少就目前而言,大数据社区在很大程度上已经接受了Spark。Apex和Kafka Streams等其他技术正在流处理领域掀起波澜

卡夫卡生产覆盆子皮

如果选择Kafka路径,请记住,根据我的经验,Kafka的Java客户端是迄今为止最可靠的实现。不过,我会做一个概念验证,以确保不会有任何内存问题,因为Rasberry Pi上没有太多RAM

卡夫卡的心脏

将卡夫卡保存在红色框中将为您提供一个非常灵活的体系结构,因为任何流程:Storm、Spark、Apex、卡夫卡流、卡夫卡消费者都可以连接到卡夫卡并快速读取数据。将卡夫卡作为体系结构的核心为您的所有数据提供了一个“分发”点,因为它速度非常快,但也允许数据永久存储在那里。请记住,您无法查询Kafka,因此使用它需要您以尽可能快的速度读取消息,以填充其他数据存储或执行流式计算。

使用

有一个与您的用例非常相似的描述。要将数据输出到HDFS,可以使用或,然后使用为客户端提供对数据的访问

使用ApacheNIFI,您可以通过零(或者几乎零)开发非常快速地交付工作原型。
您可能会在系统的产品化步骤上花费更多的时间进行性能调优、部署和定制,但这一部分对于任何开源工具都是必需的。

您可以针对您的用例评估Apache Apex
,因为它可以满足您的大多数需求。ApacheApex还附带了ApacheMalhar项目,该项目为ApacheApex的操作员库提供服务。由于您决定使用MQTT协议,Apache Malhar还预构建了AbstractMQTTInputOperator/AbstractMQTTInputOperator,您可以对其进行扩展,并将其用作输入代理。Malhar还提供了各种各样的运营商,它们可以连接到不同的NoSQL数据库以及HDFS。ApacheApex可能不需要在您提议的体系结构中使用kafka。当您想要将数据推送到Hadoop时,Hadoop本机Apex实际上可以大大减少我们的部署工作

我遇到的另一个有趣的项目是ApacheEdgent,它可以帮助您在边缘设备上执行一些实时分析


PS:我是Apache Apex/Malhar项目的贡献者

它取决于数据量和用例类型。Spark streaming与flume、kafka等资源完美集成,您可以阅读更多内容。首先,你可以尝试RASBERRY PI->Kafka->spark streaming。你的URL不起作用。对我来说,卡夫卡的真正潜力还不清楚,有人说它很有用,因为它可以处理大量数据。那么卡夫卡也提供存储?这样可以避免使用noSql db吗?在这个场景中,一些可穿戴传感器(6或7)以20Hz的频率连续传输。试试这个——我已经使用kafka作为我的流媒体应用程序的消息传递系统。卡夫卡是金门和火花流媒体应用之间的中间层。卡夫卡可以处理海量数据(每秒数百万条记录)。我建议您使用类似spark streaming的系统来使用来自kafka主题的消息,然后存储在Nosql DB(Hbase,cassandra)中。感谢您的帮助。谢谢。所以在你看来,把卡夫卡放在红盒子里,使用火花是最好的解决方案。我不明白你在说树莓的记忆问题。我使用它只是从传感器收集数据,(我希望)进行实时异常检测,然后发布在卡夫卡上,所以我不认为我会耗尽它所有的RAM内存。另一个问题:要从传感器收集到raspberry的数据,我应该使用MQQT?如果您选择使用Kafka Java客户端从raspberry pi生成消息,并将其发送到Kafka Broker,那么您应该确保raspberry pi有足够的内存来处理Java客户端和特定负载。我无法回答有关MQQT的问题,因为我没有这方面的经验。