-
走进Spark
- 什么是Spark
- 是一个基于内存的,用于大规模数据处理(离线计算、实时计算、快速查询(交互式查询))的统一分析引擎,因为是基于内存的所以可以更快的完成任务
- 离线计算:离线计算一般存储在HDFS中使用MapReduce或Hive处理,离线计算启动进程,处理完成后销毁进程
- 实时计算:实时计算一般存储在消息队列中,使用Spark(DStream)或者Storm、Flink等其他实时计算框架,进程7*24小时运行都在
- 应用场景
- 流处理 : Spark Streaming可以处理实时数据流,并将其转换为可供分析和存储的批处理数据。
- 机器学习 :Spark提供了机器学习库,可以支持各种机器学习算法和模型训练。
- 特点
- 快: Spark 计算速度是 MapReduce 计算速度的10-100倍
- 易用: MapReduce 支持1种计算模型,Spark 支持更多的计算模型
- 通用: Spark 能够进行离线计算、交互式查询(快速查询)、实时计算、机器学习、图计算
- 兼容性:Spark 支持大数据中的 Yarn 调度,支持 mesos。可以处理 hadoop 计算的数据。
- 架构组件
- Spark Core: Spark 核心功能均由 Spark Core 模块提供,是 Spark 运行的基础。
- Spark SQL:Spark 的 SQL 查询和分析引擎,它可以将结构化数据转换为 RDD 数据集,然后使用 Spark 的优化算法来执行查询。
- Spark Streaming:Spark 的流处理引擎,它可以处理实时数据流并将其转换为 RDD 数据集,然后使用 Spark 的优化算法来执行查询。
- Spark MLlib:机器学习库,它提供了一组 API,用于训练和部署机器学习模型。
- Spark GraphX:的图计算库,它提供了一组 API,用于处理图数据
- 工作原理
- 应用程序初始化:Spark 应用程序首先在 driver 中初始化 SparkContext
- 数据分区:Spark 将数据分成多个分区,然后在集群中的不同节点上并行处理这些分区。
- 任务调度:Spark 的任务调度器将任务分配给可用的执行器。
- 数据传输:Spark 将数据传输到执行器以进行处理。
- 数据处理:执行器使用 RDD API 对数据进行处理。
- 基本概念
- RDD:弹性分布式数据集,是一种容错的、可以被并行操作的元素集合,是 Spark 对所有数据处理的一种基本抽象。
- DAG:有向无环图,是 Spark 中最重要的一个概念之一,它描述了数据的依赖关系。
- Transformation:转换操作,是 Spark 中最常用的一种操作,包括 map、filter、flatmap 等。
- Action:动作操作,是 Spark 中最基本的一种操作,包括 count、collect、saveAsTextFile 等。
- 常踩的坑
- SparkSQL查询优化:SparkSQL是Spark的一个模块,它提供了一种标准化的查询语言,可以轻松操作存储在各种存储系统中的数据。但是,如果查询优化不当,也会影响程序的运行效率
- 整合Hive报错: 解决方法是在spark-submit命令中添加上hive-site.xml配置文件。
- 数据倾斜问题: Spark SQL 的执行过程中,由于某些 key 的数据量过大,导致这些 key 对应的 partition 中的数据量过大,从而使得这些 partition 的计算时间过长,从而影响整个查询的执行效率
-
相关阅读:
ros_serial库
高等教育学:技能的形成
2023高教社杯数学建模E题思路代码 - 黄河水沙监测数据分析
Flutter利用GridView创建网格布局实现优美布局
java基于springboot+vue的高校教师人事管理系统 elementui
Python编程技巧 – 对象和类
Springboot项目RestController中函数参数注解使用
Mysql与Oracle的13点区别
Bored Ape Yacht Club 生态系统指南
Helm Deploy Online Rancher Demo
-
原文地址:https://blog.csdn.net/qq_36204764/article/details/133806097