![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
大数据
心行如一
心行如一,无远弗届
展开
-
spark学习-Master资源调度分配算法
Master资源调度分配算法:1.Application的调度算法有两种,一种是spreadOutApps,另一种是非spreadOutApps。2.spreadOutApps,会将每个Application要启动的executor都平均分配到各个worker上去。(比如有10个worker,20个cpu core要分配,那么实际会循环两遍worker,每个worker分配一个core,最后每个w...原创 2018-03-07 12:02:35 · 794 阅读 · 0 评论 -
spark学习-CheckPoint原理
CheckPoint原理:1.对于一个复杂的RDD chain,如果中间某些关键的,在后面会多次使用的RDD因节点故障导致持久化数据丢失,可以针对该RDD启动checkpoint机制,实现容错和高可用。2.checkpoint,先调用SparkContext的setCheckpointDir()方法,设置一个容错的文件系统目录。3.对RDD调用checkpoint()方法后,在RDD所处的job运...原创 2018-03-13 17:52:36 · 646 阅读 · 0 评论 -
spark学习-CacheManager原理
CacheManager原理:1.RDD调用Iterator()方法,计算当前task要计算出来的partition。2.如果RDD之前持久化过,StorageLevel就不为NONE,就会用CacheManager读取持久化过的数据。3.如果RDD没有持久化过,就会从RDD的父RDD,来执行自定义的算子计算新的RDD的partition数据。4.BlockManager尝试从本地读取数据(get...原创 2018-03-13 17:28:17 · 322 阅读 · 0 评论 -
spark学习-BlockManager原理
BlockManager原理:1.Driver上有BlockManagerMaster,负责对各个节点上的BlockManager内部管理的元数据进行维护。2.每个节点的BlockManager有几个关键组件,DiskStore负责对磁盘上的数据进行读写,MemoryStore负责对内存中的数据进行读写,ConnectionManager负责建立BlockManager到远程其他节点的BlockM...原创 2018-03-13 17:03:31 · 1041 阅读 · 0 评论 -
spark学习-Master主备切换机制
Master主备切换机制:1.主备切换基于两种机制,一种基于文件系统,一种是基于zookeeper。2.基于文件系统主备切换需要在ActiveMaster挂掉后,由我们手动切换到Standby Master上。基于zookeeper的主备切换机制,可以实现自动切换Master。3.使用持久化引擎读取持久化的storeApps、storeDrivers、storedWorkers。4.读取的持久化内...原创 2018-03-05 17:51:07 · 703 阅读 · 0 评论 -
spark学习-Application、Driver和Worker向Master注册工作流程
Application向Master注册工作流程:1.Driver启动后,执行Application注册,SparkContext初始化时,SparkDeploySchedulerBackend会通过AppClient内部线程ClientActor发送RegisterApplication到Master进行注册。2.将Application信息放入内存缓存(HashMap)3.将Applicati...原创 2018-03-05 17:23:48 · 1921 阅读 · 0 评论 -
Spark学习-Yarn的两种提交模式
Yarn-cluster提交模式:用于生产环境,driver运行在nodemanager,没有单机网卡流量激增的问题。工作流程如下:1.spark-submit客户端发送请求到ResourceManager,请求启动Application。2.ResourceManager分配一批container在nodemanager上,启动ApplicationMaster(相当于Driver)。3.App...原创 2018-03-05 14:45:18 · 802 阅读 · 0 评论 -
Spark学习-窄依赖和宽依赖的概念
窄依赖:Narrow Dependency,父RDD和子RDD的partition之间的对应关系是一对一的。RDD的每个partition,仅仅依赖父RDD中的一个partition。宽依赖:Shuffle Dependency,每一个父RDD的partition中的数据,都可能会传输一部分到下一个RDD的每个partition中。他们之间发生的操作就是shuffle。二者的特性主要基于以下两点:...原创 2018-03-05 12:14:23 · 491 阅读 · 0 评论 -
Spark学习-Standlone提交模式
Spark内核架构包括:Application、spark-submit、Driver、SparkContext、Master、Worker、Executor、Job、DAGScheduler、TaskScheduler、ShuffleMapTaskand ResultTask等部分。Standalone client提交模式:1.Standalone会通过反射的方式,创建和构造一个DriverA...原创 2018-03-05 12:04:56 · 528 阅读 · 0 评论 -
spark学习-checkpoint和持久化的区别
checkpoint和持久化的区别:1.持久化只是将数据保存在BlockManager中,而RDD的lineage是不变的。但是checkpoint执行完后,RDD已经没有之前所谓的依赖RDD了,而只有一个强行为其设置的checkpointRDD,RDD的lineage改变了。2.持久化的数据丢失可能性更大,磁盘、内存都可能会存在数据丢失的情况。但是checkpoint的数据通常是存储在如HDFS...原创 2018-03-15 11:14:08 · 2415 阅读 · 0 评论 -
spark学习-spark shuffle操作的两个特点
spark shuffle操作的两个特点:1.spark中bucket缓存默认是100KB,写入数据达到刷新到磁盘的阈值后,就会将数据一点一点刷新到磁盘。如果内存缓存过小,会发生过多的磁盘IO操作,需要根据实际的业务情况进行优化。2.MapReduce必须将所有的数据都写入本地磁盘文件后,才能启动reduce操作,来拉取数据,因为MapReduce要实现默认的根据key的排序,需要写完所有的数据才...原创 2018-03-07 16:59:47 · 702 阅读 · 0 评论 -
spark学习-Task原理
Task原理:1.Executor接收到了LaunchTask请求,将task封装成TaskRunner运行。2.反序列化task,并通过网络拉取需要的文件、jar包等,然后运行task的run()方法。3.调用RDD的iterator()方法,会针对task所对应的RDD的partition,执行我们自定义的function函数(算子)。4.ShuffleMapTask阶段,计算完partiti...原创 2018-03-07 16:35:40 · 250 阅读 · 0 评论 -
spark学习-Task调度算法
Task调度算法:对每个Task,依据本地化算法从最好的一种本地化级别开始遍历,直到task被分配到executor执行。1.PROCESS_LOCAL,进程本地化,RDD的partition和task进入一个executor内,执行速度快。2.NODE_LOCAL,节点本地化,RDD的partition和task不在一个executor中,不在一个进程内,在一个worker上。3.NO_PREF...原创 2018-03-07 16:16:41 · 548 阅读 · 0 评论 -
spark学习-DAGScheduler的stage划分算法
DAGScheduler的stage划分算法:1.从触发action操作的那个RDD开始往前倒推,为最后一个RDD创建一个stage。2.往前倒推时,如果发现对某个RDD是宽依赖,就将宽依赖的RDD创建一个stage,该RDD就是新stage的最后一个RDD。3.依次类推,使用递归,最后优先提交父stage。(注:ReduceByKey为例,shuffle操作对应3个RDD,MapPartitio...原创 2018-03-07 12:31:59 · 289 阅读 · 0 评论 -
spark学习-worker工作原理
worker工作原理:1.Master要求Worker启动Driver和Executor。(LaunchDriver和LaunchExecutor)2.worker内部会启动一个线程DriverRunner,它会去负责启动Driver进程并进行管理。3.worker内部会启动一个线程ExecutorRunner,它会去负责启动Executor进程并进行管理。4.Executor找到对应Driver...原创 2018-03-07 12:19:03 · 438 阅读 · 0 评论 -
spark学习-Spark性能调优手段
Spark性能调优手段:判断内存消耗:设置RDD并行度,将RDD cache到内存,通过BlockManagerMasterActor添加RDD到memory中的日志查看每个partition占了多少内存,最后乘以partition数量,即是RDD内存占用量。1.Shuffle调优(核心)a.consolidation机制,使shuffleMapTask端写磁盘的文件数量减少,resultTask...原创 2018-04-23 18:00:21 · 882 阅读 · 0 评论