用于研究目的我正在研究一种架构来进行实时(以及离线)数据分析和语义注释。 我已附上基本架构: 我有一些传感器链接到树莓派3.我想可以处理这个链接与mqqt经纪人像mosquitto。 但是,我想收集有关树莓的数据,做一些事情,并将它们转发到商品硬件集群,以便使用Spark或Storm执行实时推理(任何有关哪些提示?)。 然后,这些数据必须存储在Hadoop集群可访问的NoSql数据库(可能是Cassandra或HBase)中,以执行批处理推理,对它们进行语义数据丰富并重新存储在同一数据库中。因此,客户可以查询系统以提取有用的信息。
我应该在红色区块中使用哪种技术? 我的想法是MQQT,但Kafka可能更适合我的目的吗?
答案 0 :(得分:4)
Spark vs Storm
Spark现在是Spark和Storm之间的明显赢家。至少有一个原因是Spark能够以高效的方式处理大量数据。 Storm竭力以高速处理大量数据。在大多数情况下,大数据社区已经接受了Spark,至少目前如此。 Apex和Kafka Streams等其他技术正在流处理领域掀起波澜。
Kafka制作Raspberry Pi
如果您选择Kafka路径,请记住,根据我的经验,Kafka的Java客户端是最可靠的实现。但是,我会做一个概念验证,以确保不存在任何内存问题,因为Rasberry Pi上没有大量内存。
Kafka At the Heart
将Kafka保留在RED框中将为您提供一个非常灵活的架构,因为任何流程:Storm,Spark,Apex,Kafka Streams,Kafka Consumer都可以连接到Kafka并快速读取数据。将Kafka作为您架构的核心,可以为您提供所有数据的“分发”点,因为它非常快,但也允许将数据永久存储在那里。请记住,您无法查询Kafka,因此使用它将要求您尽可能快地读取消息以填充其他数据存储区或执行流式计算。
答案 1 :(得分:1)
您可以针对您的用例评估 Apache Apex ,因为您可以满足大多数要求。 Apache Apex还附带Apache Malhar项目,该项目为Apache Apex提供运营商库。由于您决定使用MQTT协议,Apache Malhar还预先构建在 AbstractMQTTInputOperator / AbstractMQTTOnputOperator 中,您可以对其进行扩展,它可以作为输入代理。 Malhar还提供各种运算符,可以连接到不同的NoSQL Dbs以及转储到HDFS。在您提出的架构中,Apache Apex可能不需要kafka。由于您希望将数据推送到Hadoop,因此 Hadoop原生 Apex实际上可以显着减少我们的部署工作。
我遇到的另一个有趣的项目是Apache Edgent,它可以帮助您在边缘设备上执行一些实时分析。
PS:我是Apache Apex / Malhar项目的贡献者。