设为首页 加入收藏

TOP

Spark踩坑之旅
2019-01-19 13:27:45 】 浏览:90
Tags:Spark 之旅


1、Spark standalone 模式集群,使用zk作为服务状态一致性协调器,当zk leader宕机,spark master也跟着挂掉


问题描述:
zk leader宕机之后,spark master节点也出现宕机情况,spark standby master转换为master,若在宕机的master节点恢复健康之前zk leader又出现宕机,那么spark集群挂掉


解决方案:
1)、适当增加spark standby master
2)、编写shell脚本,定期检测master状态,出现宕机后对master进行重启操作




2、Spark standalone 模式集群主备切换后,备用master上任务状态由running变为waiting
问题描述:
当spark master宕机后,所有任务转移到备用的standby master上,转移完毕后发现master界面中之前running状态的任务现在全部变为waiting状态,但实际上该任务处于running状态


解决思路:
该问题属于spark状态检测BUG,升级到2.1版本后发现问题仍然存在。



3、CDH环境中提交spark任务报java.lang.IncompatibleClassChangeError:Implementing class
问题描述:
CDH环境中提交SPARK-STREAMING任务消费kafka数据,任务提交成功后消费到kafka数据时出现上述错误信息


解决方案:
经过排查确定该问题是由于spark在消费kafka数据时需要的kafka相关jar包版本与本身CDH环境已加载的kafka相关jar包版本不同,导致调用时引起类冲突。
在spark默认提交任务时使用classloader继承spark主线程classloader,修改loader默认的类加载策略,优先加载本地class,本地class找不到后再去寻找CDH环境中相关class,问题解决

4、spark1.6版本使用accumulator 时内存使用过大导致OOM问题
问题描述:
spark1.6版本测试过程中发现数据量比较大时内存消耗增加,查看进程内存使用逐步增长,长时间运行后出现OOM问题,2.0版本没有该问题,查看spark任务堆栈信息后发现
在spark缓存Task中存在任务分析后生成的数据没有释放,spark默认会缓存job,stage,task列表信息做缓存,而1.6版本中task会对accumulator数据做缓存并展示,导致内存使用量急剧增加


解决方案:
spark默认缓存的job=1000,stage=1000,task=10000个数为1000,修改降低三个参数缓存数量,减少内存使用,修改参数为提交spark任务时设置
--conf spark.ui.retainedJobs=50
--conf spark.ui.retainedStages=100
--conf spark.ui.retainedTasks=400
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇sparkmllib关联规则算法(FPGrowt.. 下一篇Spark相对于MapReduce的优势对比

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目