Spark Streaming:工作原理

Spark Streaming简介 Spark Streaming是Spark Core API的一种扩展,它可以用于进行大规模、高吞吐量、容错的实时数据流的处理。它支持从很多种数据源中读取数据,比如Kafka、Flume、Twitter、ZeroMQ、Kinesis或者是TCP Socket。...

2019-02-26 11:26:35

阅读数 30

评论数 0

Spark Streaming:DStream的transformationy及output操作

updateStateByKey updateStateByKey操作允许您在使用新的信息持续更新时保持任意状态 public class UpdateStateByKeyWordCount { public static void main(String[] args) throws...

2019-02-19 11:39:50

阅读数 48

评论数 0

Spark Streaming:输入DStream之Kafka数据源

基于Receiver的方式 这种方式使用Receiver来获取数据。Receiver是使用Kafka的高层次Consumer API来实现的。receiver从Kafka中获取的数据都是存储在Spark Executor的内存中的,然后Spark Streaming启动的job会去处理那些数据 在...

2019-02-15 16:05:04

阅读数 61

评论数 0

Spark SQL:运行原理

Spark SQL的运行过程 SQL在Spark执行要经历以下几步: 用户提交SQL文本 解析器将SQL文本解析成逻辑计划 分析器结合Catalog对逻辑计划做进一步分析,验证表是否存在,操作是否支持等 优化器对分析器分析的逻辑计划做进一步优化,如将过滤逻辑下推到子查询,查询改写...

2019-02-13 16:36:44

阅读数 46

评论数 0

Spark SQL:UDF和UDAF

UDF 用户定义函数(User-defined functions, UDFs)是大多数 SQL 环境的关键特性,用于扩展系统的内置功能。 UDF允许开发人员通过抽象其低级语言实现来在更高级语言(如SQL)中启用新功能。 Apache Spark 也不例外,并且提供了用于将 UDF 与 Spar...

2019-01-23 18:03:26

阅读数 62

评论数 0

Spark:shuffle数据倾斜

数据倾斜 Shuffle的时候,将各个节点上相同的key拉取到某个节点的一个task进行处理,比如按照key进行聚合或join等操作,如果某个key对应的数据量特别大的话,就会发生数据倾斜现象。数据倾斜就成为了整个task运行时间的短板。 因此出现数据倾斜的时候,Spark作业看起来会运行得非常...

2019-01-21 15:01:58

阅读数 26

评论数 0

Spark:性能优化

诊断内存的消耗 判断spark程序消耗了多少内存 首先,自己设置RDD的并行度,有两种方式:要不然,在parallelize()、textFile()等方法中,传入第二个参数,设置RDD的task / partition的数量;要不然,用SparkConf.set()方法,设置一个参数,s...

2019-01-21 10:49:51

阅读数 57

评论数 0

Spark:内存分析与优化

概述 执行 Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务的调度,后者负责在工作...

2019-01-18 15:54:12

阅读数 73

评论数 0

Spark:Checkpoint原理剖析与源码分析

一、概述 Checkpoint是什么? Spark在生产环境下经常会面临Tranformations的RDD非常多(例如一个Job中包含1万个RDD)或者具体Tranformation产生的RDD本身计算特别复杂和耗时(例如计算时常超过1~5个小时),此时我们必须考虑对计算结果数据的持久化。如果采...

2019-01-11 17:15:23

阅读数 63

评论数 0

Spark:BlockManager原理剖析与源码分析

BlockManager是Spark的分布式存储系统,与我们平常说的分布式存储系统是有区别的,区别就是这个分布式存储系统只会管理Block块数据,它运行在所有节点上。BlockManager的结构是Maser-Slave架构,Master就是Driver上的BlockManagerMaster,S...

2019-01-10 15:39:48

阅读数 134

评论数 0

Spark:Shuffle原理剖析与源码分析

spark中的Shuffle是非常重要的,shuffle不管在Hadoop中还是Spark中都是重重之重,特别是在Spark shuffle优化的时间。更是非常的重要。 普通shuffle操作的原理剖析(spark 2.x弃用) 每一个Job提交后都会生成一个ResultStage和若干个Sh...

2019-01-08 10:12:40

阅读数 62

评论数 0

Spark:Task原理剖析与源码分析

在Spark中,一个应用程序要想被执行,肯定要经过以下的步骤: 从这个路线得知,最终一个job是依赖于分布在集群不同节点中的task,通过并行或者并发的运行来完成真正的工作。由此可见,一个个的分布式的task才是Spark的真正执行者。下面先来张task运行框架整体的对Spark的task运...

2018-12-29 17:19:30

阅读数 70

评论数 0

Spark:Executor原理剖析与源码分析

Executor原理示意图 Executor进程的启动 worker中为application启动的executor,实际上是启动的这个CoarseGrainedExecutorBackend进程. 源码分析: 第一步:CoarseGrainedExecutorBackend源码 源码地址:...

2018-12-29 11:09:32

阅读数 27

评论数 0

Spark:TaskScheduler原理剖析与源码分析

TaskScheduler是一个接口,DAGScheduler在提交TaskSet给底层调度器的时候是面向接口TaskScheduler。TaskSchduler的核心任务是提交Taskset到集群运算并汇报结果 源码分析 第一步:TaskScheduler 提交tasks的入口 submitTa...

2018-12-28 18:15:35

阅读数 66

评论数 0

Spark:DAGScheduler原理剖析与源码分析

Job触发流程原理与源码解析 wordcount案例解析,来分析Spark Job的触发流程 代码:var linesRDD= sc.textFile('hdfs://') SparkContext中textFile方法 /** * hadoopFile方法调用会创建一个H...

2018-12-27 16:04:19

阅读数 53

评论数 0

Spark:Worker原理剖析与源码分析

解释: Master要求Worker启动Driver和Executor Worker启动Driver的一个基本的原理,Worker会启动一个线程DriverRunner,然后DriverRunner会去负责启动Driver进程,然后在之后对Driver进程进行管理 Worker启动E...

2018-12-24 17:50:18

阅读数 39

评论数 0

Spark:Master原理剖析与源码分析

Master主备切换 Spark原生的standalone模式是支持主备切换的,也就是说master可以配置两个,当Action Master因故障挂了的时候,系统会自动将Standby Master 切换成 Active Master。 Master的准备切换分为两种: 一种是基于文件...

2018-12-20 17:42:37

阅读数 60

评论数 0

Spark:SparkContext原理剖析与源码分析

在Spark中,SparkContext是Spark所有功能的一个入口,你无论是用java、scala,甚至是python编写都必须要有一个SparkContext,它的主要作用,包括初始化Spark应用程序所需的一些核心组件,包括 调度器(DAGSchedule、TaskScheduler),还...

2018-12-19 15:37:48

阅读数 58

评论数 0

Spark:基于Yarn的两种提交模式深度剖析

Spark的三种提交模式 Spark内核架构,其实就是第一种模式,standalone模式,基于Spark自己的Master-Worker集群 第二种,是基于YARN的yarn-cluster模式 第三种,是基于YARN的yarn-client模式。 如果,你要切换到第二种和第三种模式,很简单...

2018-12-18 18:24:27

阅读数 35

评论数 0

Spark:宽依赖与窄依赖深度剖析

窄依赖 窄依赖就是指父RDD的每个分区只被一个子RDD分区使用,子RDD分区通常只对应常数个父RDD分区,如下图所示: 窄依赖有分为两种: 一种是一对一的依赖,即OneToOneDependency 还有一个是范围的依赖,即RangeDependency,它仅仅被org.apache.spar...

2018-12-18 16:14:03

阅读数 48

评论数 1

提示
确定要删除当前文章?
取消 删除
关闭
关闭