Spark
文章平均质量分 63
囧芝麻
简简单单的陪伴,平平淡淡的幸福
展开
-
SparkContext解密
Spark Cluster架构图 1, Spark程序在运行的时候分为Driver和Executors两部分;2, Spark的程序编写是基于SparkContext的,具体来说包含两方面:a)Spark编程的核心基础—RDD,是由SparkContext来最初创建(第一个RDD一定是由SparkContext来创建的); b)Spark程序的调度优化也是基于SparkContext; 3,原创 2017-06-05 17:32:12 · 563 阅读 · 0 评论 -
Spark 1.6RPC解析
一:Spark 1.6RPC解析1,Spark 1.6推出RpcEnv,RPCEndpoint,PRCEndpointRef为核心的新型架构下的RPC通信方式,就目前的实现而言,其底层依旧是Akka;2,Akka是基于Actor的分布式消息通信系统,而在Spark 1.6中封装了Akka,提供更高层的Rpc实现,目的是移除对Akka的依赖,为了扩展和自定义Rpc打下基础;二:RPCEnv解析1,Rp原创 2017-06-05 21:47:20 · 307 阅读 · 0 评论 -
Master HA解密
一:Master HA解析1, 生产环境下一般采用ZooKeeper做HA,且建议为3台Master,ZooKeeper会自动化管理Masters的切换;2, 采用ZooKeeper做HA的时候,ZooKeeper会负责保存整个Spark集群运行时候的元数据:Workers、Drivers、Applications、Executors;3, ZooKeeper遇到当前Active级别的Master出原创 2017-06-05 17:48:04 · 425 阅读 · 0 评论 -
Spark二次排序(Java+Scala)
1.基础排序算法sc.textFile("/data/putfile.txt").flatMap(_.split(" ")).map(word=>(word,1)).reduceByKey(_+_,1).map(pair=>(pair._2,pair._1)).sortByKey(false).map(pair=>(pair._2,pair._1)).collect2.二次排序算法(Java实现)i原创 2017-06-01 14:07:26 · 684 阅读 · 0 评论 -
TopN算法实战 排序算法RangePartitioner解密
1.基础TopN算法实战 2.分组TopN算法实战 3.排序算法RangePartitioner内幕解密知识点: *只要是改变每一行列的数据,一般都是用Map操作 *RangePartitioner主要是依赖的RDD的数据划分成不同的范围,关键的地方是不同的范围是有序的 *Google的面试题:如何在一个不确定数据规模的范围内进行排序?(range原创 2017-06-01 18:22:05 · 1339 阅读 · 0 评论 -
从Spark架构中透视Sparkjob
Master接收客户端提交作业的请求,并为客户端分配具体的计算资源。worker进程中主要负责当前节点上的机器的内存和cpu等资源的使用。 Spark是主从分布式的。Spark-shell默认情况下没有任何Job。Driver也是一种Executor进程。 Driver驱动整个集群去工作。 一个Worker可以有多个Executor。在Spark中,无论程序中有多少作业。都是复用注册时使用的资原创 2017-06-01 22:15:24 · 441 阅读 · 0 评论 -
RDD依赖详解
1.窄依赖是指每个父RDD的一个Partition最多被子RDD的一个Partition使用,例如map、filet、union等都会产生窄依赖; 2.宽依赖是指一个父RDD的Partition会被多个RDD的Partition使用,例如groupBykey 、reduceByKey等操作都会产生宽依赖;总结:如果一个父RDD的一个Partition被一个子RDDPartition所使用就是窄依赖原创 2017-06-02 00:05:50 · 728 阅读 · 0 评论 -
从物理执行的角度透视SparkJob
一:再次思考pipeline 即使采用pipeline的分布,函数f对依赖的RDD中的数据的操作也会有俩种方式: 1.f(record),f作用于集合的每一条记录,每次只作用于一条记录; 2.f(record),f一次性作用于集合的全部数据;*Spark采用的是第一种方式,原因: 1.无需等待,可以最大化的使用集群的计算资源; 2.减少OOM的发生; 3.最大化的有利于开发; 4.可以原创 2017-06-02 14:22:15 · 387 阅读 · 0 评论 -
Spark Shuffle内幕解密
一:什么是Shuffle? Shuffle中文翻译“洗牌”,需要Shuffle的关键性原因是某种具有共同特征的数据需要最终汇聚到一个计算节点上进行计算。shuffle会将中间结果存储在本地,然后下个stage需要数据再去向这个节点要数据(此时如果是不同节点会涉及到网络传输)。 二:Shuffle可能面临的问题?运行Task的时候才会产生Shuffle(Shuffle已经融化在Spark的算子中了)原创 2017-06-03 15:43:01 · 598 阅读 · 0 评论 -
Spark Sort-Based Shuffle
一 、为什么需要sort-based-shuffle?1.shuffle一般包含两阶段任务: 第一部分,产生shuffle数据的阶段(map阶段,额外补充,需要实现ShuffleManager中getWriter来写数据,数据可以利用BlockManager写到memory,disk,tachyon等,例如想非常快的shuffle,此时可以考虑把数据写在内存中,但是内存不稳定,建议采用MEMOR原创 2017-06-03 17:41:27 · 376 阅读 · 0 评论 -
Spark Runtime解密
一 再论Spark集群部署1.从spark runtime的角度来讲有五大核心对象:master,worker,executor,driver,coarseGrainedExecutorBackend;2.Spark在做集群分布式系统设计的时候:最大化功能独立、模块化封装具体独立的对象、强内聚低耦合。3.当driver中的sparkcontext初始化的时候会提交程序给master,master如果原创 2017-06-03 20:22:27 · 377 阅读 · 0 评论 -
Broadcast彻底解析
一:Broadcast彻底解析1,Broadcast就是将数据从一个节点发送到其他的节点上;例如Driver上有一张表,而Executor中的每个并行的Task(100万个Task)都要查询这张表,那我们通过Broadcast方式就只需要往每个Executor把这张表发送一次就行了,Executor中的每个Task查询这张唯一的表,而不是每次执行的时候都从Driver获得这张表!2,这就好像Serv原创 2017-06-05 21:38:14 · 2618 阅读 · 0 评论 -
CheckPoint运行原理
一、Checkpoint到底是什么?1,Spark在生产环境下经常会面临Tranformations的RDD非常多(例如一个Job中包含1万个RDD)或者具体Tranformation产生的RDD本身计算特别复杂和耗时(例如计算时长超过1个小时),此时我们必须考虑对计算结果数据的持久化;2,Spark是擅长多步骤迭代,同时擅长基于Job的复用,这个时候如果能够对曾经计算的过程产生的数据进行复用,就可原创 2017-06-05 21:30:53 · 536 阅读 · 0 评论 -
CacheManager运行原理流程
一:CacheManager分析:1,CacheManager管理的是缓存,而缓存可以是基于内存的缓存,也可以是基于磁盘的缓存;2,CacheManager需要通过BlockManager来操作数据;3.当Task运行的时候会调用RDD的compute方法进行计算,而compute方法会调用iterator方法:/** * Internal method to this RDD; will rea原创 2017-06-05 21:27:18 · 731 阅读 · 0 评论 -
Master的注册机制和状态管理详解
一 、master对其他组件注册的处理1, master接受注册的对象主要就是:driver,application,worker;需要补充说明executor不会注册给master,executor是注册给driver中的schedulerbackbend的;2, worker是再启动后主动向master注册的,所以如果在生产环境下加入新的worker到已经正在运行的Spark集群上,此时不需要重原创 2017-06-05 17:51:32 · 842 阅读 · 0 评论 -
Spark资源调度分配解密
1.分配Driver(Cluster,只有在cluster模式在master才能为dirver分配资源) 2.为Application分配资源 3.两种不同的资源分配方式 4.Spark资源调度方式一:任务调度与资源调度的区别1, 任务调度是通过DAGScheduler、TaskScheduler、SchedulerBackend等进行的作业调度;2, 资源调度是指应用程序如何获得资源;原创 2017-06-05 18:00:28 · 553 阅读 · 0 评论 -
Spark Worker原理解析
1.Spark源码剖析 2.Worker启动Driver源码 3.Worker启动Executor源码 4.Worker与Master交互 一:worker启动driver内幕和流程机制1, Cluster中的Driver失败的时候,如果supervise为true,则启动该Driver的Worker会负责重新启动该Driver2, DriverRunner启动进程是通过process原创 2017-06-05 19:35:55 · 506 阅读 · 0 评论 -
Spark EXecutor彻底解密
一:Spark Executor工作原理1, 需要特别注意是在CoarseGrainedExecutorBackend启动时向Driver注册Executor其实质是注册ExecutorBackend实例,和Executor实例之间没有直接的关系!!!2, CoarseGrainedExecutorBackend是Executor运行所在的进程名称,Executor才是正在处理Task的对象,Exe原创 2017-06-05 19:39:59 · 604 阅读 · 0 评论 -
Stage划分和Task最佳位置算法解密
1.Stage划分算法解密 Spark Application中可以因为不同的Action触发众多的Job,也就是说一个Application钟可以有很多的Job,每个Job是由一个或者多个Stage构成的,后面的Stage依赖于前面的Stage,也就是说只有前面依赖的Stage计算完毕后,后面的Stage才会运行 2.Stage划分的已经就是宽依赖,什么产生宽依赖?例如reduceByKe原创 2017-06-05 19:44:33 · 603 阅读 · 0 评论 -
TaskScheduler原理解析
一、TaskScheduler原理解密 1.DAGScheduler在提交TaskSet给底层调度器的时候是面向接口TaskScheduler的,这符合面向对象中依赖抽象而不依赖的原则,带来底层资源调度器的可插拔性,导致Spark可以运行的众多资源调度器模式上,例如Standalone、Yarn、Mesos、Local、EC2、其它自定义的资源调度器。在Standalone的模式下,我们聚焦于T原创 2017-06-05 19:50:16 · 4302 阅读 · 0 评论 -
TaskScheduler解密:Spark shell案例,TaskScheduler和SchedulerBackend、FIFO与FAIR模式调度解密、Task数据本地性资源分配
TaskSchedulerBackend与SchedulerBackendFIFO与FAIR两种调度模式Task数据本地性资源的分配一、TaskScheduler运行过程(Spark-shell角度) 1.启动Spark-shell 当我们spark-shell本身的时候命令终端返回来的主要是ClientEndpoint和SparkDeploySchedulerBakcend。这是因为此时还原创 2017-06-05 20:05:04 · 850 阅读 · 0 评论 -
Task执行原理解析
1.当Driver中的CoarseGrainedSchedulerBackend给CoarseGrainedExecutorBackend发送LaunchTask之后,CoarseGrainedExecutorBackend在收到LaunchTask消息后,首先会反序列化TaskDescription:val taskDesc = ser.deserialize[TaskDescription](d原创 2017-06-05 20:14:12 · 480 阅读 · 0 评论 -
BlockManager原理解析
一、BlockManager运行实例观察从Application启动的角度来观察BlockManager;1,在Application启动时会在SparkEnv中注册BlockManagerMaster以及MapOutputTracker,其中a) BlockManagerMaster:对整个集群的Block数据进行管理的;b) MapOutputTracker:跟踪所有mapper的输出的;2,B原创 2017-06-05 20:32:58 · 924 阅读 · 0 评论 -
BlockManager初始化和注册解密、BlockManagerMaster工作解密、BlockTransferService解密、本地数据读写解密、远程数据读写解密
1. BlockManager的注册和初始化 2. BlockManager里面的重要函数详细介绍 一:BlockManager初始化 1. BlockManager的实例对象调用initializes的时候才能正常工作。 启动initializes方法又两个作用:BlockTransferService(网络通信),ShuffleClient/** * Initializes the原创 2017-06-05 21:16:35 · 366 阅读 · 0 评论 -
Spark on Yarn解密及运行流程
一、Hadoop Yarn解析1,Yarn是Hadoop推出整个分布式(大数据)集群的资源管理器,负责资源的管理和分配,基于Yarn我们可以在同一个大数据集群上同时运行多个计算框架,例如Spark、MapReduce、Storm等; 2,Yarn基本工作流程如下图所示: 注意:Container要向NodeManager汇报资源信息,Container(程序员)要向App Mstr(项目经理原创 2017-06-03 21:50:38 · 1267 阅读 · 0 评论