1、SparkStreaming+kafka的receiver模式
2、SparkStreaming+kafka的direct模式
两者的区别是:
基于receiver模式是借助外界的东西:比如kafka,等来维护消费者偏移量的。并且是node1接收到数据之后,首先发送给node2和node3,之后再在zookeeper中做备份,然后在发送到driver端去执行,driver去监控task,发送task,执行task的。
基于direct模式是kafka自己维护消费者偏移量的,kafka充当的是存储数据的一方,sparkstreaming是主动去从kafka中拿数据的。 不需要一个task一直被占用接收数据。基于direct模式的offset是存储在内存中的,如果设置了checkpoint的话,也会有一部分保存在持久化的磁盘中的。