1)Spark(概述、运行模式)

什么是Spark:

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

Spark内置模块:
1)Spark(概述、运行模式)
  • SparkCore
    实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed DataSet,简称RDD)的API定义;
  • SparkSQL:是Spark用来操作结构化数据的程序包。通过Spark SQL,我们可以使用 SQL或者Apache Hive版本的SQL方言(HQL)来查询数据。SparkSQL支持多种数据源,比如Hive表、Parquet以及JSON等;
  • SparkStreaming
    是Spark提供的对实时数据进行流式计算的组件。提供了用来操作数据流的API,并且与Spark Core中的RDD API高度对应;
  • SparkMLlib:
    提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据 导入等额外的支持功能;
  • 集群管理器:
    Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计 算。为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器(Cluster Manager)上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个简易调度 器,叫作独立调度器;
Spark运行模式
  • Spark安装地址:

  • 重要角色

    • Driver(驱动器)
      Spark的驱动器是执行开发程序中的main方法的进程。它负责开发人员编写的用来创建SparkContext、创建RDD,以及进行RDD的转化操作和行动操作代码的执行。如果你是用spark shell,那么当你启动Spark shell的时候,系统后台自启了一个Spark驱动器程序,就是在Spark shell中预加载的一个叫作 sc的SparkContext对象。如果驱动器程序终止,那么Spark应用也就结束了。主要负责:
      • ①把用户程序转为作业(JOB)
        ②跟踪Executor的运行状况
        ③为执行器节点调度任务
        ④UI展示应用运行状况
    • Executor(执行器)
      Spark Executor是一个工作进程,负责在 Spark 作业中运行任务,任务间相互独立。Spark 应用启动时,Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。主要负责:
      • ①负责运行组成 Spark 应用的任务,并将结果返回给驱动器进程;
        ②通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算;
  • Local模式

    • local:
      所有计算都运行在一个线程中,没有任何并行计算,通常用于本机执行一些测试代码
    • local[K]:
      指定使用几个线程来计算
    • local[*]:
      直接安装CPU最多cores来设置线程数
  • Standalone模式
    构建一个由Master+Slave构成的Spark集群,Spark运行在集群中
    1)Spark(概述、运行模式)

  • Yarn模式(重点)
    Spark客户端直接连接Yarn,不需要额外构建Spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点;
    yarn-client:Driver程序运行在客户端,适用于交互、调试,希望立即看到app的输出;
    yarn-cluster:Driver程序运行在由RM(ResourceManager)启动的AP(APPMaster)适用于生产环境;