![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark
文章平均质量分 54
kongshuchen
这个作者很懒,什么都没留下…
展开
-
spark中transformation操作的各种算子(java版)
package cn.spark.study.core;import java.util.Arrays; import java.util.Iterator; import java.util.List;import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apa原创 2016-05-06 19:44:23 · 5263 阅读 · 0 评论 -
Spark的worker运行分析
Master在启动的时候,会调用LaunchDriver和LaunchExecutor方法,要求Worker启动Driver和Executor。 在Worker内部,接收到消息后,会调用DriverRunner,它的内部启动了一个线程,去创建Driver的工作目录,创建好工作目录后,封装启动Driver的命令,用ProcessBuilder启动Driver。Worker启动Driver的一个基本原原创 2016-07-26 09:12:05 · 1572 阅读 · 0 评论 -
Spark的Master分析3(Master状态改变机制分析)
在Master.scala源码下进行模式匹配,匹配到DriverStateChanged,如果driver的状态是错误,完成,被杀掉,失败,那么就移除driver。在removeDriver方法中,用scala的find高阶函数去找到driverId对应的driver,如果找到了,Some样例类(Option),将driver从内存缓存中清除。向completeDrivers中加入driver;使用原创 2016-07-25 10:49:40 · 831 阅读 · 0 评论 -
Spark的Master分析2(Master注册机制原理分析)
1.Worker的注册过程 Spark的Worker在启动之后,就会主动向Master进行注册。Master会对Worker进行过滤,将状态为DEAD的Worker过滤掉;对于状态为UNKNOWN的Worker,清理掉旧的Worker信息,替换为新的Worker信息。然后Master会把完成过滤条件的Worker加入内存缓存(HashMap)中,用持久化引擎将Worker信息进行持久化(文件系统或原创 2016-07-25 00:10:55 · 1024 阅读 · 0 评论 -
Spark的Master分析1(主备切换机制原理分析)
Master实际上可以配置两个,那么Spark原生的standalone模式是支持Master主备切换的。也就是说,当Active Master节点挂掉时,可以将StandBy master节点切换为Active Master。 Spark Master主备切换可以基于两种机制,一种是基于文件系统的,一种是基于Zookeeper的。基于文件系统的主备切换机制,需要在Active Master挂掉之原创 2016-07-24 23:19:29 · 2400 阅读 · 0 评论 -
SparkContext启动分析
SparkContext是所有spark程序的引擎,它的配置参数由SparkConf负责。SparkConf内部主要是通过ConcurrentHashMap来维护Spark配置属性。 SparkContext的初始化步骤如下: 1.创建Saprk执行环境SparkEnv; 2.创建RDD清理器metadataCleaner; 3.创建并初始化SparkUI; 4.Hadoop相关配置及Ex原创 2016-07-24 18:46:20 · 1161 阅读 · 0 评论 -
Spark-submit模式yarn-cluster和yarn-client的区别
1.yarn-client用于测试,因为ta的Driver运行在本地客户端,会与yarn集群产生较大的网络通信,从而导致网卡流量激增;它的好处在于直接执行时,在本地可以查看到所有的log,方便调试; 2.yarn-cluster用于生产环境,因为Driver运行在NodeManager,相当于一个ApplicationMaster,没有网卡流量激增的问题;缺点在于调试不方便,本地用spark-su原创 2016-07-24 15:48:48 · 4805 阅读 · 0 评论 -
Spark中的各种action算子操作(scala版)
这里直接贴代码了,action的介绍都在java那里。 package cn.spark.study.coreimport org.apache.spark.SparkConf import org.apache.spark.SparkContextobject ActionOperation { def main(args: Array[String]): Unit = { /原创 2016-05-08 09:15:28 · 1768 阅读 · 0 评论 -
Spark中的各种action算子操作(java版)
在我看来,Spark编程中的action算子的作用就像一个触发器,用来触发之前的transformation算子。transformation操作具有懒加载的特性,你定义完操作之后并不会立即加载,只有当某个action的算子执行之后,前面所有的transformation算子才会全部执行。常用的action算子如下代码所列:(java版) package cn.spark.study.core;i原创 2016-05-08 09:12:06 · 6302 阅读 · 0 评论 -
Spark中的二次排序
首先要先定义一个自定义的类型,实现scala提供的Ordered接口并实现其方法,方法就是排序的逻辑。这里我对两列数字进行排序,代码如下: package cn.spark.study.coreclass SecondarySortKey(val first : Int, val second : Int) extends Ordered[SecondarySortKey] with Serial原创 2016-05-08 09:07:13 · 1406 阅读 · 0 评论 -
spark中的Broadcast variables和Accumulator
举个例子: val factor = 3 rdd.map( num => num*factor)以上两行代码显示了rdd的一个map操作,其中factor是一个外部变量。默认情况下,算子的函数内,如果使用到了外部变量,那么会将这个变量拷贝到执行这个函数的每一个task中。如果该变量非常大的话,那么网络传输耗费的资源会特别大,而且在每个节点上占用的内存空间也特别大。 Spark提供的Broadc原创 2016-05-06 21:57:46 · 3360 阅读 · 0 评论 -
spark中各种transformation算子操作(scala版)
package cn.spark.study.coreimport org.apache.spark.SparkConf import org.apache.spark.SparkContextobject TransformationOperation { def main(args: Array[String]): Unit = { //mapTest //filte原创 2016-05-06 19:48:56 · 3427 阅读 · 0 评论 -
Spark的job触发流程原理与stage划分算法分析
Spark的application中有多个action操作,每个action操作都会触发RDD的runJob操作,每个job以action操作为界限,而RDD的runJob则在SparkContext的runJob中调用,SparkContext的runJob底层会调用dagScheduler的runJob方法。 在DAGScheduler中,会将每个job划分成多个stage,每个stage会创原创 2016-07-26 15:28:49 · 4073 阅读 · 0 评论