Spark Streaming @图解
2024-12-04 10:39:47 0 举报
Spark Streaming原理
作者其他创作
大纲/内容
计算2
receiver
executor
1sthello 1hello 1
des
快
接收:0-job1
2
Driver
hello 1hi 1hi 1
spark streaming
DStream { create; transformation; output;}
有界数据
batch
计算
broker
producer
node02-broker-2
item1更新2
1st
__consumer_offsets
一步一步线性依赖全量
DAG
窗口移动过程中1,可以每次重新计算窗口数据2,也可以,加上进来的减去出去的
Tasks
spark启动一个job维护数据的拉取和保存
ooxx-2 item3 action1 partiton: 2item3 action2 partiton: 2item3 action3 partiton: 2
ooxx-1item1 action1 partiton: 1item1 action2 partiton: 1item1 action3 partiton: 1
时间
维护到一个事务中
src
计算1
1秒
hello 1hi 2
offset
hi 4hello 2
job
1sthi 2hi 2
Collect
window机制中(时间定义大小)1,窗口大小:计算量,取多少batch2,步进,滑动距离:job启动间隔
hello 2hi 4
node02-broker-3
consumer
node02record01
hello 1hi 2
node03record03
实时计算
1sthi 1hi 1
seek
MQkafka存储
程序启动的时候概念必须清楚:kafka自己还是第三方都是持久化
item1创建1
迭代器+shuffle
first4次
ooxx-0item2 action1 partiton: 0item2 action2 partiton: 0item2 action3 partiton: 0
批量计算
hello 3hi 6
first
维护offset
自动
产生shuffle
partition 0持久化重复消费
做聚合,reduceBykey或者combineByKey,相同key的数据最终汇聚到一个node上进行计算
consumer运行时自己维护在内存里自己消费到哪里了:offset
什么是KAFKA
离线计算
真正是在子线程中运行
group
如何预防job的重复消费:1.关闭失败重试,(不推荐,关闭整个job会严重影响计算效率)2.解耦:文件,每次记录覆盖的方式 存入文件保证唯一性、幂等性3.开启事务: 3-1:OK ,这种需要处理好分布式事务逻辑,而且分区太多并行度高,每个都要有数据库连接 3-2:repartition:1 ,尽量将结果汇总到一个分区上,方便事务处理4.collect:回收,Driver端回收job的数据
2nd
流水线式stormflink
partition 1
hi 6hello 3
队列
SparkSteaming是批量计算;如果每个consume在计算完后再自己维护offset,中间产生shuffle,不同的consumer的记录进入其他的分区中,会混淆offset,导致无法维护offset; 因此,consumer中维护offset 极其复杂
RDD
node02-broker-1
Driver监控job的运行状态,job运行成功后去维护offset,其中需预防job中consumer重复消费
数据serversocket
topic ooxx
item1删除3
ZOOKEEPER分布式问题老版本中,分布式角色的状态数据都交给zookeeper
data
第三方
redismysql
partition 0
kafka
2个fun
mysqlhbasekafka元数据数据自身
node01record02
计算job
1sthi 4hi 2
main主线程sscssc.start()ssc.awaitTermination()
Streaming
1sthello 1hello 2
spark streaming微批的计算行式
direct
hello 3hi 6
手动
start()是启动了子线程再跑逻辑
3 最终kafka自己维护offset和元数据
partition 1持久化重复消费
//伪代码while(true) { sleep(1000)}
在更新offset时,Driver挂了如何处理将数据回收给Driver,将数据和offset更新放在同一个事务中处理。由于数据要回收,所以Driver需要调优,保证回收数据一定全部接收,调整内存大小。
window 5s
无界数据
1
语义:有界数据:不会增加的数据,你计算完,要等很久无界数据:数据会增加,你计算完,马上还得计算批量计算:最小单位是个批次(若干条记录)流式计算:最小单位是记录离线计算:有界批量的数据实时计算:无界流式计算
dirct
流式计算
0 条评论
下一页