spark源码系列文章目录

spark-streaming系列------- 1. spark-streaming的Job调度 上 spark-streaming系列------- 2. spark-streaming的Job调度 下

2016-03-20 20:05:13

阅读数 1011

评论数 0

通过使用evercookie技术实现设备指纹

设备指纹是互联网中经常使用的一种技术,通过设备指纹技术,为每个设备确定一个唯一的设备ID。由于IP地址个数的限制,内网中往往使用NAT技术,将内网中的上万个IP映射成几个外网IP对外访问。这样内网用户在访问某个网站的使用,一个外网IP很可能对应多个内网IP。因此在风控系统中,可以通过使用设备ID,...

2016-05-31 17:57:36

阅读数 9492

评论数 0

Spark RDD系列----3. rdd.coalesce方法的作用

当spark程序中,存在过多的小任务的时候,可以通过 RDD.coalesce方法,收缩合并分区,减少分区的个数,减小任务调度成本,避免Shuffle导致,比RDD.repartition效率提高不少。     rdd.coalesce方法的作用是创建CoalescedRDD,源码如下: def ...

2016-03-31 18:32:56

阅读数 7563

评论数 0

spark解决方案系列--------1.spark-streaming实时Join存储在HDFS大量数据的解决方案

spark-streaming实时接收数据并处理。一个非常广泛的需求是spark-streaming实时接收的数据需要跟保存在HDFS上的大量数据进行Join。要实现这个需求保证实时性需要解决以下几个问题: 1.spark-streaming的数据接收间隔往往很小,比如只有几秒钟。HDFS上的数据...

2016-03-30 10:05:21

阅读数 8884

评论数 9

Spark SQL系列------2. Spark SQL Aggregate操作的实现

本篇文章主要将Aggregate操作的时候的数据存储和实现过程

2016-03-02 18:03:39

阅读数 2157

评论数 1

Spark SQL系列------1. Spark SQL 物理计划的Shuffle实现

Spark SQL物理计划要到Spark-core执行,需要将Spark SQL物理计划转化成RDD,并且建立RDD之间的依赖关系。这个过程可以通过如下图大概表示: 上图中绿色部分指Spark物理计划到RDD过程中数据结构的变迁过程。黄色部分表示变迁过程中,实现加工作用的数据结构。

2016-02-25 14:25:31

阅读数 4313

评论数 0

Spark通过mapPartitions方式加载Json文件,提高文件加载速度

