Spark期末复习(一)spark介绍

spark概述

  1. spark定义:spark是基于内存的快速、通用、易扩展的大数据分析计算引擎
  2. spark vs Hadoop
  • 从组成上看
Hadoopspark
在分布式服务器集群上存储海量数据并运行分布式应用的开源框架快速、通用、易扩展的大数据分析计算引擎
hdfs作为分布式存储系统存储所有数据,支持Hadoop的所有服务spark core提供最基础、最核心的功能
MapReduce是编程模型,作为Hadoop的分布式计算模型,是Hadoop的核心spark sql是spark操作结构化数据的组件
HBase是基于hdfs的分布式数据库spark streaming是针对实时数据进行刘计算的组件,提供了丰富的处理数据对API
  • 从框架上看:MR和Spark都是数据处理框架
  • 从功能上看:
    • spark更适合于迭代计算较多的运算
    • spark比Hadoop更通用:spark提供多种数据集操作类型,Hadoop只有map和reduce两种操作;spark编程模型比Hadoop更灵活;由于rdd的特性,spark不适用于异步细粒度更新状态的应用,不适合增量修改
    • 容错性:
    • 可用性:spark通过提供丰富的Scala、Java、python API以及交互shell来提高可用性;可以直接对很多hdfs进行数据的读写,支持spark on yarn
mapreducespark
数据存储机构磁盘hdfs文件系统使用内存构建弹性分布式数据集,rdd对数据进行运算和缓存
编程范式Map—ReduceDAG(有向无环图)
中间结果存储中间结果落地磁盘,IO及序列化、反序列化代价比较大中间结果存储于内存
运行方式task以进程方式维护,任务启动慢task以县城方式维护,进程启动快

Spark特点

快速的

很多任务都能秒级完成,与Hadoop相比,spark基于内存的计算快100倍,基于硬盘的计算快10倍

易用的

spark支持使用Scala、Java、python、R、sql等多种语言,同时支持80多种高级算法,用户可以快速构建不用的应用;
支持交互式的python和spark的shell

通用的

容纳了很多之前独立的、分布式系统所拥有的功能:批处理、迭代计算、交互查询、实时流计算、机器学习、图计算等。这些不同类型的处理可以在一个应用中使用,减少了开发和维护的成本,并且,之前需要维护不同的集群,现在只需要维护一个spark集群

无处不在

数据源:spark可以从任意地方读取数据,比如hdfs、json、csv、Parquet、RDBs、ES、Redis、Kafka等
应用程序运行:

  • 本地模式:开发测试及小数据量
  • 集群模式:Yarn,Standalone,Mesos
  • 容器中:K8s

Spark核心模块

体系架构

Spark core为核心部分,包含了Spark最基本、最核心的功能和基本分布式算子,基本功能有:任务调度、内存管理、故障修复以及和存储系统的交互

核心模块

  1. RDD:一个只读的,可分区的分布式数据集(分布式弹性数据集)。这个数据集的全部或部分课缓存在内存中,在多次计算间重用

    1. 基本操作:
      • Transformation:通过Scala集合或数据集构建新的RDD;通过已有的RDD构建新的RDD
      • Action: 通过RDD计算得到一个或一组值
  2. Spark SQL:用于分布式结构化数据的SDL查询和分析,在编写程序中,可直接使用SQL语句

  3. Spark Streaming:用于处理流数据的分布式流处理框架,它将数据以时间片为单位进行分割形成RDD,能够以比较小的时间间隔对流数据进行处理,严格意义上说是一个准实时处理系统

  4. Mllib:分布式机器学习库,在spark平台上对一些常用的机器学习算法进行分布式实现

  5. Graph X:分布式图处理框架,在Spark上实现了大规模图计算的功能,提供对图计算和图挖掘的各种接口

  6. 紧密集成的优点:

    1. 如果spark底层优化了,则基于底层的组件也优化
    2. 节省了各个组件组合使用时的部署、测试等时间
    3. 当向spark增加新组件时,其他组件可以立刻想用新组件等功能
    4. 无缝连接不同的处理模型

运行模式

  1. 本地模式Local Mode:将spark应用程序中任务task运行在一个本地JVM Process进程中,通常供开发测试或小数据集使用
    1. 启动一个JVM进程,运行所有task任务,每个task运行需要1core CPU
    2. 并行度parallelism决定同时运行几个task
    3. 设置2个CPU Core相当于同时运行两个task,相当于并行计算
  2. 集群模式:将spark应用运行在YARN集群或框架自身集群Strandalone,及Apache Mesos集群,启动多个JVM进程运行Task程序
    1. YARN集群模式:运行在yarn集群上,由yarn负责资源管理,spark负责任务调度和计算。好处:
      • 计算资源按需延伸
      • 集群利用率高
      • 共享递增存储,避免数据集群迁移
    2. Standlone集群模式(开发测试及生产环境使用):类似Hadoop yarn架构,典型的Master/Slaves模式,使用zookeeper搭建,避免Master单点故障(Master相当于yarn的RM,Worker类似于yarn的NM)
    3. Apache Mesos集群模式:运行在mesos资源管理器框架智商,由mesos负责资源管理,Spark负责任务调度和计算
    4. 三种模式的区别
  3. 云服务:spark2.3开始支持将spark开发应用运行到K8s上

spark总体流程

spark整体框架

spark运行流程

  • 基础概念:
    1. application:用户基于spark代码,由一个driver和多个executor组成
    2. application jar:装着spark应用程序的jar包。
    3. Driver program:是Spark的核心组件,一个运行Main方法的进程,负责创建Spark Context(Spark应用的入口,负责和整个集群交互,创建需要的变量,还包含集群的配置信息等);将用户提交的job转换为DAG图,根据策略将DAG图划分为多个stage,根据分区从而生成一系列的tasks,根据tasks要求想资源管理器申请资源;提交任务并检测任务状态。
    4. Executor:在工作节点上的进程,可以运行task,也可以将数据保存在内存和磁盘中。每个应用程序都有自己的executors,一个Work Node上可以有多个Executor
    5. Cluster Manager:负责获取集群资源的外部服务(如standerlone的Master和yarn的RM)
    6. Deploy Node:用来区分driver进程的运行位置。在cluster模式中,spark框架在集群内部启动driver,在client模式中,由submitter在集群外启动driver
    7. Worker Node:集群中任何可以运行spark应用程序代码的节点
    8. Task:最小的工作单元,会被送往executor执行,也是Stage的子集,以并行度来衡量,一个task对应一个RDD分区
    9. Job:一个job由许许多多的task,每个Action都会触发一个job,
    10. Stage:job的子集,一个job被拆分为多个Stage,可以在driver日志中观察到
  • 运行流程:spark提供多层分解的概念,spark组件将应用程序分解为内部执行的任务并提供执行容器,资源管理组件为spark组件提供资源管理和调度
    • spark组件:Driver Program;Executor
    • Spark任务:应用程序;job;stage;task
    • 资源管理组件:Yarn;Standalone(spark自带)
    • 运行整体流程:
      1.

执行组件

执行模块

RDD

scheduler

Storage

shuffle

运行

spark集群搭建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值