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

从0学习Spark

1.概述

定义:

Apache Spark是一个开源的分布式计算系统,主要用于大规模数据处理和分析,是基于内存计算的大数据处理框架,它提供了一个高度通用的执行引擎,可以支持多种不同类型的大数据处理任务,如批处理、交互式查询、实时流处理、机器学习和图计算等。Spark提供了一种简洁的编程模型,允许用户使用Scala、Java、Python和R等多种编程语言来编写数据处理应用程序。其核心是弹性分布式数据集(Resilient Distributed Dataset,RDD),这是一种分布式的、可分区的、不可变的数据集合,用户可以在RDD上进行各种转换(Transformation)和行动(Action)操作。转换操作会生成新的RDD,而行动操作则会触发计算并返回结果。通过这种方式,用户可以以一种类似于函数式编程的风格来处理大规模数据,使得数据处理代码更加简洁、易读和易于维护。

特点:速度快,易用,通用,运行在任意地方

核心组件:用于批处理的Spark Core,用于SQL查询的Spark SQL,用于流处理的Spark Streaming,用于机器学习的MLlib和用于图计算的GraphX

应用场景
Spark广泛应用于各种大数据场景,如数据仓库、数据挖掘、机器学习、实时监控等。在数据仓库中,Spark可以用于数据的ETL(Extract,Transform,Load)过程,对大量的原始数据进行清洗、转换和加载;在数据挖掘和机器学习领域,Spark提供了丰富的算法和工具,能够支持大规模数据集上的模型训练和预测;在实时监控场景中,Spark Streaming可以实时处理源源不断的流数据,实现对业务数据的实时分析和预警。

2.Spark的运行模式

  • Local模式(单机):以一个独立进程配合内部线程完成运行spark环境
  • Standalone模式(集群):
  • Hadoop YARN模式(集群)
  • Kubernets模式(容器集群)
  • 云服务模式(运行在云平台上)

3.Spark的架构角色

Driver Program:负责创建SparkContext,负责将用户编写的Spark应用程序分解为多个任务,并将这些任务分配到集群中的各个节点上执行

Cluster Manager:负责管理集群中的计算资源,监控集群中各个节点的状态,接收Driver Program提交的任务

Worker Node:负责执行Driver Program分配过来的具体任务,定期向Cluster Manager汇报自己的状态

Executor:在Worker Node上,每个任务会启动一个或多个Executor进程来执行具体的计算任务。Executor负责管理这些进程的生命周期,包括进程的启动、运行和结束

SparkContext:负责与Cluster Manager、Worker Node等组件进行交互,实现任务的提交、资源的申请和分配等功能,管理Spark应用程序的生命周期

RDD(Resilient Distributed Dataset):是Spark中最基本的数据抽象,支持一系列的数据转换和操作
 

4.Spark环境搭建-Local模式(Linux)

4.1.前提准备:

一台虚拟机(已配置好jdk与Hadoop)

spark官网下载(注意下载版本与Hadoop兼容):Downloads | Apache Spark

python3.8及以上

4.2.解压spark:

tar -zxvf spark-3.2.0-bin-hadoop3.2.tgz -C  /home/hadoop/export/server/

4.3.配置spark环境变量:

#进入.bashrc配置
vim  ~/.bashrc

#配置spark环境变量
export SPARK_HOME=/home/hadoop/export/server/spark-3.2.0-bin-hadoop3.2
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

#保存退出后,输入一下命令使环境变量立即生效
source ~/.bashrc

#验证配置是否成功
spark-submit --version

#启动spark
spark-shell
#打开网址
<主机名>:4040
#退出Scala   
:q

5.Spark环境搭建-Standalone模式

Standalone架构:

主节点 Master:
Master 角色,管理整个集群资源,并托管运行各个任务的 Driver
从节点 Workers:
Worker 角色,管理每个机器的资源,分配对应的资源来运行 Executtor (Task)

集群规划

节点主节点(master)从节点(work)
node1
node2
node3

5.1.前提准备:

三台虚拟机(确保配置了SSH免密,jdk,Hadoop),spark压缩包(版本确保与Hadoop版本适配)

5.2.解压spark,将spark压缩包解压到三台虚拟机的相同目录

tar -zxvf spark-3.2.0-bin-hadoop3.2.tgz -C  /home/hadoop/export/server/

5.3.配置spark

在主节点和工作节点的$SPARK_HOME/conf目录下,将spark-env.sh.template重命名spark-env.sh,并进行编辑

# 设置Java环境变量
export JAVA_HOME=/home/hadoop/export/server/jdk1.8.0_361/

# 设置主节点的IP地址或主机名
export SPARK_MASTER_HOST=node1

# 设置主节点的端口号
export SPARK_MASTER_PORT=7077

# 设置工作节点的内存
export SPARK_WORKER_MEMORY=2g

在主节点的$SPARK_HOME/conf目录下,将slaves.template复制为slaves,并编辑该文件,添加所有工作节点的 IP 地址或主机名,每行一个

node1
node2
node3

5.4.启动spark

  • 启动主节点

在主节点上执行以下命令启动 Spark Master:

$SPARK_HOME/sbin/start-master.sh
  • 启动工作节点

在每个工作节点上执行以下命令启动 Spark Worker:

$SPARK_HOME/sbin/start-slave.sh spark://node1:7077
$SPARK_HOME/sbin/start-slave.sh spark://node2:7077
$SPARK_HOME/sbin/start-slave.sh spark://node3:7077

#或者,直接在主节点启动全部工作节点
$SPARK_HOME/sbin/start-slaves.sh

5.5停止spark

$SPARK_HOME/sbin/stop-all.sh


http://www.kler.cn/a/569089.html

相关文章:

  • 开启AI短剧新纪元!SkyReels-V1/A1双剑合璧!昆仑万维开源首个面向AI短剧的视频生成模型
  • 安当全栈式MySQL安全解决方案:透明加密、动态凭据与勒索防护一体化实践
  • 基于Linux系统的物联网智能终端
  • 《C++运算符重载深度解析:从加法、流操作到仿函数与类型转换》
  • 江协科技/江科大-51单片机入门教程——P[1-3] 单片机及开发板介绍
  • 【容器化】低版本docker拉取ubuntn 22.04镜像启动容器执行apt update提示 NO_PUBKEY 871920D1991BC93C
  • 国产AI新秀:DeepSeek的前生今世
  • 如何调试Linux内核?
  • VS Code Python调试执行代码时出现“ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接”的问题解决
  • Llama 2中的Margin Loss:为何更高的Margin导致更大的Loss和梯度?
  • 三七互娱,蓝禾,顺丰,oppo,游卡,汤臣倍健,康冠科技,作业帮,高途教育25届春招内推
  • 深入浅出理解编译器:前端视角
  • Kotlin 扩展函数
  • 【无人机】无人机飞行日志下载及分析,飞行日志分析软件的使用
  • 蓝桥杯(握手问题)
  • Express + MongoDB 实现用户登录
  • 蓝桥杯好题推荐-----高精度减法
  • PyQt5入门教程和简单使用
  • 阿里云 Qwen2.5-Max:超大规模 MoE 模型架构和性能评估
  • [AIGC]Agent的ReAct原理基于LangChain框架的Agent构建详解