spark core知识问题一

1.描述spark的安装模式

答:1) 本地模式

       2) standalone 模式

       3) spark on yarn 模式

       4) mesos模式

2.spark有哪些组件,每个组件的作用是什么

答:master:管理集群和节点,不参与计算。

       worker:计算节点,进程本身不参与计算,向master汇报。

       Driver:运行程序的main方法,创建spark context对象。

       spark context:控制整个application的生命周期,包括dagsheduler和task scheduler等组件。

       client:用户提交程序的入口。

3.Spark程序执行,有时候默认为什么会产生很多task,怎么修改默认task执行个数?

答:输入数据有很多task,尤其是有很多小文件的时候,有多少个输入block就有多少个task

       Spark中有partition的概念。每个partition对应一个task,task越多,在处理大规模数据的时候,就会越有效率。不过task并不是越多越好,如果数据量不大,则没必要启动太多task;

      参数可以通过spark_home/conf/spark-default.conf配置文件设置:

​            spark.sql.shuffle.partitions 50     //针对spark sql的task数量

            spark.default.parallelism 10        //非spark sql程序设置生效

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

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

        在Master切换的过程中,所有的已经在运行的程序皆正常运行!因为Spark Application在运行前就已经通过Cluster Manager获得了计算资源,所以在运行时Job本身的调度和处理和Master是没有任何关系的!

        在Master的切换过程中唯一的影响是不能提交新的Job:一方面不能够提交新的应用程序给集群,因为只有Active Master才能接受新的程序的提交请求;另外一方面,已经运行的程序中也不能够因为    Action操作触发新的Job的提交请求

5.RDD的5大特性

答:1).可分区的

        2).分区计算compute

        3).优先位置(数据本地化)

        4).依赖关系

        5).分区函数partitioner

6.RDD宽依赖和窄依赖?

答:窄依赖:每一个parent RDD的Partition最多被子RDD的一个Partition使用 (一父一子)

       宽依赖:多个子RDD的Partition会依赖同一个parent RDD的Partition (一父多子)

7.RDD有几种操作算子类型?

transformation(转换)

  • 根据已经存在的rdd转换生成一个新的rdd, 它是延迟加载,它不会立即执行

action (动作

  • 它会真正触发任务的运行

 

posted @ 2019-10-04 21:25  小码农成长记  阅读(184)  评论(0编辑  收藏  举报