Apache Spark-1.0.0源码浅析(一):引子

Apache Spark版本迭代速度很快,但是基本框架和经典组件保持这统一模式,所以学习Spark源码,我选择的是Apache Spark-1.0.0版本,通过分析几个主要模块的工作原理,理解Spark的运行过程。

通过LocalWordCount程序,调试Spark源码:

LocalWordCount首先通过SparkConf设置Master和AppName,然后以SparkConf为参数实例化SparkContext,通过SparkContext读取本地文件,分割文本计算单词数量,最后打印结果。

package org.apache.spark.examples

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._

object LocalWordCount {
  def main(args: Array[String]) = {
    val sparkConf = new SparkConf().setMaster("local").setAppName("Local Word Count")
    val sc = new SparkContext(sparkConf)
    val file = sc.textFile("README.md")
    val count = file.flatMap(line => line.split(" "))
                    .map(word => (word, 1))
                    .reduceByKey(_ + _)
    count foreach println
  }
}

Apache Spark源码编译并导入Intellij IDEA,请参见:http://8liang.cn/intellij-idea-spark-development/

参考@JerryLead绘制的Spark-0.7架构图,Apache Spark整体上可以分为四个模块:Scheduler、RDD、Deploy和Storage,以及一些其他的小组件。

  • Scheduler:资源调度
  • RDD:操作运算
  • Deploy:部署方式
  • Storage:数据存储

Spark采用Master-Slave结构,Master和Slave之间以及各子模块之间的通信,采用Scala Actor的方式。

END

时间: 2024-10-04 23:50:52

Apache Spark-1.0.0源码浅析(一):引子的相关文章

Spark 1.0.1源码安装

apache 网站上面已经有了已经构建好了的版本,我这里还是自己利用午休时间重新构建一下(jdk,python,scala的安装就省略了,自己可以去安装) http://www.apache.org/dist/spark/spark-1.0.1/ 具体官网的下载链接可以去这里 我下载的是http://www.apache.org/dist/spark/spark-1.0.1/spark-1.0.1.tgz源码包 下载对应的linux服务器上面,然后解压 wget http://www.apach

Centos 7.0 编译安装LAMP(Linxu+apache+mysql+php)之源码安装Mysql (二)

mysql 简介: MySQL是一个关系型数据库管理系统,关系数据库将数据保存在不同的表中,这样就增加了速度并提高了灵活性.目前其属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件.MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言. 安装环境: 系统: centos 7.0 最小化安装 软件

springmvc源码浅析(基于spring3.1.0)

请求处理过程:通过url找到对应Controller类中处理请求的方法,执行方法返回结果视图的过程.大致分为三个步骤: 其一,ApplicationContext初始化时建立所有url和controller类的对应关系(用Map保存); 其二,根据请求url找到对应的controller,并从controller中找到处理请求的方法; 其三,执行方法处理请求,并返回结果视图. 我们首先看第一个步骤,也就是建立Map<url,controller>关系的部分.第一部分的入口类为Applicati

Centos 7.0 编译安装LAMP(Linxu+apache+mysql+php)之源码安装php (三)

PHP简介: PHP(外文名:PHP: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域.PHP 独特的语法混合了C.Java.Perl以及PHP自创的语法.它可以比CGI或者Perl更快速地执行动态网页.用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标

【Spark Core】任务执行机制和Task源码浅析2

引言 上一小节<任务执行机制和Task源码浅析1>介绍了Executor的注册过程. 这一小节,我将从Executor端,就接收LaunchTask消息之后Executor的执行任务过程进行介绍. 1. Executor的launchTasks函数 DriverActor提交任务,发送LaunchTask指令给CoarseGrainedExecutorBackend,接收到指令之后,让它内部的executor来发起任务,即调用空闲的executor的launchTask函数. 下面是Coars

【Spark Core】TaskScheduler源码与任务提交原理浅析2

引言 上一节<TaskScheduler源码与任务提交原理浅析1>介绍了TaskScheduler的创建过程,在这一节中,我将承接<Stage生成和Stage源码浅析>中的submitMissingTasks函数继续介绍task的创建和分发工作. DAGScheduler中的submitMissingTasks函数 如果一个Stage的所有的parent stage都已经计算完成或者存在于cache中,那么他会调用submitMissingTasks来提交该Stage所包含的Tas

【Spark】Stage生成和Stage源码浅析

引入 上一篇文章<DAGScheduler源码浅析>中,介绍了handleJobSubmitted函数,它作为生成finalStage的重要函数存在,这一篇文章中,我将就DAGScheduler生成Stage过程继续学习,同时介绍Stage的相关源码. Stage生成 Stage的调度是由DAGScheduler完成的.由RDD的有向无环图DAG切分出了Stage的有向无环图DAG.Stage的DAG通过最后执行的Stage为根进行广度优先遍历,遍历到最开始执行的Stage执行,如果提交的St

【Spark】DAGScheduler源码浅析2

引入 上一篇文章DAGScheduler源码浅析主要从提交Job的流程角度介绍了DAGScheduler源码中的重要函数和关键点,这篇DAGScheduler源码浅析2主要参考fxjwind的Spark源码分析 – DAGScheduler一文,介绍一下DAGScheduler文件中之前没有介绍的几个重要函数. 事件处理 在Spark 1.0版本之前,在DAGScheduler类中加入eventQueue私有成员,设置eventLoop Thread循环读取事件进行处理.在Spark 1.0源码

自己动手编译apache-tomcat-6.0.41-src源码

第一步:下载apache-tomcat-6.0.41-src 第二步:阅读BUILDING.txt.了解所需要的步骤. In order to build a binary distribution version of Apache Tomcat from a source distribution, do the following: (0) Download and Install a Java Development Kit 因为tomcat依赖于apache dbcp 源码进行编译,而

(9)ubuntu下hadoop1.0.4源码编译

本机环境: ubuntu 12.04  32位 jdk 1.7 (1)maven-3.2.2的安装 首先到maven官网下载,http://maven.apache.org/,这里我下载了最新版本,maven-3.2.2 解压到/usr/local/目录下: tar -zxvf  apache-maven-3.2.2-bin.tar.gz,并重命名为maven 修改 /etc/profile: 添加一下两个变量并保存: export M2_HOME=/usr/local/maven export