目录 Spark Spark 中 job, stage, Task 分别是什么 什么是 RDD reduceByKey 和 groupByKey 的区别 RDD 的创建方式 RDD 的依赖关系 为什么要划分依赖关系 RDD 的缓存持久化机制 Spark 调优 修改序列化机制压缩数据量 根据作业环境, 提交任务时调整 spark-submit.sh 参数 提高并行度 RDD 的重用和持久化 适当广播多次使用的变量 避免产生 Shuffle 可以减少网络 IO 和分区间传输消耗 使用 map-side 预先聚合 Shuffle 使用高性能算子 SparkStreaming 在消费 Kafka 时下线, 如何保证重启后继续消费 Spark 累加器 Spark 的工作机制 Spark 模块都有哪些 DStream 和 DStreamGraph 的区别 Spark Spark 是基于内存计算, MapReduce 基于磁盘运算, 所以速度更快. Spark 拥有高效的调度算法, 基于 DAG 形成一系列有向无环图. Spark 通过 RDD 算子来运算, 具有转换与动作两种操作, 可以把运算结果缓存在内存, 再计算出来. Spark 还拥有容错机制 Linage 算子, 可以把失败的任务重新执行. Spark 中 job, stage, Task 分别是什么 job 是提交给 Spark 的任务, 会被拆分为多组 Task, 每一次数据的 Shuffle 都会产生一个 stage; 每次 action 都会产生一个 job. stage 是 job 执行需要的阶段. 划分 stage 使每一个 stage 只有窄依赖, 可以实现流计算, 同时每一个 Task 对应一个分区, 增加了 Task 的并行运行量. Task 是 stage 的任务执行单元, 通常和 RDD 的 Partition 数量相同, 只是处理一个 Partition 上的数据; 每个 Task 都是一个 JVM 实例, JVM 的开启与销毁会降低系统运行效率; Task 是任务的最小单位, 最终运行在 Executor 中. 什么是 RDD RDD 就是弹性分布式数据集 Resilient Distributed Datasets, Spark 的数据抽象概念, 是一种不可变分布式对象集合; 每个 RDD
评论
发表评论