自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 深入理解Spark RDD——RDD信息对象

RDDInfo用于描述RDD的信息,RDDInfo提供的信息如下: id:RDD的id。 name:RDD的名称。 numPartitions:RDD的分区数量。 storageLevel:RDD的存储级别(即StorageLevel)。 parentIds:RDD的父亲RDD的id序列...

2019-08-16 11:20:53 2054 0

原创 深入理解Spark RDD——RDD分区计算器Partitioner

在《深入理解Spark RDD——RDD依赖(构建DAG的关键)》一文,详细描述了RDD的宽窄依赖。RDD之间的依赖关系如果是Shuffle依赖,那么上游RDD该如何确定每个分区的输出将交由下游RDD的哪些分区呢?或者下游RDD的各个分区将具体依赖于上游RDD的哪些分区呢?Spark提供了分区计算...

2019-08-16 11:14:50 1543 0

原创 深入理解Spark RDD——RDD依赖(构建DAG的关键)

在《深入理解Spark RDD——为什么需要RDD?》一文我们解释了为什么需要RDD,并且在《深入理解Spark RDD——RDD实现的初次分析》一文对RDD进行了基本的分析,本文将继续对RDD的依赖实现进行分析。正是由于RDD之间具有依赖关系,才能进而转换为调度中的DAG。 DAG中的各个RD...

2019-08-12 15:31:53 1161 3

原创 深入理解Spark RDD——RDD实现的初次分析

RDD(Resilient Distributed Datasets,弹性分布式数据集)代表可并行操作元素的不可变分区集合。对于Spark的初学者来说,这个概念会十分陌生。即便是对于一些有Spark使用经验的人,要想说清楚什么是RDD,以及为什么需要RDD还是一件比较困难的事情。在《深入理解Spa...

2019-06-21 09:49:19 781 0

原创 深入理解Spark RDD——为什么需要RDD?

RDD(Resilient Distributed Datasets,弹性分布式数据集)代表可并行操作元素的不可变分区集合。对于Spark的初学者来说,这个概念会十分陌生。即便是对于一些有Spark使用经验的人,要想说清楚什么是RDD,以及为什么需要RDD还是一件比较困难的事情。本文首先解释第二个...

2019-06-11 10:00:25 948 0

原创 累计三年,断断续续的管理经验

在写标题的时候,本来要写成《累计三年,断断续续的项目管理经验》。后来想想,以我对管理的认识和感悟,管理好一个项目真的不是只管理项目这么简单。 何为断断续续?是因为这四年的管理经验不是连续的,分为了三段而已。2009年,在一家传统软件公司第一次担任了项目组长,这半年经验是伴随着我的离职而结束...

2019-06-03 10:59:15 2970 16

原创 Spark2.1.0——广播管理器BroadcastManager

BroadcastManager用于将配置信息和序列化后的RDD、Job以及ShuffleDependency等信息在本地存储。如果为了容灾,也会复制到其他节点上。创建BroadcastManager的代码实现如下。 val broadcastManager = new BroadcastMa...

2019-04-28 10:25:32 1440 0

原创 累计三年,断断续续的管理经验

累计三年,断断续续的管理经验序言一、融入二、豁达三、担当四、勿好为人师五、人尽其能六、谦卑七、平等互信八、员工激励结尾 序言 在写标题的时候,本来要写成《累计三年,断断续续的项目管理经验》。后来想想,以我对管理的认识和感悟,管理好一个项目真的不是只管理项目这么简单。 何为断断续续,是因为这四年的管...

2019-04-09 16:18:38 503 0

原创 Spark2.1.0——存储体系概述

本书在5.7节曾介绍过存储体系的创建,那时只为帮助读者了解SparkEnv,现在是时候对Spark的存储体系进行详细的分析了。简单来讲,Spark存储体系是各个Driver、Executor实例中的BlockManager所组成的。但是从一个整体出发,把各个节点的BlockManager看成存储体...

2019-04-09 15:49:38 17838 0

原创 Spark常见故障诊断(一)

本人维护的Spark主要运行在三个Hadoop集群上,此外还有其他一些小集群或者隐私集群。这些机器加起来有三万台左右。目前运维的Spark主要有Spark2.3和Spark1.6两个版本。用户在使用的过程中难免会发生各种各样的问题,为了对经验进行沉淀,也为了给Spark用户提供一些借鉴,这里将对各...

