Spark master HA 主从切换过程不会影响集群已有的作业运⾏,为什么?
解析:
答:因为程序在运⾏之前,已经申请过资源了,driver和Executors通讯,不需要和master进⾏通讯的。
Spark on Mesos中,什么是的粗粒度分配,什么是细粒度分配,各⾃的优点和缺点是什么?
解析:
答:1)粗粒度:启动时就分配好资源, 程序启动,后续具体使⽤就使⽤分配好的资源,不需要再分配资源;好处:作业特别多时,资源复⽤率⾼,适合粗粒度;不
好:容易资源浪费,假如⼀个job有1000个task,完成了999个,还有⼀个没完成,那么使⽤粗粒度,999个资源就会闲置在那⾥,资源浪费。2)细粒度分配:⽤资源
的时候分配,⽤完了就⽴即回收资源,启动会⿇烦⼀点,启动⼀次分配⼀次,会⽐较⿇烦。
解析:
1)配置zookeeper
2)修改spark_env.sh⽂件,spark的master参数不在指定,添加如下代码到各个master节点
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zk01:2181,zk02:2181,zk03:2181 -
Dspark.deploy.zookeeper.dir=/spark"
3) 将spark_env.sh分发到各个节点
4)找到⼀个master节点,执⾏./start-all.sh,会在这⾥启动主master,其他的master备节点,启动master命令: ./sbin/start-master.sh
5)提交程序的时候指定master的时候要指定三台master,例如
./spark-shell --master spark://master01:7077,master02:7077,master03:7077
Apache Spark有哪些常⻅的稳定版本,Spark0的数字分别代表什么意思?
解析:
答:常⻅的⼤的稳定版本有Spark 1.3,Spark1.6, Spark 2.0 ,Spark1.6.0的数字含义
1)第⼀个数字:1
major version : 代表⼤版本更新,⼀般都会有⼀些 api 的变化,以及⼤的优化或是⼀些结构的改变;
2)第⼆个数字:6
minor version : 代表⼩版本更新,⼀般会新加 api,或者是对当前的 api 就⾏优化,或者是其他内容的更新,⽐如说 WEB UI 的更新等等;
3)第三个数字:0
patch version , 代表修复当前⼩版本存在的⼀些 bug,基本不会有任何 api 的改变和功能更新;记得有⼀个⼤神曾经说过,如果要切换 spark 版本的话,最好选
patch version ⾮ 0 的版本,因为⼀般类似于 1.2.0, … 1.6.0 这样的版本是属于⼤更新的,有可能会有⼀些隐藏的 bug 或是不稳定性存在,所以最好选择 1.2.1, …
解析:
通过版本号的解释说明,可以很容易了解到,spark2.1.1的发布时是针对⼤版本2.1做的⼀些bug修改,不会新增功能,也不会新增API,会⽐2.1.0版本更加稳定。