架构:
为什么使用kafka?
1.kafka可以存储海量中间数据,防止streaming崩溃。
2.不用关心数据的源是什么,只要从kakfa提取数据可以,提供统一interface。
3.Kafka具有persistence功能,可以指定时间段内的数据(非常重要的功能),间接的把流式处理变为离线数据分析。
4.Kafka采用zero-copy,一次读入内核,以后都是从内核直接读取。导致的结果是streaming从kakfa读数据,要比从底层数据源快2W倍。
sparkStreaming的运行机制?
Spark定时产生job,streaming是基于dstream编程,dstream的action不会触发job,仅仅作为job的模板,spark会定时把dstream转换为新的job实例提交给集群运行。
sparkStreaming仅仅是根据流式数据处理的特征做了一层封装而已。
1.sparkStreaming的job驱动依赖于时间。
2.DStream是rdd的模板
3.DstreamGraphy是rdd的DAG模板