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

[hadoop] 初识Spark

初识Spark采用的方法是:由新手不断地追问老手问题,老手给出一定的回答。
在这个过程中,新手会慢慢理解Spark

参考资料:

  1. 《Hadoop 3.x大数据开发实战》

文章目录

  • 参考资料:
  • 1
    • 1.1
    • 1.2
  • 2
  • 3
    • 3.1
  • 4
  • 5
  • 5
    • 5.1
  • 6
    • 6.1
    • 6.2

1

Spark集群的启动过程是由Spark集群外的一台计算机,向Spark集群中的一个节点发送启动消息吗?

在标准的 Spark 独立部署(Standalone)模式下,集群的启动过程通常不是由集群外的一台计算机发送远程消息触发的,而是直接在集群内部的一台机器上执行启动脚本来完成的
你(管理员)直接登录到计划作为 Master 节点的那台机器上。
在这台机器上运行 Spark 提供的启动脚本(例如 start-all.sh)。

  1. 该脚本会首先在当前机器上启动 Master 进程。
  2. 接着,脚本会读取本地的 slaves 配置文件,获取所有 Worker 节点的地址。
  3. 脚本通过 SSH 远程连接到这些 Worker 节点,并在它们上面分别启动 Worker 进程。
  4. Worker 进程启动后,会主动向 Master 发送注册消息,完成集群的组建。

