小言_互联网的博客

大数据面试题(九)----Spark面试题

490人阅读  评论(0)

“无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。”。

大数据面试宝典目录,请点击

目录

1. Spark master 使用zookeeper 进行HA 的,有哪些元数据保存在Zookeeper?
2. Spark master HA 主从切换过程不会影响集群已有的作业运行,为什么?
3. Spark on Mesos 中,什么是的粗粒度分配,什么是细粒度分配, 各自的优点和缺点是什么?
4. 如何配置spark master 的HA?
5. Apache Spark 有哪些常见的稳定版本,Spark1.6.0 的数字分别代表什么意思?
6. driver 的功能是什么?


1. Spark master 使用zookeeper 进行HA 的,有哪些元数据保存在Zookeeper?

       答:spark 通过这个参数spark.deploy.zookeeper.dir 指定master 元数据在zookeeper 中保存的位置,包括Worker,Driver 和Application 以及Executors。standby 节点要从zk 中,获得元数据信息,恢复集群运行状态,才能对外继续提供服务,作业提交资源申请等,在恢复前是不能接受请求的。另外,Master 切换需要注意2 点:
       1) 在Master 切换的过程中,所有的已经在运行的程序皆正常运行!因为Spark Application 在运行前就已经通过Cluster Manager 获得了计算资源,所以在运行时Job 本身的调度和处理和Master 是没有任何关系的!
       2) 在Master 的切换过程中唯一的影响是不能提交新的Job:一方面不能够提交新的应用程序给集群,因为只有Active Master 才能接受新的程序的提交请求;另外一方面,已经运行的程序中也不能够因为Action 操作触发新的Job 的提交请求;

2. Spark master HA 主从切换过程不会影响集群已有的作业运行,为什么?

       答:因为程序在运行之前,已经申请过资源了,driver 和Executors 通讯,不需要和master进行通讯的。

3. Spark on Mesos 中,什么是的粗粒度分配,什么是细粒度分配, 各自的优点和缺点是什么?

       1) 粗粒度:启动时就分配好资源, 程序启动,后续具体使用就使用分配好的资源,不
需要再分配资源;好处:作业特别多时,资源复用率高,适合粗粒度;不好:容易资源浪费, 假如一个job 有1000 个task,完成了999 个,还有一个没完成,那么使用粗粒度,999 个资源就会闲置在那里,资源浪费。
       2) 细粒度分配:用资源的时候分配,用完了就立即回收资源,启动会麻烦一点,启动一次分配一次,会比较麻烦。

4. 如何配置spark master 的HA?
  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
5. Apache Spark 有哪些常见的稳定版本,Spark1.6.0 的数字分别代表什么意思?

答:常见的大的稳定版本有Spark 1.3,Spark1.6, Spark 2.0 ,Spark1.6.0 的数字含义

  1. 第一个数字:1
major version : 代表大版本更新,一般都会有一些api 的变化,以及大的优化或是一些结构的改变;
  1. 第二个数字:6
minor version : 代表小版本更新,一般会新加api,或者是对当前的api 就行优化,或者是其他内容
的更新,比如说WEB UI 的更新等等;
  1. 第三个数字:0
patch version , 代表修复当前小版本存在的一些bug,基本不会有任何api 的改变和功能更新;记
得有一个大神曾经说过,如果要切换spark 版本的话,最好选patch version 非0 的版本,因为一般
类似于1.2.0,1.6.0 这样的版本是属于大更新的,有可能会有一些隐藏的bug 或是不稳定性存在,所以最好选择1.2.1,1.6.1 这样的版本。
通过版本号的解释说明,可以很容易了解到,spark2.1.1 的发布时是针对大版本2.1 做的一些bug 修改,不会新增功能,也不会新增API,会比2.1.0 版本更加稳定。
6. driver 的功能是什么?
  1. 一个Spark 作业运行时包括一个Driver 进程,也是作业的主进程,具有main 函数,并且有SparkContext 的实例,是程序的入口点;
  2. 功能:负责向集群申请资源,向master 注册信息,负责了作业的调度,负责作业的解析、生成Stage 并调度Task 到Executor 上。包括DAGScheduler,TaskScheduler。

转载:https://blog.csdn.net/silentwolfyh/article/details/103865243
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场