Spark
焦焦^_^
这个作者很懒,什么都没留下…
展开
-
Spark:RDD操作和持久化
创建RDD进行Spark核心编程时,首先要做的第一件事,就是创建一个初始的RDD。该RDD中,通常就代表和包含了Spark应用程序的输入源数据。然后在创建了初始的RDD之后,才可以通过Spark Core提供的transformation算子,对该RDD进行转换,来获取其他的RDDSpark Core提供了三种创建RDD的方式使用程序中的集合创建RDD使用本地文件创建RDD使用HDFS...原创 2018-12-12 17:31:02 · 819 阅读 · 0 评论 -
Spark:BlockManager原理剖析与源码分析
BlockManager是Spark的分布式存储系统,与我们平常说的分布式存储系统是有区别的,区别就是这个分布式存储系统只会管理Block块数据,它运行在所有节点上。BlockManager的结构是Maser-Slave架构,Master就是Driver上的BlockManagerMaster,Slave就是每个Executor上的BlockManager。BlockManagerMaster负责...原创 2019-01-10 15:39:48 · 3293 阅读 · 1 评论 -
Spark:Checkpoint原理剖析与源码分析
一、概述Checkpoint是什么?Spark在生产环境下经常会面临Tranformations的RDD非常多(例如一个Job中包含1万个RDD)或者具体Tranformation产生的RDD本身计算特别复杂和耗时(例如计算时常超过1~5个小时),此时我们必须考虑对计算结果数据的持久化。如果采用persist把数据放在内存中的话,虽然是最快速的但是也是最不可靠的;如果放在磁盘上也不是完全可靠的...原创 2019-01-11 17:15:23 · 944 阅读 · 0 评论 -
Spark:内存分析与优化
概述执行 Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务的调度,后者负责在工作节点上执行具体的计算任务,并将结果返回给 Driver,同时为需要持久化的 RDD 提供存储功能。由于 ...原创 2019-01-18 15:54:12 · 1079 阅读 · 0 评论 -
Spark:Shuffle原理剖析与源码分析
spark中的Shuffle是非常重要的,shuffle不管在Hadoop中还是Spark中都是重重之重,特别是在Spark shuffle优化的时间。更是非常的重要。普通shuffle操作的原理剖析(spark 2.x弃用)每一个Job提交后都会生成一个ResultStage和若干个ShuffleMapStage,其中ResultStage表示生成作业的最终结果所在的Stage;Result...原创 2019-01-08 10:12:40 · 1451 阅读 · 0 评论 -
Spark SQL:UDF和UDAF
UDF用户定义函数(User-defined functions, UDFs)是大多数 SQL 环境的关键特性,用于扩展系统的内置功能。 UDF允许开发人员通过抽象其低级语言实现来在更高级语言(如SQL)中启用新功能。 Apache Spark 也不例外,并且提供了用于将 UDF 与 Spark SQL工作流集成的各种选项。object UDF { def main(args: Arra...原创 2019-01-23 18:03:26 · 555 阅读 · 0 评论 -
Spark:性能优化
诊断内存的消耗判断spark程序消耗了多少内存首先,自己设置RDD的并行度,有两种方式:要不然,在parallelize()、textFile()等方法中,传入第二个参数,设置RDD的task / partition的数量;要不然,用SparkConf.set()方法,设置一个参数,spark.default.parallelism,可以统一设置这个application所有RDD的part...原创 2019-01-21 10:49:51 · 333 阅读 · 0 评论 -
Spark:shuffle数据倾斜
数据倾斜Shuffle的时候,将各个节点上相同的key拉取到某个节点的一个task进行处理,比如按照key进行聚合或join等操作,如果某个key对应的数据量特别大的话,就会发生数据倾斜现象。数据倾斜就成为了整个task运行时间的短板。因此出现数据倾斜的时候,Spark作业看起来会运行得非常缓慢,甚至可能因为某个task处理的数据量过大导致内存溢出。数据倾斜的解决方案方案一:使用Hive...原创 2019-01-21 15:01:58 · 1085 阅读 · 0 评论 -
Spark Streaming:输入DStream之Kafka数据源
基于Receiver的方式这种方式使用Receiver来获取数据。Receiver是使用Kafka的高层次Consumer API来实现的。receiver从Kafka中获取的数据都是存储在Spark Executor的内存中的,然后Spark Streaming启动的job会去处理那些数据在默认的配置下,这种方式可能会因为底层的失败而丢失数据。如果要启用高可靠机制,让数据零丢失,就必须启用S...原创 2019-02-15 16:05:04 · 403 阅读 · 0 评论 -
Spark SQL:运行原理
Spark SQL的运行过程SQL在Spark执行要经历以下几步:用户提交SQL文本解析器将SQL文本解析成逻辑计划分析器结合Catalog对逻辑计划做进一步分析,验证表是否存在,操作是否支持等优化器对分析器分析的逻辑计划做进一步优化,如将过滤逻辑下推到子查询,查询改写,子查询共用等Planner再将优化后的逻辑计划根据预先设定的映射逻辑转换为物理执行计划物理执行计划做RDD计算...原创 2019-02-13 16:36:44 · 1879 阅读 · 0 评论 -
Spark Streaming:DStream的transformationy及output操作
updateStateByKeyupdateStateByKey操作允许您在使用新的信息持续更新时保持任意状态public class UpdateStateByKeyWordCount { public static void main(String[] args) throws InterruptedException { SparkConf conf = new SparkCo...原创 2019-02-19 11:39:50 · 324 阅读 · 0 评论 -
Spark Streaming:工作原理
Spark Streaming简介Spark Streaming是Spark Core API的一种扩展,它可以用于进行大规模、高吞吐量、容错的实时数据流的处理。它支持从很多种数据源中读取数据,比如Kafka、Flume、Twitter、ZeroMQ、Kinesis或者是TCP Socket。并且能够使用类似高阶函数的复杂算法来进行数据处理,比如map、reduce、join和window。处理...原创 2019-02-26 11:26:35 · 2344 阅读 · 0 评论 -
Spark:Task原理剖析与源码分析
在Spark中,一个应用程序要想被执行,肯定要经过以下的步骤:从这个路线得知,最终一个job是依赖于分布在集群不同节点中的task,通过并行或者并发的运行来完成真正的工作。由此可见,一个个的分布式的task才是Spark的真正执行者。下面先来张task运行框架整体的对Spark的task运行有个大概的了解。task运行之前的工作是Worker启动Executor,接着Executor准备好...原创 2018-12-29 17:19:30 · 558 阅读 · 1 评论 -
Spark:Worker原理剖析与源码分析
解释:Master要求Worker启动Driver和ExecutorWorker启动Driver的一个基本的原理,Worker会启动一个线程DriverRunner,然后DriverRunner会去负责启动Driver进程,然后在之后对Driver进程进行管理Worker启动Executor的一个基本的原理,Worker会启动一个线程ExecutorRunner,然后ExecutorRu...原创 2018-12-24 17:50:18 · 272 阅读 · 0 评论 -
Spark:广播变量和累加器
Spark为此提供了两种共享变量,一种是Broadcast Variable(广播变量),另一种是Accumulator(累加变量)。Broadcast Variable会将使用到的变量,仅仅为每个节点拷贝一份,更大的用处是优化性能,减少网络传输以及内存消耗。Accumulator则可以让多个task共同操作一份变量,主要可以进行累加操作。Broadcast VariableSpark提供的...原创 2018-12-13 16:57:54 · 237 阅读 · 0 评论 -
Spark:基本工作原理与RDD
Spark的基本工作原理我们从宏观讲解Spark的基本工作原理,帮助你全面了解布局1、客户端:客户端也就是专业们常说的Client端,这里的是表示我们在本地编写Spark程序,然后必须找一个能够连接Spark集群,并提交程序进行运行的机器2、读取数据:在准备运行Spark程序的同时,是不是也要有数据来源进行处理的呢,这里我们介绍几种常见的读取数据来源,是Hadoop集群中的HDFS、H...原创 2018-12-06 17:27:12 · 204 阅读 · 0 评论 -
Spark:SparkContext原理剖析与源码分析
在Spark中,SparkContext是Spark所有功能的一个入口,你无论是用java、scala,甚至是python编写都必须要有一个SparkContext,它的主要作用,包括初始化Spark应用程序所需的一些核心组件,包括 调度器(DAGSchedule、TaskScheduler),还会去到Spark Master节点上进行注册,等等首先通过SparkContext方法,进行Ta...原创 2018-12-19 15:37:48 · 454 阅读 · 0 评论 -
Spark:Master原理剖析与源码分析
Master主备切换Spark原生的standalone模式是支持主备切换的,也就是说master可以配置两个,当Action Master因故障挂了的时候,系统会自动将Standby Master 切换成 Active Master。Master的准备切换分为两种:一种是基于文件系统的,spark提供目录保存spark Application和worker的注册信息,并将他们的恢复状态写...原创 2018-12-20 17:42:37 · 988 阅读 · 0 评论 -
Spark:DAGScheduler原理剖析与源码分析
Job触发流程原理与源码解析wordcount案例解析,来分析Spark Job的触发流程代码:var linesRDD= sc.textFile('hdfs://')SparkContext中textFile方法 /** * hadoopFile方法调用会创建一个HadoopRDD,其中的元素pair是(key,value) * key是hdfs或者文本文件的每一行的of...原创 2018-12-27 16:04:19 · 644 阅读 · 0 评论 -
Spark:排序机制
排序wordcount的单词统计例子,关键是,如何对统计的单词按照单词个数来进行排序?JavaRDD<String> lines = sc.textFile("spark.txt");JavaRDD&原创 2018-12-17 18:04:34 · 759 阅读 · 0 评论 -
Spark:TaskScheduler原理剖析与源码分析
TaskScheduler是一个接口,DAGScheduler在提交TaskSet给底层调度器的时候是面向接口TaskScheduler。TaskSchduler的核心任务是提交Taskset到集群运算并汇报结果源码分析第一步:TaskScheduler 提交tasks的入口 submitTasks源码地址:org.apache.spark.scheduler.TaskSchedulerIm...原创 2018-12-28 18:15:35 · 532 阅读 · 0 评论 -
Spark:内核架构深度剖析
1、 术语定义1、Application:Spark应用程序指的是用户编写的Spark应用程序,包含了Driver功能代码和分布在集群中多个节点上运行的Executor代码。Spark应用程序,由一个或多个作业JOB组成,如下图所示:2、Driver:驱动程序Spark中的Driver即运行上述Application的Main()函数并且创建SparkContext,其中创建Spark...原创 2018-12-18 15:32:28 · 286 阅读 · 0 评论 -
Spark:宽依赖与窄依赖深度剖析
窄依赖窄依赖就是指父RDD的每个分区只被一个子RDD分区使用,子RDD分区通常只对应常数个父RDD分区,如下图所示:窄依赖有分为两种:一种是一对一的依赖,即OneToOneDependency还有一个是范围的依赖,即RangeDependency,它仅仅被org.apache.spark.rdd.UnionRDD使用。UnionRDD是把多个RDD合成一个RDD,这些RDD是被拼接而成...原创 2018-12-18 16:14:03 · 339 阅读 · 1 评论 -
Spark:Executor原理剖析与源码分析
Executor原理示意图Executor进程的启动worker中为application启动的executor,实际上是启动的这个CoarseGrainedExecutorBackend进程.源码分析:第一步:CoarseGrainedExecutorBackend源码源码地址:org.apache.spark.executor.CoarseGrainedExecutorBack...原创 2018-12-29 11:09:32 · 249 阅读 · 0 评论 -
Spark:基于Yarn的两种提交模式深度剖析
Spark的三种提交模式Spark内核架构,其实就是第一种模式,standalone模式,基于Spark自己的Master-Worker集群第二种,是基于YARN的yarn-cluster模式第三种,是基于YARN的yarn-client模式。如果,你要切换到第二种和第三种模式,很简单,将我们之前用于提交spark应用程序的spark-submit脚本,加上–master参数,设置为y...原创 2018-12-18 18:24:27 · 308 阅读 · 0 评论 -
Spark:spark-evn.sh参数详解
SPARK_MASTER_IP指定master进程所在的机器的ip地址SPARK_MASTER_PORT指定master监听的端口号(默认是7077)SPARK_MASTER_WEBUI_PORT指定master web ui的端口号(默认是8080)SPARK_MASTER_OPTS设置master的额外参数,使用"-Dx=y"设置各个参数。例:export SPARK_MAST...原创 2019-06-17 10:42:52 · 626 阅读 · 0 评论