Spark Streaming 调优
Updated:
本文档使用的样本数据量有效信令大约每分钟100-120w条,每分钟数据总大小约200MB
flume
- flume channel capacity 默认1000,调整为1000000
= 1000``` 1- channel size不用太大,需要调大kafka sink的取消息速度,减少channel的积压```a1.sinks.k1.batchSize = 100000
Kafka
- 目前使用200个partition,10个broker. 在建立topic的时候指定
- 注意:kafka的partition有可能因为数据源的问题发生倾斜
Spark
根据需要调整executor的内存,数量,以及核数(核数指每个executor可以并行的线程数,每个线程对应一个spark的task)
- executor 内存应根据每个task的复杂度决定,OCSP系统中每个task复杂度不高,推荐使用参数 1> 2. executor 数量与executor 核数相乘应大于等于Spark的task数量,推荐相等即可,executor核数推荐 <=4,因此200个kafka partition在Spark中对应有200个task,建议使用```--executor-num=50 --executor-cores=4
- executor 内存应根据每个task的复杂度决定,OCSP系统中每个task复杂度不高,推荐使用参数
Driver内存够用即可
Codis
- 使用10个redis-server分布在10台机器上,codis每个group包括一个redis-server,分配约100个slot,使用10个codis-proxy,与10台redis-server的机器复用
- Codis-proxy cpu核数:ncpu=8, 该参数在启动codis-proxy时指定