• 【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申请资源,实现计算和资源的解耦

  • 相关阅读:
    浅尝Flutter
    深度解析 PyTorch Autograd:从原理到实践
    Redis持久化
    【JavaScript】实现仿windows计算器(完整版)
    MySQL中的隐式转换(Implicit Conversion)
    检测opencv是否安装成功
    等保测评中web应用防火墙怎么选择?
    SwiftUI Swift 多个 sheet
    matlab习题 —— 矩阵的常规运算
    SPA项目开发之首页导航+左侧菜单
  • 原文地址:https://blog.csdn.net/wanger61/article/details/127692350