浪院长 | spark streaming的使用心得
浪院长 | spark streaming的使用心得
浪院长 浪尖聊大数据
今天,主要想聊聊spark streaming的使用心得。
1,基本使用
主要是转换算子,action,和状态算子,这些其实,就按照api手册或者源码里接口介绍结合业务来编码。
其实,想用好spark streaming 掌握spark core,spark rpc,spark 任务调度,spark 并行度等原理还非常有必要。
2,中间状态缓存
说到中间算子大家肯定都会想到UpdateStateByKey等状态。里面很多注意事项,比如顺序性,key的超时机制维护。这个适合数据量不多,尤其是key的维度不多,value不大的情况。
当然数据量上来了,要想维护中间状态怎么办?其实这个时候肯定是第三方存储,比如redis,alluxio。redis更适合那种key带超时机制的,并且数据量肯定不能过大。而alluxio就很适合那种高吞吐量的,比如去重统计。
3,结果输出
direct streaming能保证仅一次处理,但是要求输出存储支持密等性,或者主动将结果更改为存在更新不存在插入。当然,如果外部存储系统支持事务那就更嗨,能实现恰一次处理。
实际上在offset维护这个层面上,spark streaming 不同版本于kafka不同版本结合实现有很大不同。
4,监控告警及故障自动恢复
我觉得对于监控告警及故障自动恢复,重要程度不亚于业务场景。因为再好的业务实现,架不住系统挂掉你不知道。因为你总不能二十四小时盯着系统。而且很多公司对故障自动恢复都有kpi,比如3min,人工去检测故障并恢复不太可能,需要自己实现一套监控系统。
5,调优
调优对于spark streaming非常重要,因为一个批次处理延迟就会导致job堆积,结果输出延迟,深圳任务挂掉数据丢失。调优其实最注重对spark 原理把控,数据量的了解及资源和数据的关系。
6,源码
源码阅读,为了帮助大家更透彻的理解原理。主要会分三块:
spark streaming 与kafka-0.8.2 direct stream。
spark streaming 与kafka-0.8.2 receiver based stream。
spark streaming 与kafka-0.10.2 direct api。
- 第99课:使用Spark Streaming+Kafka实战对论坛网站动态行为的多维度分析及java.lang.NoClassDefFoundError问题解决完整内幕版本解密
- maven创建scala项目:spark-streaming项目使用
- 记录一下SparkStreaming中因为使用redis做数据验证而导致数据结果不对的问题
- 使用Spark Streaming处理爬取的数据(问题总结)
- 使用 ES-Hadoop 将 Spark Streaming 流数据写入 ES
- spark-streaming-kafka-0-8 和 0-10的使用区别
- 使用 Kafka 和 Spark Streaming 构建实时数据处理系统
- Spark streaming kafka1.4.1中的低阶api createDirectStream使用总结(Scala实现)
- Spark Streaming 中使用 zookeeper 保存 offset 并重用 Java版
- apach zeppelin中使用spark streaming:基本功能
- sparkStreaming里面使用文本分析模型(2.0.1)
- 使用Flume+Kafka+SparkStreaming进行实时日志分析
- 大数据IMF传奇行动绝密课程第97课:使用SparkStreaming+SparkSQL实现在线动态计算出特定时间窗口
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十二)Spark Streaming接收流数据及使用窗口函数
- SparkStreaming结合Kafka使用
- Spark Streaming 中使用 zookeeper 保存 offset 并重用 Java版
- Spark Streaming如何使用checkpoint容错
- Spark Streaming从Kafka中拉取数据,并且使用过“窗口函数”统计一些流量信息
- spark streaming检查点使用
- SparkStreaming简介 - 与第一个Spark实时计算程序,使用netcat来写数据 - wordcount