2019-04-01 09:29:18 3708 4

原创 Spark2.1.0——Spark环境更新

阅读提示:本文是对SparkContext中对用户通过--jars(或spark.jars)和--files(或spark.files)参数添加的外部资源进行的分析。 用户提交任务时往往需要添加额外的jar包或其它文件,用户任务的执行将依赖这些文件。这些文件该如何指定?任务在各个节点上运行时又是...

2018-12-27 11:56:35 728 4

原创 Spark2.1.0——ContextCleaner的工作原理分析

ContextCleaner是SparkContext中的组件之一。ContextCleaner用于清理那些超出应用范围的RDD、Shuffle对应的map任务状态、Shuffle元数据、Broadcast对象以及RDD的Checkpoint数据。 创建ContextCleaner 创建Con...

2018-12-17 09:54:32 5978 0

原创 Spark2.1.0——Executor动态分配的实现原理

         ExecutorAllocationManager的作用已在《Spark2.1.0——SparkContext概述》一文有过介绍,更为准确地说,ExecutorAllocationManager是基于工作负载动态分配和删除Executor的代理。简单讲,ExecutorAlloc...

2018-12-10 09:43:15 7560 2

原创 Spark2.1.0——创建SparkUI的分析

阅读建议:阅读本文前,最好先阅读《Spark2.1.0——SparkUI的实现》和《Spark2.1.0——WebUI框架体系》。          在SparkContext的初始化过程中,会创建SparkUI。有了对WebUI的总体认识,现在是时候了解SparkContext是如何构造Spa...

2018-12-03 09:47:25 789 0

原创 Spark2.1.0——WebUI框架体系

阅读建议:阅读本文前最好先阅读《Spark2.1.0——SparkUI的实现》一文。          Spark UI构建在WebUI的框架体系之上,因此应当首先了解WebUI。WebUI定义了一种Web界面展现的框架,并提供返回Json格式数据的Web服务。WebUI用于展示一组标签页,We...

2018-11-20 09:53:34 1301 2

原创 Spark2.1.0——SparkUI的实现

任何系统都需要提供监控功能,否则在运行期间发生一些异常时,我们将会束手无策。也许有人说,可以增加日志来解决这个问题。日志只能解决你的程序逻辑在运行期的监控,进而发现Bug,以及提供对业务有帮助的调试信息。当你的JVM进程奔溃或者程序响应速度很慢时,这些日志将毫无用处。好在JVM提供了jstat、j...

2018-11-20 09:53:05 3330 9

原创 Spark2.1.0——SparkContext初始化之Spark环境的创建

阅读指导:在《Spark2.1.0——SparkContext概述》一文中,曾经简单介绍了SparkEnv。本节内容将详细介绍SparkEnv的创建过程。          在Spark中,凡是需要执行任务的地方就需要SparkEnv。在生产环境中,SparkEnv往往运行于不同节点的Execu...

2018-11-16 09:48:37 634 0

原创 Spark2.1.0——SparkContext概述

Spark应用程序的提交离不开Spark Driver,后者是驱动应用程序在Spark集群上执行的原动力。了解Spark Driver的初始化,有助于读者理解Spark应用程序与Spark Driver的关系。 Spark Driver的初始化始终围绕着SparkContext的初始化。Spar...

2018-11-12 10:07:23 1820 0

原创 深入浅出Spark2.1.0度量系统——Sink继承体系

阅读提示:阅读本文前,最好请阅读《Spark2.1.0——深入浅出度量系统》和《深入浅出Spark2.1.0度量系统——Source继承体系》。          Source准备好度量数据后,我们就需要考虑如何输出和使用的问题。这里介绍一些常见的度量输出方式:阿里数据部门采用的一种度量使用方式...

2018-10-09 19:06:59 1803 9

原创 深入浅出Spark2.1.0度量系统——Source继承体系

阅读提示:阅读本文前,最好请阅读《Spark2.1.0——深入浅出度量系统》一文。          任何监控都离不开度量数据的采集,离线的数据采集很容易做到和被采集模块之间的解耦,但是对于实时度量数据,尤其是那些内存中数据的采集就很难解耦。这就类似于网页监控数据的埋点一样,你要在网页中加入一段...

