阅读 81

Spark功能点思维导图|【收藏】

2019年就快结束啦,又到了总结过去展望未来的时候,最近和小伙伴们在进行Spark的功能的梳理,以便进一步研究学习。

正文

这么大的图不收藏吗

Spark功能点(文字版)

Spark Streaming

Spark Streaming是核心Spark API的扩展,可实现实时数据流的可伸缩,高吞吐量,容错流处理。数据可以从像 Kafka, Flume, Kinesis, 或 TCP sockets许多来源摄入,并且可以使用与像高级别功能表达复杂的算法来处理map,reduce,join和window。最后,可以将处理后的数据推送到文件系统,数据库和实时仪表板。实际上,也可以在数据流上应用Spark的 机器学习和 图形处理算法

DStreams

Discretized Streams(离散流)

离散流或DStream是Spark Streaming提供的基本抽象。它表示连续的数据流,可以是从源接收的输入数据流,也可以是通过转换输入流生成的已处理数据流。在内部,DStream由一系列连续的RDD表示,这是Spark对不可变的分布式数据集的抽象。

DStream中的每个RDD都包含来自特定间隔的数据

  • Input DStreams and Receivers

    • Receiever

      每个输入DStream都与一个Receiver对象关联,该对象从源接收数据并将其存储在Spark的内存中以进行处理。

      • 可靠
      • 不可靠
    • 基本来源(StreamingContext API提供Receiver)

      • 文件系统
      • 套接字连接
    • 高级来源(自定义Receiver)

      • Kafka
      • Flume
      • Kinesis
      • Twitter
    • 自定义数据源

    • Queue of RDDs as a Stream

  • Output Operations on DStreams

    • Hdfs

    • DataBases

      • Hbase
      • MySql
    • DashBoards

  • DataFrame and SQL Options

  • Transformations on DStreams

    • RDD-to-RDD

    • 连接操作

      • Stream-stream joins
      • Stream-dataset joins
    • 窗口操作

      • reduceByWindow
      • reduceByKeyAndWindow
      • countByValueAndWindow
      • ...
  • graph processing algorithms

  • MLlib

    • streaming ML algorithms

      • 流线型回归
      • 流KMeans
      • ...
    • 离线数据训练模型在线应用于流数据

    • 流数据训练模型

      • 训练好的模型在线应用于流数据

容错机制

  • Cashing/Persistence

    • 持久化(缓存)到内存
    • 设置持久性级别
  • 容错语义

    • 三种保证

      • At most once
      • Exactly once
      • At least once
  • CheckPoint

    • Metadata checkpointing

      将定义流计算的信息保存到HDFS等容错存储中,用于从运行流应用程序的驱动程序的节点的故障中恢复

    • Data checkpointing

      某些状态转换中这是必须的,这些转换将跨多个批次的数据进行合并。在此类转换中,生成的RDD依赖于先前批次的RDD,这导致依赖项链的长度随时间不断增加。为了避免恢复时间的这种无限制的增加(与依存关系链成比例),有状态转换的中间RDD定期 检查点到可靠的存储(例如HDFS)以切断依存关系链。

  • Accumulators, Broadcast Variables, and Checkpoints

    无法从Spark Streaming中的检查点恢复累加器和广播变量。如果启用检查点并同时使用“ 累加器”或“ 广播”变量 ,则必须为“ 累加器”和“ 广播”变量创建延迟实例化的单例实例, 以便在驱动程序发生故障重新启动后可以重新实例化它们

    • 创建延迟实例化的单例实例

Core

RDDs

  • RDD算子

    • Transformations
    • Actions
  • 集合并行化

  • 外部数据集

    • Local File
    • HDFS
    • Cassandra
    • HBase
    • S3
    • other Hadoop InputFormat
  • 持久化

    • 缓存

    • 存储级别

      • MEMORY_ONLY

      • MEMORY_AND_DISK

      • MEMORY_ONLY_SER

        • Java and Scala
      • MEMORY_AND_DISK_SER

        • Java and Scala
      • DISK_ONLY

      • MEMORY_ONLY_2 etc.

      • OFF_HEAP

        • off-heap memory
    • 容错

      • Lineage
    • LRU

      • Removing Cache Data

闭包

  • Local vs. cluster modes

Shuffle操作

  • Sorted Based Shuffle

共享变量

  • 广播变量

    • Broadcast Variables
  • 累加器

    • Accumulators

Spark SQL

SparkSession

  • Spark application configuration
  • Creating DataSet/DataFrame
  • SQL API
  • SparkContext
  • catalog元数据

