• 【Spark学习笔记】(一)—— Spark 概述和 WordCount


    一、Spark 概述

    Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎

    1. Spark与Hadoop

    Spark的主要功能是用于数据计算,所以Spark一直被认为是 Hadoop 框架的升级版

    Spark在传统 MapReduce 计算框架的基础上,利用其计算过程的优化,大大加快了数据分析、挖掘的运行和读写速度,并将计算单元缩小到更适合并行计算和重复使用的RDD计算模型

    Spark和Hadoop的根本差异是多个作业之间的数据通信问题:Spark多个作业之间的数据通信是基于内存,而Hadoop是基于磁盘

    在绝大多数计算场景中,Spark比MapRudecu更有优势,但Spark是基于内存的,所以在实际生产环境的部署中对内存资源的要求更高

    2. Spark核心模块
    • Spark Core:提供Spark最核心最基础的功能
    • Spark SQL:用来操作结构化数据
    • Spark Streaming:针对实时数据进行流失计算
    • Spark MLlib:机器学习算法库
    • Spark GraphX:面向图计算的库

    二、 WordCount

    实现思路请添加图片描述

    实现代码

    // 建立和Spark框架的连接
    val sparConf = new SparkConf().setMaster("local").setAppName("WordCount")
    val sc = new SparkContext(sparConf)
    
    // 1. 读取文件,逐行读取数据
    val lines: RDD[String] = sc.textFile("1.txt")
    // 2. 将每行数据拆分为一个个单词
    val words: RDD[String] = lines.flatMap( .split(" "))
    // 3. 单词进行转换 (hello,1)
    val wordToOne = words.map{
        word => (word, 1}
    // 4.对相同的key的value作聚合,极简原则
    val wordToCount = wordToOne.reduceByKey(_+_)
    // 5. 转换结果采集到控制台打印
    val array: Array[(String, Int)] = wordToCount.collect()
    array.foreach(print)
    // 关闭Spark连接
    sc.stop()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    三、Spark核心组件

    请添加图片描述

    1. 计算组件

    Spark采用了master-slave结构

    Driver为master,负责管理整个集群中的作业调度

    • 将用户程序转换为job
    • 在Executor之间调度任务task
    • 跟踪Executor的执行情况

    Executor为slave,负责实际执行任务

    • Executors是运行在工作节点(Worker)中的一个JVM进程,是集群中专门用于计算的节点。
    • 在提交应用中,可以通过参数指定计算节点的个数和使用的资源(内存大小和CPU核数
    • 可以通过自身的块管理器为RDD提供缓存,使任务在运行时充分利用缓存数据加速运算
    2. 资源组件

    Master负责资源的调度和分配,并进行集群的监控
    Worker:由Master分配资源对数据进行处理和计算

    ApplicationMaster:Driver通过ApplicationMaster向Master申请资源,实现计算和资源的解耦

  • 相关阅读:
    Ruby和面向对象技术
    虚拟网络适配器的实现
    湘潭大学软件工程数据库2(题型,复习资源和计划)
    Android 10.0后创建文件
    mysql 数据库迁移
    二十四节气之处暑
    MIT CS143 lecture 02 Overview of COOL
    【C++ 学习 ㉓】- 详解红黑树
    目标检测tricks总结(记录)
    哈希及其应用
  • 原文地址:https://blog.csdn.net/wanger61/article/details/127692350