2018-10-09 19:06:45 1192 7

原创 Spark2.1.0——深入浅出度量系统

对于一个系统而言,首先考虑要满足一些业务场景,并实现功能。随着系统功能越来越多,代码量级越来越高,系统的可维护性、可测试性、性能都会成为新的挑战,这时监控功能就变得越来越重要了。在国内,绝大多数IT公司的项目都以业务为导向,以完成功能为目标,这些项目在立项、设计、开发、上线的各个阶段,很少有人会考...

2018-10-09 09:50:31 3478 7

原创 Spark2.1.0事件总线分析——LiveListenerBus详解

阅读提示:阅读本文前,最好先阅读《Spark2.1.0之源码分析——事件总线》、《Spark2.1.0事件总线分析——ListenerBus的继承体系》及《Spark2.1.0事件总线分析——SparkListenerBus详解》几篇文章的内容。 LiveListenerBus继承了SparkL...

2018-09-27 09:39:49 1546 6

原创 Spark2.1.0事件总线分析——SparkListenerBus详解

阅读提示:阅读本文前,最好先阅读《Spark2.1.0之源码分析——事件总线》和《Spark2.1.0事件总线分析——ListenerBus的继承体系》。          有了《Spark2.1.0之源码分析——事件总线》文中对ListenerBus的定义及《Spark2.1.0事件总线分析—...

2018-09-18 10:07:03 1266 0

原创 Spark2.1.0事件总线分析——ListenerBus的继承体系

阅读提示:阅读本文前,最好先阅读《Spark2.1.0之源码分析——事件总线》。          通过阅读《Spark2.1.0之源码分析——事件总线》一文,理解了ListenerBus的定义后,本小节一起来看看有哪些类继承了它。ListenerBus的类继承体系如图1所示。 图1  Li...

2018-09-11 09:43:08 570 0

原创 Spark2.1.0之源码分析——事件总线

         Spark定义了一个特质[1]ListenerBus,可以接收事件并且将事件提交到对应事件的监听器。为了对ListenerBus有个直观的理解,我们先来看看它的代码实现,见代码清单1。 代码清单1        ListenerBus的定义 private[spark] t...

2018-09-03 10:14:20 3798 0

原创 spark2.1.0之源码分析——RPC客户端TransportClient详解

提示:阅读本文前最好先阅读: 《Spark2.1.0之内置RPC框架》 《spark2.1.0之源码分析——RPC配置TransportConf》 《spark2.1.0之源码分析——RPC客户端工厂TransportClientFactory》 《spark2.1.0之源码分析——RPC...

2018-08-28 10:48:46 1559 0

原创 spark2.1.0之源码分析——RPC服务端引导程序TransportServerBootstrap

提示:阅读本文前最好先阅读: 《Spark2.1.0之内置RPC框架》 《spark2.1.0之源码分析——RPC配置TransportConf》 《spark2.1.0之源码分析——RPC客户端工厂TransportClientFactory》 《spark2.1.0之源码分析——RPC...

2018-08-20 10:56:59 2166 4

原创 spark2.1.0之源码分析——服务端RPC处理器RpcHandler详解

  提示:阅读本文前最好先阅读: 《Spark2.1.0之内置RPC框架》 《spark2.1.0之源码分析——RPC配置TransportConf》 《spark2.1.0之源码分析——RPC客户端工厂TransportClientFactory》 《spark2.1.0之源码分析——...

2018-08-13 10:21:13 1822 2

原创 spark2.1.0之源码分析——RPC传输管道处理器详解

提示:阅读本文前最好先阅读: 《Spark2.1.0之内置RPC框架》 《spark2.1.0之源码分析——RPC配置TransportConf》 《spark2.1.0之源码分析——RPC客户端工厂TransportClientFactory》 《spark2.1.0之源码分析——RPC...

2018-08-01 10:55:17 618 0

原创 spark2.1.0之源码分析——RPC管道初始化

提示:阅读本文前最好先阅读: 《Spark2.1.0之内置RPC框架》 《spark2.1.0之源码分析——RPC配置TransportConf》 《spark2.1.0之源码分析——RPC客户端工厂TransportClientFactory》 《spark2.1.0之源码分析——RPC...

