spark core知识问题一
答: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 (动作
-
它会真正触发任务的运行