从0学习Spark

server/2025/3/3 18:45:06/

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.ppmy.cn/server/172141.html

相关文章

嵌入式开发:傅里叶变换(4):在 STM32上面实现FFT(基于STM32L071KZT6 HAL库+DSP库)

目录 步骤 1&#xff1a;准备工作 步骤 2&#xff1a;创建 Keil 项目&#xff0c;并配置工程 步骤 3&#xff1a;在MDK工程上添加 CMSIS-DSP 库 步骤 5&#xff1a;编写代码 步骤 6&#xff1a;配置时钟和优化 步骤 7&#xff1a;调试与验证 步骤 8&#xff1a;优化和调…

Java类加载机制 双亲委派机制 八股速记版

JVM类加载机制是Java实现跨平台特性的核心机制之一&#xff0c;整个过程可分为以下五个阶段&#xff1a; 一、类加载流程 加载&#xff08;Loading&#xff09; 通过全限定名获取二进制字节流将字节流转换为运行时数据结构生成对应的java.lang.Class对象 验证&#xff08;V…

全面解析:如何查找电脑的局域网与公网IP地址‌

在数字化时代&#xff0c;IP地址作为网络设备的唯一标识&#xff0c;对于网络连接、远程访问、网络诊断等方面都至关重要。无论是出于工作需要&#xff0c;还是解决网络问题&#xff0c;了解怎么查找电脑的IP地址都是一项必备技能。本文将详细介绍几种常见的方法&#xff0c;帮…

【网络安全 | 扫描子域+发现真实IP】CloakQuest3r安装使用详细教程

原创文章,禁止转载。 本文仅作学习交流使用,不得用于非法渗透,笔者不承担任何责任。 文章目录 简介功能介绍执行流程限制安装步骤可选功能:SecurityTrails API使用示例简介 CloakQuest3r 是一款强大的 Python 工具,专为揭示受 Cloudflare 及类似服务保护的网站真实 IP 地…

前端面试题---小程序跟vue的声明周期的区别

1. 小程序生命周期 小程序的生命周期主要分为 页面生命周期 和 应用生命周期。每个页面和应用都有自己独立的生命周期函数。 应用生命周期 小程序的应用生命周期函数与全局应用相关&#xff0c;通常包括以下几个钩子&#xff1a; onLaunch(options)&#xff1a;应用初始化时触…

DeepSeek MLA(Multi-Head Latent Attention)算法浅析

目录 前言1. 从MHA、MQA、GQA到MLA1.1 MHA1.2 瓶颈1.3 MQA1.4 GQA1.5 MLA1.5.1 Part 11.5.2 Part 21.5.3 Part 3 结语参考 前言 学习 DeepSeek 中的 MLA 模块&#xff0c;究极缝合怪&#xff0c;东抄抄西抄抄&#xff0c;主要 copy 自苏神的文章&#xff0c;仅供自己参考&#…

绕过信息过滤与注入限制

绕过 information_schema 过滤 information_schema 是 MySQL 中存储元数据的系统数据库&#xff0c;常用于 SQL 注入中获取表名、列名等信息。当 information_schema 被过滤时&#xff0c;可以通过以下方法绕过。 1 替代视图 使用 sys 库&#xff08;MySQL 5.7&#xff09; …

第8天:面向对象编程入门 - 类与对象

第8天&#xff1a;面向对象编程入门 - 类与对象 一、&#x1f4da; 今日学习目标 &#x1f3af; 掌握类与对象的定义与使用&#x1f527; 理解封装、继承、多态三大特性&#x1f4a1; 完成银行账户管理系统实战&#x1f6e0;️ 学会构造函数与析构函数的编写 二、⚙️ 核心知…