Spark的一个经典问题(1个Core5个Executor和5个Core1个Executor有什么区别)
一、问题分析
1.1先思考两个问题
1个Core VS 5个Core 有什么区别?在spark中如何用到Core
1个Executor VS 5个Executor 有什么区别?在spark中如何使用Executor?
1.2再思考两个问题
什么是IO密集?
什么是计算密集?
二、上述两种方式 如何选择
案例1
数据量10亿条,什么逻辑运算都不做处理,只是写到hdfs中,该选择哪种方式?
逻辑运算很少,说明不需要很多的Core,但是数据量很大,要写到hdfs中,io就成为了本案例的瓶颈,这种场景属于IO密集
那么就应该选择 1个core5个executor
这里举一个形象的例子,一个牧羊人把十万只羊赶到10公里外的羊圈,一次可以赶1万只,要赶十次,如果牧羊人可以一次赶十个一万只(十万只),那么就需要赶一次!
案例2
数据量1千条,逻辑运算超级复杂,该选择哪种方式?
逻辑运算超级复杂,如果想要加快计算,那么就需要更多的资源,cpu就成了本案例的瓶颈,这种场景属于计算密集