这几天遇到了需要从hdfs加载json字符串,然后转化成json对象的场景。刚开始的实现方式见如下代码: val loginLogRDD = sc.objectFile[String](loginFile, loadLoginFilePartitionNum) .filter(js...

2016-01-13 18:37:35

阅读数 1945

评论数 0

spark-streaming系列------- 5. Spark-Streaming checkpoint的原理和实现

本文以KafkaDirectDStream方式为例说明Spark-Streaming checkpoint的原理     JobGenrerator.generateJobs负责Streaming Job的产生,产生并且提交执行Job之后,会发送DoCheckpoint事件,源码如下: priva...

2015-12-31 18:34:46

阅读数 2984

评论数 1

Spark调度系列-----5.Spark task和Stage的跳过执行(ui显示task和stage skipped)

在spark的首页ui上经常显示任务和Stage被skipped,如以下截图所式: 本文将阐述什么情况下Stage或者Task会被置为skipped,以及stage和task被值skipped之后是否spark application执行会出问题? 当一个Spark Job的ResultS...

2015-12-22 17:46:15

阅读数 10838

评论数 8

spark RDD系列------2.HadoopRDD分区的创建以及计算

Spark经常需要从hdfs读取文件生成RDD,然后进行计算分析。这种从hdfs读取文件生成的RDD就是HadoopRDD。那么HadoopRDD的分区是怎么计算出来的?如果从hdfs读取的文件非常大,如何高效的从hdfs加载文件生成HadoopRDD呢?本篇文章探讨这两个问题。     Spar...

2015-11-26 14:21:51

阅读数 5473

评论数 1

Spark RDD系列-------1. 决定Spark RDD分区算法因素的总结

RDD在调用引起Shuffle的方法的时候,如果没有显示指定ShuffledRDD的分区,那么会调用Partitioner.defaultPartitioner方法来确定ShuffledRDD的分区,比如RDD.combineByKey: def combineByKey[C](createCom...

2015-11-25 17:51:46

阅读数 3869

评论数 0

java nio原理和它的优点

要想讲清楚nio的原理和它的优点得先清楚Java应用程序的文件读写原理和虚拟内存的原理。Java文件读取原理可参见如下图: 当应用程序需要读取文件的时候,内核首先通过DMA技术将文件内容从磁盘读入内核中的buffer,然后Java应用进程再从内核的buffer将数据读取到应用程序的buf...

2015-11-06 15:20:14

阅读数 11990

评论数 0

spark-streaming系列------- 4. Spark-Streaming Job的生成和执行

Spark-Streaming Job的生成和执行可以通过如下图表示: Spark-Streaming Job的生产和和执行由以下3个部分相互作用生成: Driver程序:用户通过编写Driver程序描述了DStream的依赖关系,Driver程序根据DStream描述的依赖关系描述了RDD的...

2015-10-29 14:13:19

阅读数 1778

评论数 0

Spark storage系列------3.Spark cache数据块之后对后继Job任务调度的影响,以及后继Job Task执行的影响

DAGScheduler.submitStage建立Spark应用的物理执行图,DAGScheduler.submitStage通过调用DAGSchdeuler.getMissingParentStages找到一个Stage的祖宗Stage并把祖宗Stage加入到物理执行图中。在这里如果发现依赖的...

2015-10-22 09:51:03

阅读数 1404

评论数 0

Spark storage系列------2.Spark cache数据块的读取

如下时序图表示了RDD.persist方法执行之后,Spark是如何cache分区数据的。时序图可放大显示 本篇文章中,RDD.persist(StorageLevel)参数StorageLevel为:MEMORY_AND_DISK_SER_2 = new StorageLevel(tr...

2015-10-21 16:48:35

阅读数 1485

评论数 0

Spark storage系列------1.Spark RDD.persist对数据的存储

如下时序图表示了RDD.persist方法执行之后,Spark是如何cache分区数据的。 本篇文章中,RDD.persist(StorageLevel)参数StorageLevel为:MEMORY_AND_DISK_SER_2 = new StorageLevel(true, true, f...

2015-10-21 10:50:04

阅读数 8764

评论数 0

Spark Shuffle系列-----3. spark shuffle reduce操作RDD partition的生成

本篇文章以RDD.aggregateByKey引起的SortShuffleWriter为例说明Shuffle map端的原理和实现,为了便于说明问题这里的所有执行流程都是默认执行流程     为了便于说明问题,本文中Stage1是shuffle map操作所在的Stage,Stage2是shuf...

2015-10-15 18:02:43

阅读数 2510

评论数 0

Spark Shuffle系列-----2. Spark Shuffle map端的原理和实现

本篇文章以RDD.aggregateByKey引起的SortShuffleWriter为例说明Shuffle map端的原理和实现

2015-10-14 13:46:17

阅读数 2498

评论数 0

Spark Shuffle系列-----1. Spark Shuffle与任务调度之间的关系

Spark根据RDD间的依赖关系是否是Shuffle依赖进行Stage的划分,先执行的Stage标记为Stage1,后执行的Stage标记为Stage2。Shuffle是Stage分2步操作     Map操作和Recude操作可以通过下面这个图表示出来:      1. Map操作。...

2015-10-13 18:17:15

阅读数 3163

评论数 0

spark调度系列------4. RDD依赖的建立以及RDD依赖在任务提交到调度系统的作用

Spark中RDD依赖的类关系如下图:

2015-09-25 13:51:03

阅读数 1499

评论数 0

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