你提到的“集群外的一台计算机”,通常是在集群已经启动并正常运行后,用来提交计算任务(Application)的。
执行者: 集群外的客户端机器(比如你的开发电脑或边缘服务器)。
动作: 使用 spark-submit 命令向已经运行中的 Spark 集群提交作业。
过程:

  1. 外部的客户端通过 spark-submit 指定 Master 的地址(如 --master spark://your-master-ip:7077)。
  2. 客户端会向集群的 Master 节点发送请求,申请资源来运行你的程序。
    Master 调度资源,通知 Worker 启动 Executor 来执行具体的任务。

1.1

spark-submit就是客户端程序吗?

spark-submit 本身不是客户端程序,它只是客户端机器上的一个启动脚本(命令行工具)
当你按下 spark-submit 这个“按钮”时,它会根据你的指令,在你的本地机器(客户端机器)上真正启动一个 JVM 进程,这个进程才是 Spark 的客户端程序(也就是 Driver 驱动)。

1.2

那我写的.py程序就是那个客户端程序吗?

你写的 .py 程序是客户端程序(Driver)的核心逻辑和灵魂,但严格来说,它并不等同于最终在后台运行的那个完整的“客户端程序进程”。

  1. 启动 JVM 进程(诞生导演):spark-submit 脚本会在后台启动一个真实的 JVM(Java虚拟机)进程。这个 JVM 进程才是真正的“导演”(Driver),它包含了 Spark 的核心引擎(用 Scala/Java 编写)。
  2. 加载你的剧本:这个 JVM 进程会通过一个叫做 Py4J 的桥梁,启动一个 Python 解释器,并把你写的 .py 程序加载进来。
  3. 翻译与指挥:当你的 .py 代码中写到 df.filter(…) 或 rdd.map(…) 时,Python 解释器会通过 Py4J 把这些指令翻译给背后的 JVM 导演。JVM 导演再把这些指令转化成具体的任务(Task),分发给集群里的 Worker 去执行。

2

可以向Spark集群提交 x=1+1; print(x)的python程序吗?
我可以向Spark集群提交不使用Spark API 只使用python标准库的API的python程序吗?

完全可以。
你可以向 Spark 集群提交一个完全不使用 Spark API(比如不创建 SparkContext 或 SparkSession)、只使用 Python 标准库(如 math、json、datetime 等)的普通 Python 程序。
————
当你通过 spark-submit 提交一个完全不初始化 SparkContext 的脚本时,幕后流程是这样的:

  1. 启动 Driver 进程:Spark 集群会按照标准流程,在你的客户端机器(Client 模式)或集群内部的某个节点(Cluster 模式)上启动一个 Driver 进程。
  2. 执行纯 Python 逻辑:Driver 进程会唤起 Python 解释器,并逐行执行你脚本里的代码。由于你的代码中没有任何 Spark 的分布式算子(如 map, reduce, filter 等),Spark 的分布式计算引擎实际上不会被触发。
  3. 任务结束:Python 解释器执行完所有的标准库逻辑和打印语句后,Driver 进程会认为整个应用程序已经成功运行完毕,随即正常退出。

可以向Spark集群中提交MapReduce程序吗?

不能直接提交原生的 MapReduce 程序。
spark-submit 是 Spark 专属的提交脚本,它只能识别和运行基于 Spark API(如 Spark Core、Spark SQL)编写的程序。它并不认识原生 Hadoop MapReduce 的 Mapper 和 Reducer 类,也无法解析 MapReduce 的 Job 配置。

3

什么条件下,才会让 Driver主控进程 要求其他Work节点创建Executor进程?
在资源条件满足的情况下,什么条件下,才会让 Driver主控进程 要求其他Work节点创建Executor进程?

如果不初始化 SparkContext(或者在 PySpark 中不创建 SparkSession),你的程序绝对不会要求 Worker 节点创建任何 Executor 进程。

3.1

Spark的Dirve主控进程,先和Spark集群的什么节点进行交互?

Driver 启动后,会最先与 Spark 集群的 Master 节点 进行交互。
交互过程:Driver 会主动连接到 Master 节点并向其注册,告诉 Master 自己需要多少 CPU 和内存资源来运行任务。Master 收到请求后,会根据集群中 Worker 节点的资源情况,指挥合适的 Worker 去启动 Executor 进程。

4

同样一组计算机,可以同时组成Spark集群和YARN集群吗?

完全可以

Spark集群之所以叫Spark集群,不是因为这个集群上运行Spark应用程序,而是因为这个集群依靠Spark的资源调度器而存在
不同种类的资源调度器将同一组计算机组织成不同种类的集群,集群的本质特征来源于资源调度器
同一组物理计算机,安装不同的资源调度软件,就会表现出完全不同的集群行为和特性。
资源调度器就是集群的“大脑”,它决定了这组计算机如何被组织、如何分工以及如何处理任务。不同的调度器架构,赋予了集群完全不同的运行逻辑

5

YARN集群的Web界面的服务器是哪一个节点支持的,还是说所有的节点都有?

本质上,这个 Web 界面是 ResourceManager(资源管理器) 进程内部自带的一个嵌入式 Web 服务器(通常基于 Jetty 实现)。
ARN 集群的 Web 界面并不是所有节点都有,它是由特定的核心节点——ResourceManager 来提供支持的。
在一个标准的 YARN 集群中,各个节点的分工非常明确,只有运行了 ResourceManager 进程的节点,才会提供那个大家常用的、用于查看集群整体状态的 Web 界面(默认 8088 端口)。

YARN集群中,主节点启动的守护进程叫什么,从节点呢?

主节点(Master Node):启动的守护进程叫 ResourceManager。
从节点(Slave/Worker Node):启动的守护进程叫 NodeManager。

YARN集群架构是主从架构,Spark集群架构也是主从架构

架构层级YARN (通用资源调度平台)Spark Standalone (Spark自带调度器)
主节点 (Master)ResourceManager
集群的“全局大管家”,负责整个系统的资源分配和管理。
Master
集群的主控制器,负责资源调度和任务分配。
从节点 (Slave)NodeManager
单个节点的“管理员”,管理本节点的资源并执行任务。
Worker
运行在工作节点上,负责启动和管理具体的计算进程(Executor)。
资源分配单位Container (容器)
封装了CPU、内存等多维度资源的抽象单位。
Executor (执行器)
由Worker启动,负责执行具体计算任务并提供计算资源。

5

spark-submit的本地模式和standalone有什么区别?

本地模式 (local)
环境:整个 Spark 应用(包括 Driver 和 Executor)都运行在提交程序的这台机器的单个 JVM 进程内。
资源:它利用的是本机的 CPU 核心和内存。你可以通过 local[N] 指定使用 N 个线程来模拟并行计算,但这并非真正的分布式。


Standalone 模式 (spark://host:port)
环境:这是一个真正的分布式集群。Driver 进程和 Executor 进程会分布在集群中不同的物理机器上。
资源:它利用的是整个集群的计算资源。应用提交后,Driver 会向集群的 Master 节点申请资源,Master 会协调各个 Worker 节点启动 Executor 来并行处理任务。

5.1

可以只有一个从节点,一个主节点,且主从节点都在一台机器上吗?

完全可以。
这在大数据开发和测试环境中非常常见,通常被称为“伪分布式模式”。
在这种模式下,虽然物理上只有一台机器,但通过软件配置,让主节点进程和从节点进程同时在这台机器上运行,模拟出一个完整的集群环境。

在伪分布式(单机多进程)中,Master 和 Worker 虽然是两个进程,但它们是在同一个操作系统里
一台物理机/虚拟机,用Docker多容器模拟集群
真分布式,指的是利用多台物理计算机或者多台虚拟机通过网络连接组成的集群。

6

如何通过查阅Spark的配置文件来获取spark集群主节点的IP和端口?

$ bin/spark-submit\--masterspark://centos01:7077\--classorg.apache.spark.examples.SparkPi\./examples/jars/spark-examples_2.12-3.2.1.jar
cd/path/to/spark/confcatspark-env.sh|grepSPARK_MASTER_HOST

7077:是给客户端(比如你的 spark-submit 命令)提交任务用的。
8080:是 Spark Master 的 Web UI 界面端口。你可以在浏览器输入 http://centos01:8080 查看集群状态,但不能把它写在 --master 参数里。

6.1

我如何使用netstat查看master真正绑定了什么ip和port?

sudonetstat-tulnp|grep7077

6.2

如何启动使用python的spark-shell?

pyspark --master spark://192.168.11.128:7077
这是最常用的方式,类似于 Scala 的 spark-shell,它会启动一个带有预配置 Spark 上下文(sc 和 spark)的 Python 环境。

http://www.jsqmd.com/news/792457/

相关文章:

  • 2026年4月评价高的仿石砖企业推荐,混凝土水沟盖板/水泥顶管/仿花岗岩砖/成品化粪池/水泥检查井,仿石砖品牌哪家可靠 - 品牌推荐师
  • 2026AI大模型API中转服务实测:多平台全方位对比,探寻最适配开发者的优质之选
  • AIAgent服务降级总失效?用SITS2026定义的3类语义韧性指标重构你的容错策略
  • AI原生代码审查实战手册(2026奇点大会闭门报告首次解禁)
  • 为什么顶尖AI产品团队正秘密重构设计系统?——AI原生用户体验的4层认知断层与SITS 2026破局公式
  • WarcraftHelper:魔兽争霸3现代兼容性问题的5个技术解决方案
  • AI大会摄影不是拍照片,而是构建数字身份图谱:SITS2026首次启用跨展位行为轨迹建模(含SDK接入密钥申请通道已关闭)
  • 手把手教你用PCI Geomatica处理Pleiades三线阵影像:从GCP刺点到DEM滤波的完整避坑指南
  • VS code怎么使用 Conda 安装预编译包
  • Mac高效配置HomeBrew与Cask:从换源到疑难排解
  • 终极显卡驱动清理指南:如何彻底解决驱动残留问题
  • 突破Windows限制:5分钟实现苹果HEIC照片智能预览的完整指南
  • 揭秘2026奇点大会“暗箱测试”结果:在10亿级多模态向量+实时增量更新场景下,仅2款数据库达成<15ms P99延迟
  • 企业微信群机器人与自建应用消息接口有什么区别选哪个
  • Flutter 跨平台实战:OpenHarmony 健康管理应用 Day17|历史数据本地持久化与多记录存储实现
  • 【maaath】 Flutter for OpenHarmony足球计时应用开发实战
  • 2026年怎么报名小自考畜牧兽医专业?专科畜牧兽医的科目是什么?官方助学点吴老师 15902813070 深度解析! - 知名不具123
  • 别再手动翻译了!用Python的googletrans库5分钟搞定批量文件翻译(附实战代码)
  • MLIR编译器中的并行优化技术解析
  • OpenCore Legacy Patcher深度指南:让老旧Mac焕发新生的完整实战手册
  • 通过curl命令直接测试taotoken平台api接口的详细步骤
  • 恒盛通跨境电商物流的客户案例(二) - 恒盛通物流
  • 世界模型:高维智能的优势、风险与现实边界
  • MongoDB 覆盖索引查询
  • 一文分清Agent与Skill
  • 初创团队如何利用taotoken实现api密钥的统一管理与访问控制
  • 3步解锁电脑隐藏性能:UXTU硬件调优实战指南
  • Redis模糊查询实战:从keys到scan的演进与避坑指南
  • 抖音批量下载终极指南:5分钟学会免费下载无水印视频
  • ThreeFingerDragOnWindows:在Windows上实现macOS三指拖动的终极指南