标签(空格分隔): Spark


本篇博客以WordCount为例说明Spark Job的提交和运行,包括Spark Application初始化、DAG依赖性分析、任务的调度和派发、中间计算结果的存储和读取。

SparkContext的初始化综述

SparkContext是进行Spark应用开大的主要接口,是Spark上层应用与底层实现的中转站。

  • SparkEnv
  • DAGScheduler
  • TaskScheduler
  • SchedulerBackend
  • WebUI

SparkContext的构造函数中最重要的入参是SparkConf.

  1. 根据初始化入参生成SparkConf,再根据SparkConf来创建SparkEnv;

    //生成SparkEnv
    private[spark] val env = SparkEnv.create(conf, "", conf.get("spark.driver.host", conf.get("spark.driver.port").toInt, isDriver = true, isLocal = isLocal)
    SparkEnv.set(env)

  2. 创建TaskScheduler,根据Spark的运行模式来选择相应的SchedulerBackend,同时启动TaskScheduler;

    //生成TaskScheduler
    private[spark] var taskScheduler = SparkContext.createTaskScheduler(this, master, appName)
    taskScheduler.start()

  3. 为上面创建的TaskScheduler实例为入参创建DAGScheduler并启动运行。

    //生成DAGScheduler
    @volatile private[spark] var dagScheduler = new DAGScheduler(taskScheduler)
    dagScheduler.start()

Spark Repl综述

Scala已经拥有Repl,为什么在Spark中还要自己重写一套Repl呢?Scala原声的Repl,是使用Object来封装输入的代码,而在反序列化过程中,对象的构造函数会被再次调用,产生了副作用,我们希望生成Class而不是Object。(Scala中没有静态方法和静态字段,在Scala中可以用Object实现,对象的构造函数在第一次被使用的时候回调用,如果一个对象从未被使用,那么他的构造器也不会被执行,而且Object的构造函数必须是无参的)

1、scala没有静态方法或者静态字段
2、伴生对象充当于静态方法的类,所以伴生对象中全是静态的
3、Scala中的变量有两种var和val(val类似于Java中final,值不可改变)

Scala Repl执行过程

什么是Repl (Read-Eval-Print Loop)?

刚开始学编程的时候,是不是对搭建环境感觉非常棘手?比如从零开始搭建个 PHP Web 开发环境,要下载 Apache 服务器、PHP,然后安装、配置……经过这么一大堆的无关工作,你可能只是想验证一下教程上的 echo "Hello World"; 能不能工作。
这种时候,如果能有个网站可以在线执行代码:我们只要打开浏览器,进入网页,敲入要执行的代码,点击执行按钮就看到执行结果。那是一件多畅快的事情!
对于这种交互式的开发环境我们叫做 REPL(Read-Eval-Print Loop)

Scala是需要编译执行的,而Repl给我们的错觉是Scala解释执行的。在Repl中输入的语句是如何被真正执行的呢?

1)在Repl中输入的每一行语句,都会被封装成一个Object,这以工作主要由Interpreter完成;
2) 对该Object进行编译;
3) 由ClassLoader加载编译后的Java二进制文件;
4) 执行引擎负责真正执行加载入内存的二进制。

Spark学习(三) -- SparkContext初始化的更多相关文章

  1. Spark系列(三)SparkContext分析

    SparkContext初始化流程图 其它说明: 在createTaskScheduler会根据不同的提交模式创建backend对象(如本地模式为LocalBackend). 在SparkDeploy ...

  2. 系统架构--分布式计算系统spark学习(三)

    通过搭建和运行example,我们初步认识了spark. 大概是这么一个流程 ------------------------------                 -------------- ...

  3. Spark 学习(三) maven 编译spark 源码

    spark 源码编译 scala 版本2.11.4 os:ubuntu 14.04 64位 memery 3G spark :1.1.0 下载源码后解压 1 准备环境,安装jdk和scala,具体参考 ...

  4. Spark学习(三): 基本架构及原理

    Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一,与Hadoop和St ...

  5. [转]Spark学习之路 (三)Spark之RDD

    Spark学习之路 (三)Spark之RDD   https://www.cnblogs.com/qingyunzong/p/8899715.html 目录 一.RDD的概述 1.1 什么是RDD? ...

  6. Spark延长SparkContext初始化时间

    有些应用中可能希望先在driver上运行一段java单机程序,然后再初始化SparkContext用集群模式操作java程序返回值.从而避免过早建立SparkContext对象分配集群资源,使资源长时 ...

  7. 2、Spark Core职责之初始化(1)——SparkContext

    SparkContext(Spark上下文) /** * Main entry point for Spark functionality. A SparkContext represents the ...

  8. spark学习笔记总结-spark入门资料精化

    Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用. ...

  9. Spark 核心篇-SparkContext

    本章内容: 1.功能描述 本篇文章就要根据源码分析SparkContext所做的一些事情,用过Spark的开发者都知道SparkContext是编写Spark程序用到的第一个类,足以说明SparkCo ...

随机推荐

  1. ASP.NET TextBox 当鼠标点击后清空默认提示文字[转]

    前台文本框里添加下面2个事件属性: OnFocus="javascript:if(this.value=='提示文字') {this.value=''}" OnBlur=" ...

  2. ftp应用

    ftp的基本应用: 下载easyfzs ftp,仿真模拟ftp服务器. 类库: using System; using System.Collections.Generic; using System ...

  3. ASP.NET MVC 表单submit()

    HTML代码 <form id="frmLogin"> <div class="form-group has-feedback"> &l ...

  4. GCD的简单用法

    /* 创建一个队列用来执行任务,TA属于系统预定义的并行队列即全局队列,目前系统预定义了四个不同运行优先级的全局队列,我们可以通过dispatch_get_global_queue来获取它们 四种优先 ...

  5. 把Mongodb配置成windows服务

    在mongodb/bin 下运行命令窗口需要配置日志和db路径,如下:mongod --logpath d:\mongo\logs\logfilename.log --logappend --dbpa ...

  6. css3(border-radius)边框圆角详解

    传统的圆角生成方案,必须使用多张图片作为背景图案.CSS3的出现,使得我们再也不必浪费时间去制作这些图片了,只需要border-radius属性,支持浏览器IE 9.Opera 10.5.Safari ...

  7. <table>标签隐藏内边框与外边框

    属性名称                属性值                        说明 frame                    void               不显示表格的 ...

  8. 使用geoserver发布arcgis切片

    arcgis map 版本:10.1,10.2,10.3均可 jre:7或者8 geoserver:2.8.2以上 切片:松散型,256*256  ,png 1:安装geoserver并独立部署geo ...

  9. Foundation框架

    1.框架是由许多类.方法.函数.文档按照一定的逻辑组织起来的集合,以便使研发程序变的更容易 清除缓存,删除这个文件夹下的所有文件/Users/fanyafang/Library/Developer/X ...

  10. Java类的基本运行顺序是怎样

    我们以下面的类来说明一个基本的 Java 类的运行顺序: public class Demo{ private String name; private int age; public Demo(){ ...