本文主要是介绍spark推测执行 优点 缺点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基本概念
在spark程序中,推测任务是指对于一个stage里面拖后腿的task,会在其他节点的Executor上再次启动这个task,如果其中一个task的实例运行成功者将这个最先完成的task的计算结果,同时会干掉其它Executor上运行的实例。默认情况下推测执行时关闭的。
开启推测的优点:
- 解决慢task提升作业的整体执行进度
- 解决分布式集群环境下,负载不均衡或者资源分布不均等问题
- 解决因机器或者程序bug导致执行task的进程hang(暂时停止执行)住,使得job无法继续执行,需要重启任务等问题
开启推测的弊端:
- 占用更多的集群资源,严重的会造成所有资源被全部占用,不能及时释放
- task执行非事务操作,如果中间过程有跟外界存储交互的可能会影响结果数据
推测执行算法流程图:
开启spark的推测执行,需要设置运行参数spark.speculation=true,两种设置方式:
- 在程序的sparkConf对象设置 :sparkConf.set("spark.speculation","true")
- 提交作业时设定: --conf spark.speculation=true
开启spark的推测执行需结合其他三个参数同时使用:
- spark.speculation.interval 100:检测周期,单位毫秒;
- spark.speculation.quantile 0.75
这篇关于spark推测执行 优点 缺点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!