本篇笔记对字节跳动青训营7.26日刘畅老师讲授的 Spark 原理与实践的内容做一个复习总结。


Spark概述

  • 特点:大规模数据分析的统一引擎,多语言支持,单机或集群。流/批数据(mini-batch),快速的 SQL 分析,PB 级数据分析,单机机器学习易拓展到集群。
  • 核心组件

    • SparkCore:核心组件,包括任务调度、内存管理、错误恢复、存储、系统交互
    • SparkSQL:操作结构化的数据,可以通过其直接交互式查询 Hive 等数据源
    • Spark Structured Streaming:Spark提供的流式计算框架,支持高吞吐的、可容错处理的实时流式数据。
    • MLlib:Spark 提供的机器学习算法程序库,包括基础的机器学习算法和模型评估、数据导入导出等功能
    • GraphX:分布式图处理框架,图计算和图挖掘 API。
  • 数据源丰富:内置的 text、Parquet / ORC、json / csv、JDBC,自定义 DataSource V1 / V2 两个版本的 API、HBase / Mongo / ElasticSearch 等

  • Spark 运行架构:Driver Program 控制应用节点(负责作业的任务调度的 gvm 进程,运行程序 main 函数,生成 SparkContext 上下文,控制应用的生命周期),一个 Driver Program 仅连接一个 Cluster Manager, Cluster Manager 控制整个集群,负责资源调度,监控 Worker Node (从节点,含 Executor、Cache 和 Task,控制计算节点,Task 执行)。Driver 会分出任务的 stage ,创建 Task 并下发,Executor 准备环境和依赖,执行 Task 并向 Driver 返回状态,直到Task 执行完成或者达到上限。

Spark架构

  • Spark 部署方式

    • Local Mode 本地测试/单进程多线程模式
    • Standalone Mode 不需要外部服务,有完整的集群
    • 最主流的-依赖于外部资源管理器( YARN / K8S )
  • 下载编译、包概览、提交步骤略。Spark 提交后产生日志,可以通过 SparkUI 查看 Job 详细信息,Job 运行中通过 http://${driver_host}:$port 查看,Job 运行完通过 Spark History Server 查看(存在 HDFS 里),性能可以通过 TPC-DS / TPC-H 数据集测试性能

SparkCore原理解析

(待补充)


SparkSQL原理解析


实践与挑战

最后修改:2022 年 07 月 28 日
如果觉得我的文章对你有用,请随意赞赏