之前通过Python已经将网站的数据获取到,接下来需要考虑到后台的处理部分。那么现在有几个问题要考虑,从技术选型上该如何消费这些实时的数据。
Kafka在这个时候作为一个中间件就是个不错的选择:
数据能够发送和接收,类似于一个传送系统,消息的添加也是有序的;
能存储消息,按topic存取,支持多个生产者或者消费者对topic的操作,并且容错性也不错;
适合实时的处理消息,并且还支持分布式。
最后,结合Flume做目标文件的监控,只要监控到数据的更新,便下沉到kafka进行消费。所以,通过Python处理完的数据再对接Flume+Kafka可以说是采集的过程,将采集好的数据对接给SparkStreaming进行实时计算。
简言之,数据的链条是:
Python获取数据->Flume实时监控->Kafka实时消费->SparkStreaming实时计算处理。
环境信息是Centos7+kafka2.11-0.10.0+spark2.2.0+scala2.11.8,需要注意的是客户端的环境必须和Idea中的maven依赖一致。
在Idea中构建工程,如下:
我在kafka中新建了一个topic为flumeTopic用来消费Flume下沉过来的数据,Kafka的数据再通过spark streaming进行处理。效果如下,我在slave1节点运行python获取数据的脚本后,kafka会实时获取。
这个时候,同步的,可以看到在Idea中sparkstreaming也获取到了消息,这里我设置的每5s为一个批次来处理数据。
接下来,需要解决几个问题:
数据再streaming中的计算与处理;
计算完的数据需要一个持久化的DB存储,选哪个存储;
DB里面的数据与前端结合的展现。
领取专属 10元无门槛券
私享最新 技术干货