Dataset/DataFrame

  • Creating DataSet/DataFrame

    • RDD

    • 外部数据源

      • HDFS
  • Data Sources

    • LOAD/SAVE操作

    • 列式存储格式文件

      • Parquet Files
      • ORC Files
    • 非结构化数据文件

      • CSV Files
      • Text Files
    • 半结构化数据文件

      • JSON Files
    • 非结构型数据库

      • Hbase
    • 结构型数据库

      • Mysql

        • JDBC/ODBC
        • Spark SQL CLI
      • Hive

        • SparkSession.enableHiveSupport
        • Spark SQL CLI
  • DataSet/DataFrame/RDD转换

  • DataSet/DataFrame API

    • SQL语句

      • catalog元数据

        • Hive metastore
        • In-memory
      • SQL语言类别

        • DDL
        • DML
        • DQL
        • DCL
      • 内置函数

        • 单行函数
        • 聚合函数
    • DSL语句

      • 领域特定语言

        • .filter
        • .select
  • schema API

    • 展示schema
    • 定义schema

UDF

  • UDAF

    • Untyped UDAF
    • Typed UDAF
  • UDTF

Spark SQL on Hive

  • 已部署Hive框架
  • 未部署Hive框架

Performance Tuning

  • Caching Data In Memory
  • Other Configuration Options
  • Broadcast Hint for SQL Queries

Spark SQL技术点

  • 执行流程

    • Logical Plan

      • SQL Parse

        • UnresolvedLogicalPlan

          • DDLParser
          • SqlParser
          • SparkSQLParser
      • Catalyst Analyzer

        • ResolvedLogicalPlan
      • Catalyst Optimizer

        • OptimizedLogicalPlan
    • SparkPlanner

      • 父类:QueryPlanner

      • Strategies

        • LeftSemiJoin
        • HashJoin
        • PartialAggregation
        • BroadcastNestedLoopJoin
        • TakeOrdered
    • Physical Plan

      • prepareForExecution

        • Executable PhysicalPlan
      • execute

        • SchemaRDD
  • 性能优化

    • 减少或避免出现Shuffle过程

      • 统一分区策略
      • 广播机制
    • 数据倾斜

      • 自定义Partitioner
    • 内存缓存数据

    • 核心属性

      • spark.driver.cores
      • spark.driver.memory
      • spark.executor.cores
      • spark.executor.memory
      • spark.sql.shuffle.partitions

Delta Lake

数据湖

MLlib

Spark AI

GraphX

Spark Graph

Structured Streaming

Streaming Dataset/Streaming DataFrame

  • Creating Streaming Dataset/Streaming DataFrame

    • File source

      • 文件生成工作流
      • 文件、文件夹生成自动分区工作流
    • Kafka source

      • Streaming模式生成工作流
      • Batch模式生成工作流
    • Socket source

    • Rate source

  • SQL query

  • Window Operations on Event Time

    • 窗口生成规则
    • 窗口工作方式
  • Watermark

    • Updata Mode
    • Append Mode
    • Complete Mode(必须提前聚合)
  • Streaming Deduplication

  • Join Operations

    • Stream-Static数据join操作
    • Stream-Stream数据join操作
  • Trigger

    • Trigger.ProcessingTime(时间间隔)
    • Trigger.Once()
    • Trigger.Continuous(Checkpoint间隔)
  • 管理与监控工作流

    • Managing Streaming Queries
    • Monitoring Streaming Queries
  • Checkpoint

Continuous Processing

  • Sources

    • Kafka source
    • Rate source
  • Sinks

    • Kafka sink
    • Memory sink
    • Console sink

监控

StreamingListener界面监控

  • 接收器状态
  • 处理时间

Job Web UI

  • Streaming tab

    使用StreamingContext时, Spark Web UI会显示一个附加Streaming选项卡

    • 正在运行的接收器

      • 接收器状态
      • 接收到的记录数
      • 接收器错误
    • 已完成的批处理

      • 批处理时间
      • 排队延迟
  • 4040 etc.

    该端口是活动的,如果4040被占用,会依次类推到4041,4042,4043……

    • Stages and Tasks
    • Rdd大小及内存使用
    • 环境信息
    • running executors
  • eventLog.enabled

    • true

Spark's History Server

  • 端口

    • 18081
  • kerberos

  • 访问控制

    • acls

Rest API

  • ip:18081/api/v1

    • 历史记录服务

      • app-id
  • ip:4040/api/v1

    • 正在运行的任务

指标系统

高级分析

  • 系统分析工具

    • dstat
    • iostat
    • iotop
  • JVM工具

    • jstack
    • jmap
    • jstat
    • jconsole

部署方式

Local

YARN

Mesos

Standalone

Kubernetes

编程接口

Scala

Java

Python

R

SQL

SQL并不特指一门编程语言,Spark SQL是用于结构化数据处理的Spark模块,2.x引入了ANSI-SQL解析器,提供标准化SQL的解析功能,Spark现在可以运行完整的99个TPC-DS查询,包含大多数SQL 2003标准的特性。

Shell

ps:图中没有对GraphX、MLlib组件进行描述

小声:mind导出的原图太大,上传后不清晰,因此列了文字。

关注下面的标签,发现更多相似文章
评论