spark入门到精通
文章平均质量分 58
分享与记录常见面试题
Adobee Chen
这个作者很懒,什么都没留下…
展开
-
Spark 数据倾斜解决方案
现象绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时。这种情况很常见。 原本能够正常执行的Spark作业,某天突然报出OOM(内存溢出)异常,观察异常栈,是我们写的业务代码造成的。这种情况比较少见。数据倾斜原因数据倾斜的原理很简单:在进行shuffle的时候,必须将各个节点上相同的key拉取到某个节点上的一个task来进行处理,比如按照key进行聚合或join等操作。此时如原创 2021-09-23 19:51:44 · 428 阅读 · 0 评论 -
Spark 统一内存管理模型详解
前提从spark3.0开始没有静态管理了,只有个统一内存管理onHeap:java虚拟机管理的内存是堆内内存offHeap:java虚拟机管理之外的内存,系统内存是堆外内存堆内内存(on-heap memory)Execution 内存:主要用于存放 Shuffle、Join、Sort、Aggregation 等计算过程中的临时数据 Storage 内存:主要用于存储 spark 的 cache 数据,例如RDD的缓存、unroll数据; 用户内存(User Memory):主原创 2021-09-23 15:35:02 · 323 阅读 · 0 评论 -
Spark累加器与广播变量
目录累加器实现原理例子:问题:用累加器实现一个wordcount广播变量使用广播变量好处例子:累加器分布式共享只写变量实现原理累加器用来把Excutor端变量信息聚合到Driver端。在Driver程序中定义的变量,在Executor端的每个Task都会得到这个变量的一份新的副本,每个task更新这些副本的值后,传回Driver端进行merge例子:object RDD_ACC { def main(args: Array[St..原创 2021-09-23 14:27:56 · 237 阅读 · 0 评论 -
Spark Checkpoint&Persist&Cache持久化区别
1.cache: 将数据临时存储在内存中进行数据的重用2.persist:将数据临时存储在磁盘文件进行数据重用,设计磁盘IO,性能较低,但是数据安全,任务执行完毕,临时保存的数据文件就会丢失3.checkpoint:将数据长久的保存在磁盘文件,为了保证数据安全,会独立执行作业。 可以配合chache使用。checkpoint会切断血缘关系,重新建立新的血缘 mapRDD.cache() mapRDD.checkpoint()...原创 2021-09-23 10:12:31 · 250 阅读 · 0 评论 -
Spark 从入门到精通【目录】
spark 3.x搭建部署spark提交参数spark rddspark partitionspark sort shuffle总结spark on Yarn 提交流程源码解析spark job提交源码解析原创 2021-09-23 07:43:29 · 180 阅读 · 0 评论 -
Spark partition详解
一:spark读取hdfs分片机制spark sc.textFile底层调用的是hadoop的代码,所以分片机制也是hadoop的机制goalSize=totalSize是文件的总字节数/numSplits是有多少个分区,没有配置的话默认minPartitions=2。就是算每个分区有多少数据long goalSize = totalSize / (numSplits == 0 ? 1 : numSplits);long minSize = Math.max(job.getLong(..原创 2021-09-17 17:37:23 · 445 阅读 · 0 评论 -
Spark Sort Shuffle 总结
前提知识:宽依赖:上游RDD中的一个分区中的数据,被下游RDD的多个分区所共享,称为一对多窄依赖:上游RDD中的一个分区中的数据,被下游RDD的一个分区所共享,称为一对一Shuffle图解SortShuffleManagerSort Shuffle流程图Shuffle Writetask阶段划分的时候,会创建ShuffleMapTask和ResultTask,在ShuffleMapTask进行write操作ResultTask进行read的操作,在write时.原创 2021-09-16 21:59:09 · 417 阅读 · 0 评论 -
Spark job提交源码解析
Spark服务之间进程之间调用使用RPC,网络通信使用nettyNetty: 异步非阻塞式IO(AIO),其中BIO:阻塞式IO,NIO非阻塞式IO原创 2021-09-14 17:46:46 · 158 阅读 · 0 评论 -
Spark on Yarn 提交流程源码解析
源码版本:spark-3.1.2spark提交命令bin/spark-submit --class org.apache.spark.examples.SparkPi--master yarn./examples/jars/spark-examples_2.12-3.1.2.jar 10进入到spark-submit 可以程序入口类SparkSubmitif [ -z "${SPARK_HOME}" ]; then source "$(dirname "$0")"/..原创 2021-09-11 15:11:33 · 844 阅读 · 0 评论 -
Spark 提交参数
目录提交参数说明standalone模式Yarn模式提交参数说明参数 解释 可选值 --class spark程序中主函数类 --master spark程序运行的模式 模式: local[*]、spark://host:port、 yarn、mesos://host:port、k8s://https://host:port --deploy-mode driver发送端是client端还是在其中一个work原创 2021-08-26 11:11:49 · 185 阅读 · 0 评论 -
Spark3.x HA 集群部署
先记录下,明天更新sbin/start-all.shsbin/start-worker.sh spark://henghe-052:7077sbin/start-worker.sh spark://henghe-052:7077 bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://henghe-052:7077 ./examples/jars/spark-examples_2.12-3..原创 2021-08-25 18:04:43 · 443 阅读 · 0 评论 -
Spark总结之RDD
一:RDD概念什么是RDDRDD叫做弹性分布式数据集,是spark中最基本的数据抽象。RDD是一个不可变的分布式对象集合,每个RDD都被分为多个分区,这些分区运行在集群的不同节点上RDD属性(1) 一组分片,即数据集的基本组成单位。创建方式:创建RDD时指定分片个数,如果没有指定,就会采用默认值。默认值就是程序所分配到的cpu core的数目(2) RDD之间的依赖关系。RDD每次转换都会生成一个新的RDD,形成DAG图,当部分分区数据丢失时,spark可以通过这个依赖关系原创 2021-08-25 15:18:07 · 491 阅读 · 0 评论