• 重温spark基本原理


    (一)spark特点:

    1、高效,采用内存存储中间计算结果,并通过并行计算DAG图的优化,减少了不同任务之间的依赖,降低了延迟等待时间。

    2、易用,采用函数式编程风格,提供了超过80种不同的Transformation和Action算子,如map,reduce,filter,groupByKey,sortByKey,foreach等。

    3、通用,提供批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。

    4、兼容,能够与很多开源组件兼容使用。

    (二)基本概念:

    • RDD:是弹性分布式数据集(Resilient Distributed Dataset)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。
    • DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系。
    • Driver Program:控制程序,负责为Application构建DAG图。
    • Cluster Manager:集群资源管理中心,负责分配计算资源。
    • Worker Node:工作节点,负责完成具体计算。
    • Executor:是运行在工作节点(Worker Node)上的一个进程,负责运行Task,并为应用程序存储数据。
    • Application:用户编写的Spark应用程序,一个Application包含多个Job。
    • Job:作业,一个Job包含多个RDD及作用于相应RDD上的各种操作。
    • Stage:阶段,是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”。
    • Task:任务,运行在Executor上的工作单元,是Executor中的一个线程。
    • 总结:Application由多个Job组成,Job由多个Stage组成,Stage由多个Task组成。Stage是作业调度的基本单位。

    (三)部署模式:

    1. Local:本地运行模式,非分布式。
    2. Standalone:使用Spark自带集群管理器,部署后只能运行Spark任务。
    3. Yarn:Haoop集群管理器,部署后可以同时运行MapReduce,Spark,Storm,Hbase等各种任务。
    4. Mesos:与Yarn最大的不同是Mesos 的资源分配是二次的,Mesos负责分配一次,计算框架可以选择接受或者拒绝。

     (四)RDD数据结构:

    RDD全称Resilient Distributed Dataset,弹性分布式数据集,它是记录的只读分区集合,是Spark的基本数据结构。

    RDD代表一个不可变、可分区、里面的元素可并行计算的集合。

    一般有两种方式可以创建RDD,第一种是读取文件中的数据生成RDD,第二种则是通过将内存中的对象并行化得到RDD。

     

    RDD的操作有两种类型:即Transformation操作和Action操作。

      转换操作是从已经存在的RDD创建一个新的RDD,而行动操作是在RDD上进行计算后返回结果到 Driver。

    Transformation操作都具有 Lazy 特性,即 Spark 不会立刻进行实际的计算,只会记录执行的轨迹,只有触发Action操作的时候,它才会根据 DAG 图真正执行。

     

    操作确定了RDD之间的依赖关系。

    RDD之间的依赖关系有两种类型,即窄依赖和宽依赖。窄依赖时,父RDD的分区和子RDD的分区的关系是一对一或者多对一的关系。而宽依赖时,父RDD的分区和子RDD的分区是一对多或者多对多的关系。

    宽依赖关系相关的操作一般具有shuffle过程,即通过一个Patitioner函数将父RDD中每个分区上key不同的记录分发到不同的子RDD分区。

  • 相关阅读:
    mongodb 安装为windos service
    30分钟搭建一个小型网站框架(python django)
    WAL学习
    postgres读写性能测试(本地、NFS)
    小麦带你看postgres(代码模块结构)
    使用zookeeper实现分布式master选举(c 接口版本)
    Alluxio1.0.1最新版(Tachyon为其前身)介绍,+HDFS分布式环境搭建
    CAF(C++ actor framework)(序列化之复杂类,分析 还有自己不懂的细思恐极函数实现)(三)
    CAF(C++ actor framework)(序列化之类,无需序列化,直接传)(二)
    CAF(C++ actor framework)(序列化之结构体,任意嵌套STL)(一)
  • 原文地址:https://www.cnblogs.com/linkmust/p/11294083.html
Copyright © 2020-2023  润新知