zoukankan      html  css  js  c++  java
  • 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的方式。

    Architecture of Spark-0.7

     

    END

  • 相关阅读:
    [Git]01 如何安装和配置
    [ext4]09 磁盘布局
    [ext4]磁盘布局
    [ext4]01 磁盘布局
    [工具技巧] SecureCRT使用技巧 V1.0
    [内存管理]管理图解v0.1 v0.2 v0.3
    内核源码目录结构
    共享内存删除的安全“陷阱”
    基于header的一些常用指令详解
    18、前端知识点--自定义指令
  • 原文地址:https://www.cnblogs.com/kevingu/p/4648734.html
Copyright © 2011-2022 走看看