本篇笔记对字节跳动青训营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 部署方式
- Local Mode 本地测试/单进程多线程模式
- Standalone Mode 不需要外部服务,有完整的集群
- 最主流的-依赖于外部资源管理器( YARN / K8S )
- 下载编译、包概览、提交步骤略。Spark 提交后产生日志,可以通过 SparkUI 查看 Job 详细信息,Job 运行中通过 http://${driver_host}:$port 查看,Job 运行完通过 Spark History Server 查看(存在 HDFS 里),性能可以通过 TPC-DS / TPC-H 数据集测试性能
SparkCore原理解析
(待补充)