当前位置: 首页 > news >正文

Spark专题-第一部分:Spark 核心概述(1)-Spark 是什么?

众所周知,教学文档总该以理论部分作为开篇,于是我们这篇Spark专题同样会以一堆理论和专有名词开始,笔者会尽可能的让专业词汇通俗易懂

第一部分:Spark 核心概述

Spark 是什么?

1. 大数据时代的"超级赛车"

举个例子,你有一个巨大的图书馆(HDFS),里面有数百万本书(数据)。你需要找出所有提到"人工智能"的书籍并统计次数。

  • 传统方式(MapReduce):你雇佣一群人,每人拿几本书,找到关键词后记录下来,然后把所有记录交给一个人汇总。这个过程需要反复往返图书馆书架(磁盘IO),速度较慢。

  • Spark 方式:你给每个人一个神奇的书架(内存),他们可以一次性拿多本书放在手边,快速查找并记录,大大减少了往返时间。

Spark 就是一个基于内存计算的分布式大数据处理引擎,它比传统的 MapReduce 快 10-100 倍!

2. Spark 的四大特性

  1. 速度快

    • 内存计算:减少磁盘 I/O,中间结果保存在内存中
    • 查询优化:先进的查询优化器和代码生成器
  2. 易用性

    • 多语言支持:Java, Scala, Python, R
    • 高级 API:只需要关注"做什么",而不是"怎么做"
  3. 通用性

    • Spark 生态系统提供一站式解决方案:
Spark Core
核心引擎
Spark SQL
Spark Streaming
MLlib
机器学习
GraphX
图计算
结构化数据处理
实时流处理
机器学习算法
图分析
  1. 兼容性
    • 多种数据源:HDFS, HBase, Cassandra, S3, Local FS…
    • 多种部署模式:Standalone, YARN, Kubernetes, Mesos

3. Spark 的核心架构

分配任务 & 监控
分配资源
分配资源
分配资源
工作节点3
Executor
工作进程
Task
计算单元
Cache
内存缓存
工作节点2
Executor
工作进程
Task
计算单元
Cache
内存缓存
工作节点1
Executor
工作进程
Task
计算单元
Cache
内存缓存
Driver Program
大脑节点
Cluster Manager
资源调度员

核心组件解析

  • Driver:大脑,负责协调整个作业的执行
  • Cluster Manager:资源调度员,负责分配计算资源
  • Worker Node:干活的工作人员,每个节点可以运行一个或多个 Executor
  • Executor:工作进程,负责执行具体的计算任务
  • Task:最小工作单元,处理一个数据分区的计算

4. Spark 与 Hadoop 的关系

应用程序层
Spark, Hive, HBase
计算引擎层
Spark, MapReduce
资源管理层
YARN, Mesos
存储层
HDFS, S3

Spark 不是要取代 Hadoop,而是增强它!常见的搭配是:

  • 存储:Hadoop HDFS(经济可靠的大规模存储)
  • 计算:Spark(高速内存计算)
  • 资源管理:Hadoop YARN(高效的资源调度)

5. 处理流程对比

多次磁盘IO
Spark 优化流程
内存计算
输入数据
Pipeline 处理
输出结果
传统 MapReduce 流程
Map 阶段
输入数据
写入磁盘
Shuffle
从磁盘读取
Reduce 阶段
输出结果

6. 为什么要学习 Spark?

  1. 行业标准:大多数大数据岗位要求掌握 Spark
  2. 处理能力:能够处理 PB 级别数据
  3. 灵活性:支持批处理、流处理、机器学习和图计算
  4. 生态系统:丰富的库和活跃的社区支持
  5. 职业发展:掌握 Spark 是大数据工程师的核心技能

其实简单来说,可以看看招聘软件上对数据工程师的要求,大多会提到spark,所以咱的目标很明确,可恶,这里不能发表情包,不然有很多合适的表情包可以放在这

代码示例:创建一个简单的 Spark 应用

# 导入必要的库
from pyspark.sql import SparkSession# 创建 SparkSession - 所有 Spark 功能的入口点
spark = SparkSession.builder \.appName("MyFirstSparkApp") \          # 设置应用名称.config("spark.executor.memory", "2g") \  # 配置执行器内存.getOrCreate()                         # 获取或创建会话# 打印 Spark 版本信息
print(f"Spark version: {spark.version}")# 创建一个简单的数据集
data = [("Alice", 28), ("Bob", 35), ("Charlie", 42)]
columns = ["Name", "Age"]# 创建 DataFrame
df = spark.createDataFrame(data, columns)# 展示数据
df.show()# 执行简单查询
df.filter(df.Age > 30).show()# 停止 SparkSession
spark.stop()

