延云YDB对spark广播数据broadcast的Cleaner改进
来源:互联网 发布:spring软件怎么下 编辑:程序博客网 时间:2024/06/05 03:40
由于SPARK-3015 的BUG,spark的cleaner 目前为单线程回收模式。
大家留意spark源码注释
其中的单线程瓶颈点在于广播数据的cleaner,由于要跨越很多太机器,需要通过akka进行网络交互。
如果回收并发特别大,SPARK-3015 的bug报告会出现网络拥堵,导致大量的 timeout出现。
为什么回收量特变大呢? 其实是因为cleaner 本质是通过system.gc(),定期执行的,默认积累30分钟或者进行了gc后才触发cleaner,这样就会导致瞬间,大量的akka并发执行,集中释放,网络不瞬间瘫痪才不怪呢。
但是单线程回收意味着回收速度恒定,如果查询并发很大,回收速度跟不上cleaner的速度,会导致cleaner积累很多,会导致进程OOM(YDB做了修改,会限制前台查询的并发)。
不论是OOM还是限制并发都不是我们希望看到的,所以针对高并发情况下,这种单线程的回收速度是满足不了高并发的需求的。
对于官方的这样的做法,我们表示并不是一个完美的cleaner方案。并发回收一定要支持,只要解决akka的timeout问题即可。
所以这个问题要仔细分析一下,akka为什么会timeout,是因为cleaner占据了太多的资源,那么我们是否可以控制下cleaner的并发呢?比如说使用4个并发,而不是默认将全部的并发线程都给占满呢?这样及解决了cleaner的回收速度,也解决了akka的问题不是更好么?
针对这个问题,我们最终还是选择了修改spark的ContextCleaner对象,将广播数据的回收 改成多线程的方式,但现在了线程的并发数量,从而解决了该问题。
0 0
- 延云YDB对spark广播数据broadcast的Cleaner改进
- Spark Broadcast 广播变量
- 延云YDB基于spark进行数据分析的一种新方式
- android中对broadcast广播的利用
- spark中的广播变量broadcast
- spark中的广播变量broadcast
- 对Spark中Broadcast的理解
- Broadcast广播的使用
- Broadcast广播的使用
- <转>spark中的广播变量broadcast
- spark之广播共享变量broadcast
- Spark 广播变量(broadcast)更新方法
- 基于Spark之上的YDB技术原理
- 基于Spark之上的YDB技术原理
- 大数据:Spark Storage(二) 集群下的broadcast
- YDB,一种Spark快速数据分析替代方案
- 初识android的广播BroadCast
- Android的Broadcast广播-笔记
- 远程工具——VNC
- 之前的通讯录进行文件保存
- CSS之外层带背景内层左右模式:右侧内容高度自增
- PFSI 开源啦,欢迎您来贡献您的代码
- java面试时遇到的一个有意思的小问题
- 延云YDB对spark广播数据broadcast的Cleaner改进
- Eclipse- Dynamic Web Module 3.0 requires Java 1.6 错误
- 深入.NET平台和C#编程 第一章 概念+上机
- [python协程gevent]之greenlet初识
- Redis中常用命令
- .NET项目报受源代码管理,向源代码管理注册此项目时出错的解决方案
- java.lang.ClassCastException: sun.net.www.protocol.http.HttpURLConnection cannot be cast to javax.n
- Python的web框架sanic
- [linux][通用]针对裁剪型的busy box下的批量选择性文件修改方式