12 泰山不老生

尚未进行身份认证

耿嘉安,13年IT经验。《深入理解Spark》与《Spark内核设计的艺术》两书的作者。Apache Spark Contributor和MongoDB Contributor。曾就职于阿里巴巴,基于ODPS构建大数据商业解决方案——御膳房。曾负责艺龙大数据平台的架构工作。现在负责360对于Spark的运维、调优、扩展、开发等工作。在大量的工作实践中,对J2EE、JVM、Tomcat、Spring、Hadoop、Spark、MySQL、Redis、Zookeeper都有深入研究。早期从事J2EE企业级应用开发,对Java相关技术有独到见解。业余喜欢研究中国古代历史,古诗词,旅游,足球等。

等级
TA的排名 6k+

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

RDDInfo用于描述RDD的信息,RDDInfo提供的信息如下:id:RDD的id。 name:RDD的名称。 numPartitions:RDD的分区数量。 storageLevel:RDD的存储级别(即StorageLevel)。 parentIds:RDD的父亲RDD的id序列。这说明一个RDD会有零到多个父RDD。 callSite:RDD的用户调用栈信息。 scope:...

2019-08-16 11:20:53

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

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

2019-08-16 11:14:50

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

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

2019-08-12 15:31:53

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

RDD(ResilientDistributedDatasets,弹性分布式数据集)代表可并行操作元素的不可变分区集合。对于Spark的初学者来说,这个概念会十分陌生。即便是对于一些有Spark使用经验的人,要想说清楚什么是RDD,以及为什么需要RDD还是一件比较困难的事情。在《深入理解SparkRDD——为什么需要RDD?》一文解释了第二个问题,本文将开启对第一个问题的解答。有些读者可...

2019-06-21 09:49:19

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

RDD(ResilientDistributedDatasets,弹性分布式数据集)代表可并行操作元素的不可变分区集合。对于Spark的初学者来说,这个概念会十分陌生。即便是对于一些有Spark使用经验的人,要想说清楚什么是RDD,以及为什么需要RDD还是一件比较困难的事情。本文首先解释第二个问题。为什么需要RDD?以下从数据处理模型、依赖划分原则、数据处理效率及容错处理4个方面解释Spa...

2019-06-11 10:00:25

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

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

2019-06-03 10:59:15

Spark2.1.0——广播管理器BroadcastManager

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

2019-04-28 10:25:32

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

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

2019-04-09 16:18:38

Spark2.1.0——存储体系概述

本书在5.7节曾介绍过存储体系的创建,那时只为帮助读者了解SparkEnv,现在是时候对Spark的存储体系进行详细的分析了。简单来讲,Spark存储体系是各个Driver、Executor实例中的BlockManager所组成的。但是从一个整体出发,把各个节点的BlockManager看成存储体系的一部分,那么存储体系还有更多衍生内容,比如块传输服务、map任务输出跟踪器、Shuffle管理器等...

2019-04-09 15:49:38

Spark常见故障诊断(一)

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

2019-04-01 09:29:18

Spark2.1.0——Spark环境更新

阅读提示:本文是对SparkContext中对用户通过--jars(或spark.jars)和--files(或spark.files)参数添加的外部资源进行的分析。用户提交任务时往往需要添加额外的jar包或其它文件,用户任务的执行将依赖这些文件。这些文件该如何指定?任务在各个节点上运行时又是如何获取到这些文件的呢?我们首先回答第一个问题。在SparkContext的初始化过程中会读取用户...

2018-12-27 11:56:35

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

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

2018-12-17 09:54:32

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

        ExecutorAllocationManager的作用已在《Spark2.1.0——SparkContext概述》一文有过介绍,更为准确地说,ExecutorAllocationManager是基于工作负载动态分配和删除Executor的代理。简单讲,ExecutorAllocationManager与集群管理器之间的关系可以用图1来表示。图1    Executo...

2018-12-10 09:43:15

Spark2.1.0——创建SparkUI的分析

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

2018-12-03 09:47:25

Spark2.1.0——WebUI框架体系

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

2018-11-20 09:53:34

Spark2.1.0——SparkUI的实现

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

2018-11-20 09:53:05

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

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

2018-11-16 09:48:37

Spark2.1.0——SparkContext概述

Spark应用程序的提交离不开SparkDriver,后者是驱动应用程序在Spark集群上执行的原动力。了解SparkDriver的初始化,有助于读者理解Spark应用程序与SparkDriver的关系。SparkDriver的初始化始终围绕着SparkContext的初始化。SparkContext可以算得上是Spark应用程序的发动机引擎,轿车要想跑起来,发动机首先要启动。Spar...

2018-11-12 10:07:23

浅谈——程序员的自我革命

        在程序员这条道路上走过了十一年,即将迎来第十二个年头。之后是否是一个新的轮回?十一年前,从高校毕业后去哪里是当时首要考虑的问题。早在大二第二学期时就没有了要考研的打算,经常翘课回到宿舍鼓捣各种计算机软件,还记得当时最感兴趣的就是3DsMax和Flash了。这两款软件在那时风靡全球,当我第一次看到绚丽的动画效果,就被深深的吸引以至于“荒废”学业。在迈出象牙塔的时候,希望可以在动画领域...

2018-10-29 10:17:42

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

阅读提示:阅读本文前,最好请阅读《Spark2.1.0——深入浅出度量系统》和《深入浅出Spark2.1.0度量系统——Source继承体系》。        Source准备好度量数据后,我们就需要考虑如何输出和使用的问题。这里介绍一些常见的度量输出方式:阿里数据部门采用的一种度量使用方式就是输出到日志;在命令行运行过Hadoop任务(例如:mapreduce)的使用者也会发现控制台打印的...

2018-10-09 19:06:59

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。