spark streaming 踩过的那些坑
- 系统背景
- spark streaming + Kafka高级API receiver
- 目前资源分配(现在系统比较稳定的资源分配),独立集群
--driver-memory 50G
--executor-memory 8G
--num-executors 11
--executor-cores 5
- 广播变量
1. 广播变量的初始化
1.1.executor端,存放广播变量的对象使用非静态,因为静态变量是属于类的,不能使用构造函数来初始化。在executor端使用静态的时候,它只是定义的时候的一个状态,而在初始化时设置的值取不到。而使用非静态的对象,其构造函数的初始化在driver端执行,故在集群可以取到广播变量的值。
2. 广播变量的释放
2.1.当filter增量为指定大小时,进行广播,虽然广播的是同一个对象,但是,广播的ID是不一样的,而且ID号越来越大,这说明对于广播来说,它并不是一个对象,而只是名字一样的不同对象,如果不对广播变量进行释放,将会导致executor端内存占用越来越大,而一直没有使用的广播变量,被进行GC,会导致GC开销超过使用上线,导致程序失败。
2.2.解决方案:这广播之前,先调用unpersist()方法,释放不用的广播变量
- 使用Kafka 的高级API receiver
1. 在使用receiver高级API时,由于receiver、partition、executor的分配关系,经常会导致某个executor任务比较繁重,进而影响整体处理速度
1.1.最好是一个receiver对应一个executor
2. 由于前段时间数据延迟比较严重,就想,能不能让所有executor的cores都去处理数据?所以调整receiver为原来的四倍,结果系统启动时,就一下冲上来非常大的数据量,导致系统崩溃,可见,receiver不仅跟partition的分配有关,还跟数据接收量有关
3. 在实际处理数据中,由于消息延迟,可以看到,有的topic处理速度快有的慢,原因分析如下:
3.1.跟消息的格式有关,有的是序列化文件,有的事json格式,而json的解析相对于比较慢
3.2.有时候拖累整个集群处理速度的,除了大量数据,还跟单条数据的大小有关
以下是程序跑挂的一些异常,和原因分析





问题矫正:
第一张图片的,解决方案的倒数第二个, spark.memory.storageFraction(动态内存的百分比设置),应该为spark.storage.memoryFraction(静态内存分配的设置) (由于原文档丢失,导致无法修改文档。)
如果有什么问题,欢迎大家指出,共同探讨,共同进步
spark streaming 踩过的那些坑的更多相关文章
- spark streaming 消费 kafka入门采坑解决过程
kafka 服务相关的命令 # 开启kafka的服务器bin/kafka-server-start.sh -daemon config/server.properties &# 创建topic ...
- Spark踩坑记——Spark Streaming+Kafka
[TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...
- Spark踩坑记:Spark Streaming+kafka应用及调优
前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark streaming从k ...
- Spark Streaming+Kafka
Spark Streaming+Kafka 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端, ...
- Spark streaming消费Kafka的正确姿势
前言 在游戏项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark streaming从kafka中不 ...
- Spark Streaming实时写入数据到HBase
一.概述 在实时应用之中,难免会遇到往NoSql数据如HBase中写入数据的情景.题主在工作中遇到如下情景,需要实时查询某个设备ID对应的账号ID数量.踩过的坑也挺多,举其中之一,如一开始选择使用NE ...
- 使用 Kafka 和 Spark Streaming 构建实时数据处理系统
使用 Kafka 和 Spark Streaming 构建实时数据处理系统 来源:https://www.ibm.com/developerworks,这篇文章转载自微信里文章,正好解决了我项目中的技 ...
- Redis上踩过的一些坑
来自: http://blog.csdn.net//chenleixing/article/details/50530419 上上周和同事(龙哥)参加了360组织的互联网技术训练营第三期,美团网的DB ...
- 【自动化】基于Spark streaming的SQL服务实时自动化运维
设计背景 spark thriftserver目前线上有10个实例,以往通过监控端口存活的方式很不准确,当出故障时进程不退出情况很多,而手动去查看日志再重启处理服务这个过程很低效,故设计利用Spark ...
随机推荐
- 题解报告:hdu 1114 Piggy-Bank(完全背包恰好装满)
Problem Description Before ACM can do anything, a budget must be prepared and the necessary financia ...
- WebSphere中配置的数据源在Web应用中引用的写法
WebSphere中配置的数据源在Web应用中引用时名称一定要和数据源的JNDI名称保持一致,否则会出现无法找到数据源的错误. 引用WAS的数据源时只需要与JNDI名称保持一致即可. 引用Tomcat ...
- 为HttpClient和HttpURLConnection添加中国移动代理
转自: http://www.2cto.com/kf/201111/112100.html 在android中,一般需要联网的时候前,都要做一次网络的判断,判断当前的网络状态!然后开始请求网络 当我们 ...
- iOS- NSThread/NSOperation/GCD 三种多线程技术的对比及实现 -- 转
1.iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ...
- [SPOJ1812]Longest Common Substring II 后缀自动机 多个串的最长公共子串
题目链接:http://www.spoj.com/problems/LCS2/ 其实两个串的LCS会了,多个串的LCS也就差不多了. 我们先用一个串建立后缀自动机,然后其它的串在上面跑.跑的时候算出每 ...
- JS filters-ul li简单过滤
功能要求:在input中输入字母,显示ul li中匹配的元素,隐藏不匹配的 <!DOCTYPE html> <html> <head> <meta chars ...
- R in action读书笔记(10)-第八章:回归-- 异常观测值 改进措施
8.4 异常观测值 8.4.1 离群点 car包也提供了一种离群点的统计检验方法.outlierTest()函数可以求得最大标准化残差绝对值Bonferroni调整后的p值: > library ...
- 阿里云ecs绑定域名
在阿里云服务器ECS一切配置ok后,通过域名一直访问不成功,结果发现还需要在后台进行安全组的规则设定:
- php判断是否引入某文件
Code: /* 判断是否引入了公共文件demo.php */ $include_files = get_included_files(); $include_files_exist = 0 ; fo ...
- git 出现 The current branch is not configured for pull No value for key branch.master.merge found in configuration
以下是我在网上找到的不错的文章,我参考后已解决我的问题: http://my.oschina.net/robinsonlu/blog/144085 http://www.cnblogs.com/zha ...