Spark学习(三) -- SparkContext初始化
标签(空格分隔): Spark
本篇博客以WordCount为例说明Spark Job的提交和运行,包括Spark Application初始化、DAG依赖性分析、任务的调度和派发、中间计算结果的存储和读取。
SparkContext的初始化综述
SparkContext是进行Spark应用开大的主要接口,是Spark上层应用与底层实现的中转站。
- SparkEnv
- DAGScheduler
- TaskScheduler
- SchedulerBackend
- WebUI
SparkContext的构造函数中最重要的入参是SparkConf.
根据初始化入参生成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)创建TaskScheduler,根据Spark的运行模式来选择相应的SchedulerBackend,同时启动TaskScheduler;
//生成TaskScheduler
private[spark] var taskScheduler = SparkContext.createTaskScheduler(this, master, appName)
taskScheduler.start()为上面创建的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初始化的更多相关文章
- Spark系列(三)SparkContext分析
SparkContext初始化流程图 其它说明: 在createTaskScheduler会根据不同的提交模式创建backend对象(如本地模式为LocalBackend). 在SparkDeploy ...
- 系统架构--分布式计算系统spark学习(三)
通过搭建和运行example,我们初步认识了spark. 大概是这么一个流程 ------------------------------ -------------- ...
- Spark 学习(三) maven 编译spark 源码
spark 源码编译 scala 版本2.11.4 os:ubuntu 14.04 64位 memery 3G spark :1.1.0 下载源码后解压 1 准备环境,安装jdk和scala,具体参考 ...
- Spark学习(三): 基本架构及原理
Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一,与Hadoop和St ...
- [转]Spark学习之路 (三)Spark之RDD
Spark学习之路 (三)Spark之RDD https://www.cnblogs.com/qingyunzong/p/8899715.html 目录 一.RDD的概述 1.1 什么是RDD? ...
- Spark延长SparkContext初始化时间
有些应用中可能希望先在driver上运行一段java单机程序,然后再初始化SparkContext用集群模式操作java程序返回值.从而避免过早建立SparkContext对象分配集群资源,使资源长时 ...
- 2、Spark Core职责之初始化(1)——SparkContext
SparkContext(Spark上下文) /** * Main entry point for Spark functionality. A SparkContext represents the ...
- spark学习笔记总结-spark入门资料精化
Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用. ...
- Spark 核心篇-SparkContext
本章内容: 1.功能描述 本篇文章就要根据源码分析SparkContext所做的一些事情,用过Spark的开发者都知道SparkContext是编写Spark程序用到的第一个类,足以说明SparkCo ...
随机推荐
- ASP.NET MVC 表单submit()
HTML代码 <form id="frmLogin"> <div class="form-group has-feedback"> &l ...
- css3(border-radius)边框圆角详解
传统的圆角生成方案,必须使用多张图片作为背景图案.CSS3的出现,使得我们再也不必浪费时间去制作这些图片了,只需要border-radius属性,支持浏览器IE 9.Opera 10.5.Safari ...
- FileSaver.js ////////////////////zzzzzzzzzzzzzz
FileSaver.js 实现浏览器端文件保存的 JavaScript 库 查看次数: 758 下载次数: 89 更新时间: 2015-06-05 发布时间: 2015-06-05 收藏 插件信息金币 ...
- JS 数组迭代方法
var arr = [3,4,5,6,7,"a"]; var isNum = function(elem,index,AAA){return !isNaN(elem);} var ...
- objective-c第七章课后练习2
题:改变第七章例子中print方法,增加bool参数,判断如果是YES则对分数进行约简 @interface Fraction : NSObject { //int num,den; } @prope ...
- linux虚拟机上不了网--桥接方式--问题一直未解决
转载的:可是自己的虚拟机就是上不了网,无线网卡该配的也配了还是不行,如果真有台物理机器就行了,省了好多事:但是模拟性能时肯定不行了:有人知道是什么原因不? 虚拟机网络模式 无论是vmware,virt ...
- Something about Linux
Linux-一切皆文件 VMnet1 Host-Only网络下的虚拟交换机 VMnet8 虚拟NAT网络下的虚拟交换机 桥接模式 虚拟出同一网段下都能访问的服务器 ---------- ...
- HttpGet 请求(带参数)
package com.example.util; import java.io.BufferedReader;import java.io.IOException;import java.io.In ...
- vim编辑指令(转)
跳跃指令 类似于游览器中的<前进><后退>按钮 CTRL-] -> 跟着link/tag转入 (follow link/tag) CTRL-o -> 回到上一次 ...
- Linux Socket编程(不限Linux)【转】
转自:http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html “一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几 ...