什么是Spark
Spark 是一个基于内存, 通用, 可扩展的集群计算引擎 并且 Spark 目前已经成为 Apache 最活跃的开源项目, 有超过 1000 个活跃的贡献者.
Spark并行度
Spark作业中,各个stage的task的数量,代表Spark作业在各个阶段的stage的并行度
分为资源并行度(物理并行度)和数据并行度(逻辑并行度)
在Spark Application运行时,并行度可以从两个方面理解:
1) 资源并行度:由节点数(executor)和cpu数(core)决定的
2) 数据并行度:task的数据,partition大小
task又分为map时的task和reduce时的task;
task的数目和很多因素有关,资源的总core数,spark.default.parallelism参数
spark.sql.shuffle.partitions参数,读取数据源的类型,shuffle方法第二个参数,repartition的数目等等。
Spark有几种部署方式?请分别简要论述
1 Local运行在一台集群,通常是测试环境
2 standlone 构建一个基于Master+Slaves的资源调度集群,Spark任务提交给Master运行。是Spark自身的调度系统。
3 Yarn Spark客户端直接连接Yarn,不需要额外构建Spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点
4 Mesos 国内较少用