输出结果

Spark version: 3.3.0
+-------+---+
|   Name|Age|
+-------+---+
|  Alice| 28|
|    Bob| 35|
|Charlie| 42|
+-------+---++-------+---+
|   Name|Age|
+-------+---+
|    Bob| 35|
|Charlie| 42|
+-------+---+

只是用python举个例子,不会python也不影响,毕竟实际工作中,应该会有界面化的软件让你直接写sql,但我不想使用公司的软件写博客,就只能用python凑合了


文章转载自:

http://NcA3HElp.bndkf.cn
http://d63Bw1tD.bndkf.cn
http://84z4EJ1N.bndkf.cn
http://wVhYsCtV.bndkf.cn
http://ifMvp8bT.bndkf.cn
http://CWvFhY86.bndkf.cn
http://BxWO0krx.bndkf.cn
http://oLp8RIYJ.bndkf.cn
http://xJeTcEec.bndkf.cn
http://PRcce4m2.bndkf.cn
http://iXPzr4bj.bndkf.cn
http://Rm6g2Nc2.bndkf.cn
http://8nvqqJQV.bndkf.cn
http://HGTXhcqU.bndkf.cn
http://tHUSSY3I.bndkf.cn
http://pjIQkFmf.bndkf.cn
http://q8hd9nBs.bndkf.cn
http://FGaaD5Mo.bndkf.cn
http://QESdmxMB.bndkf.cn
http://i9Otu4jv.bndkf.cn
http://21qrYZIS.bndkf.cn
http://DFToUjZV.bndkf.cn
http://UahMAD2I.bndkf.cn
http://SJHMzaSS.bndkf.cn
http://ofTaPXyA.bndkf.cn
http://ntbo3hh4.bndkf.cn
http://b6sgldt4.bndkf.cn
http://BlN77z8H.bndkf.cn
http://tU6xVw8J.bndkf.cn
http://qXnPxdfm.bndkf.cn
http://www.dtcms.com/a/383147.html

相关文章:

  • 使用buildroot创建自己的linux镜像
  • MapReduce核心知识点总结:分布式计算的基石
  • 当大模型走向“赛场”:一场跨越教育、医疗与星辰的AI创新马拉松
  • 2025年IEEE TCE SCI2区,不确定环境下多无人机协同任务的时空优化动态路径规划,深度解析+性能实测
  • Python 上下文管理器:优雅解决资源管理难题
  • 主流反爬虫、反作弊防护与风控对抗手段
  • C语言柔性数组详解与应用
  • 【C++】22. 封装哈希表实现unordered_set和unordered_map
  • ARM Cortex-M 中的 I-CODE 总线、D-CODE 总线和系统总线
  • HTML5和CSS3新增的一些属性
  • 用C语言打印乘法口诀表
  • Docker desktop安装Redis Cluster集群
  • 拼多多返利app的服务自动扩缩容策略:基于K8s HPA的弹性架构设计
  • 每日前端宝藏库 | Lodash
  • LeetCode 978.最长湍流子数组
  • Java连接电科金仓数据库(KingbaseES)实战指南
  • 2025 年 AI 与网络安全最新趋势深度报告
  • PDF发票提取工具快速导出Excel表格
  • 2. BEV到高精地图的全流程,本质上是自动驾驶**车端(车载系统上传bev到云端)与云端(云端平台处理这些bev形成高精地图)协同工作
  • Nature 子刊:儿童情绪理解的认知发展机制
  • git pull还是git pull -r?
  • 使用 LMCache + vLLM 提升 AI 速度并降低 GPU 成本
  • 快速排序:高效的分治排序算法
  • stap用法
  • 鸿蒙Next ArkWeb网页文件上传与下载完全指南
  • 云轴科技ZStack AI多语种翻译平台建设实践
  • Android SDK中关于BoardConfig.mk的宏定义继承和覆盖规则
  • 链表与数组
  • 【Python】字符串
  • 【Python】实现一个文件夹快照与比较工具