码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-07-15 18:53:12      阅读:139      评论: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

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

标签:

原文地址:http://www.cnblogs.com/kevingu/p/4648734.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!