2018-07-25 10:32:57 2091 0

原创 spark2.1.0之源码分析——RPC服务器TransportServer

提示:阅读本文前最好先阅读: 《Spark2.1.0之内置RPC框架》 《spark2.1.0之源码分析——RPC配置TransportConf》 《spark2.1.0之源码分析——RPC客户端工厂TransportClientFactory》        TransportServer...

2018-07-17 10:32:36 757 0

原创 spark2.1.0之源码分析——RPC客户端工厂TransportClientFactory

提示:阅读本文前最好先阅读《Spark2.1.0之内置RPC框架》和《spark2.1.0之源码分析——RPC配置TransportConf》。      TransportClientFactory是创建传输客户端(TransportClient)的工厂类。在说明《Spark2.1.0之内置RP...

2018-07-10 10:16:52 1587 0

原创 spark2.1.0之源码分析——RPC配置TransportConf

         在《Spark2.1.0之内置RPC框架》提到TransportContext中的TransportConf给Spark的RPC框架提供配置信息,它有两个成员属性——配置提供者conf和配置的模块名称module。这两个属性的定义如下: private final Config...

2018-07-02 18:31:02 950 0

原创 Spark2.1.0之内置RPC框架

        在Spark中很多地方都涉及网络通信,比如Spark各个组件间的消息互通、用户文件与Jar包的上传、节点间的Shuffle过程、Block数据的复制与备份等。在Spark 0.x.x与Spark 1.x.x版本中,组件间的消息通信主要借助于Akka[1],使用Akka可以轻松的构建...

2018-06-27 09:27:34 8611 3

原创 spark2.1.0之配置与源码分析

      任何优秀的软件或服务都会提供一些配置参数,这些配置参数有些是内置的,有些则是可以由用户配置的。对于熟悉Java的开发人员来说,对JVM进行性能调优是一个经常需要面对的工作,这个过程常常伴随着各种JVM参数的调整与测试。之所以将这些参数交给具体的开发人员去调整,是因为软件或者服务的提供者...

2018-06-21 14:49:21 833 2

原创 Spark2.1.0之模型设计与基本架构

Spark编程模型      正如Hadoop在介绍MapReduce编程模型时选择word count的例子,并且使用图形来说明一样,笔者对于Spark编程模型也选择用图形展现。      Spark 应用程序从编写到提交、执行、输出的整个过程如图2-5所示。图2-5   代码执行过程图2-5中...

2018-06-12 09:41:32 1803 6

原创 Spark2.1.0之模块设计

在阅读本文之前,读者最好已经阅读了《Spark2.1.0之初识Spark》和《Spark2.1.0之基础知识》两篇文章。本文将主要介绍Spark2.1.0版本中的模块设计以及各个模块的功能和特点。整个Spark主要由以下模块组成:Spark Core:Spark的核心功能实现,包括:基础设施、Sp...

2018-06-05 10:00:02 1363 2

原创 Spark2.1.0之基础知识

      在阅读本文之前,读者最好已经阅读了《Spark2.1.0之初识Spark》一文,本文将对Spark的基础知识进行介绍。但在此之前,读者先跟随本人来一次简单的时光穿梭,最后还将对Java与Scala在语言上进行比较。版本变迁    经过5年多的发展,Spark目前的版本是2.3.0。Sp...

2018-05-24 09:49:08 2898 0

原创 Spark2.1.0之代码结构及载入Ecplise方法

一、项目结构        在大型项目中,往往涉及非常多的功能模块,此时借助于Maven进行项目、子项目(模块)的管理,能够节省很多开发和沟通成本。整个Spark项目就是一个大的Maven项目,包含着多个子项目。无论是Spark父项目还是子项目,本身都可以作为独立的Maven项目来管理。core是...

2018-05-17 10:01:58 1137 0

原创 Spark2.1.0之运行环境准备

       学习一个工具的最好途径,就是使用它。这就好比《极品飞车》玩得好的同学,未必真的会开车,要学习车的驾驶技能,就必须用手触摸方向盘、用脚感受刹车与油门的力道。在IT领域,在深入了解一个系统的原理、实现细节之前,应当先准备好它的运行环境或者源码阅读环境。如果能在实际环境下安装和运行Spar...

2018-05-04 10:15:12 1647 0

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