1.Spark基础
1.1 什么是spark?
Apache Spark 是一个高速且通用的集群计算框架,具有以下层次结构和特点:
基本概念:
定义: Spark 是一个通用的大数据计算框架。
计算模型: 基于 RDD(弹性分布式数据集)的模型,允许分布式处理大量数据。
核心优势:
速度: 相比 Hadoop MapReduce,Spark 的处理速度可快达 100 倍。
内存计算: 数据处理工作主要在内存中进行,减少了磁盘I/O。
批处理与流处理: 结合了流处理的能力,可用于下一代批处理任务。
部署灵活性:
独立部署: 可作为独立集群部署,需要配合相应的存储层。
与Hadoop集成: 可以与现有 Hadoop 集群集成,甚至替代 MapReduce 引擎。
数据处理特点:
数据拆分: 将大数据集拆分并分别并行处理。
结果合并: 合并处理后的结果。
存储交互: 只在数据读入和最终结果存储时与存储层交互。
生态系统和易用性:
丰富的生态系统: 包含各种库,支持机器学习、交互式查询等。
易于编程: 相比 MapReduce,Spark 任务更易于编写。
多样性:
多种任务处理: 可处理批处理和流处理任务。
多样部署选项: 可独立部署或集成于 Hadoop。
总结来说,Spark 的设计旨在提供一个高速、灵活且易于使用的大数据处理平台,具备处理各种类型数据和任务的能力,是当今大数据领域的关键技术之一。
现在已经有很多大公司正在生产环境下深度地使用Spark作为大数据的计算框架,包括eBay.Yahool、 BAT、网易、京东、华为、大众点评、优酷土豆、搜狗等等。
Spark同时也获得了多个世界顶级IT厂商的支持,包括IBM、 Intel等。
1.2 Apache Spark其核心功能和组件:

Spark Core:
功能: 它是 Spark 的基础框架,提供分布式任务调度、输入输出功能、错误处理、存储管理等。
RDD: 引入了弹性分布式数据集(RDD)的概念,作为其基本的数据处理单元。
Spark SQL:
作用: 用于处理结构化和半结构化数据。
特点: 允许用户使用 SQL 或 HiveSQL 来查询数据,并支持多种数据源。
Spark Streaming:
应用: 用于处理实时数据流。
特性: 提供了用于构建流式应用的 API,可以与 Spark Core 的批处理能力无缝集成。
MLlib (机器学习库):
目的: 提供机器学习算法的实现,包括分类、回归、聚类、协同过滤等。
易用性: 让开发者能够容易地将机器学习功能集成到自己的应用中。
GraphX:
用途: 用于图形和图计算。
功能: 提供了一套用于创建和处理图形的 API。
集群管理器:
角色: 负责在各种集群管理器上调度 Spark 应用程序。
支持: 包括 Spark 自带的独立集群管理器、Hadoop YARN、Apache Mesos 等。
spark特点

1.3 Spark基本工作原理
Spark的工作原理:
将数据分成小块【RDD】,在多个计算节点上并行处理,最后将结果汇总。
提交Spark作业时,Driver将作业拆分成多个任务,并将这些任务分配到各个Executor节点上执行。
Executors在本地数据集上执行任务,通过shuffle操作将结果传递给其他Executors。
Driver收集所有Executors的结果,将它们合并成最终的输出。
RDD(Resilient Distributed Datasets):
是Spark中的重要数据结构,代表分布式的数据块。
不可变、分布式、可以进行并行计算。
可以通过各种转换操作(如map、filter、reduce等)进行处理,形成新的RDD。
提供了容错机制,确保在某个节点出现故障时可以在其他节点上重新计算。
综上所述,Spark通过将数据分成小块,并在多个计算节点上并行处理这些小块,利用RDD作为基本数据结构,实现了高效、可靠的分布式数据处理。
最简单的理解: RDD就是源数据的抽象,或者叫映射也就是说,数据要被spark进行处理,在处理之前的首要任务就是要将数据映射成RDD,对于spark来说,RDD才是我们处理数据的规则,我只认RDD,只有RDD,通过我spark的计算引擎,才能发挥巨大的威力!
(1)分布式数据集 RDD是Spark提供的核心抽象,全称为Resillient Distributed Dataset,即弹性分布式数据集。
RDD在抽象上来说是一种元素集合,包含了数据。它是被分区的,分为多个分区,每个分区分布在集群中的不同节点上,从而让RDD中的数据可以被并行操作。

(2)弹性 RDD的数据默认情况下存放在内存中的,但是在内存资源不足时,Spark会自动将RDD数据写入磁盘。

(3)迭代式处理
对节点1、2、3、4上的数据进行处理完成之后,可能会移动到其他的节点内存中继续处理!Spark 与Mr最大的不同在与迭代式计算模型:Mr分为两个阶段,map和reduce,两个阶段处理完了就结束了,所以我们在一个job中能做的处理很有限,只能在map和reduce中处理;而spark计算过程可以分为n个阶段,因为他是内存迭代式的,我们在处理完一个阶段之后,可以继续往下处理很多阶段,而不是两个阶段。所以Spark相较于MR,计算模型可以提供更强大的功能。

(4)容错性 RDD最重要的特性就是,提供了容错性,可以自动从节点失败中恢复过来。即如果某个节点上的RDD partition,因为节点故障,导致数据丢了,那么RDD会自动通过自己的数据来源重新计算该partition。这一切对使用者是透明的。

1.4 Spark 运行模式及集群角色
1.4.1 Spark运行模式
| 运行模式 | 运行类型 | 说明 |
|---|---|---|
| local | 本地模式 | 常用于本地开发测试,Spark任务在单个本地节点上执行 |
| standalone | 集群模式 | 独立模式,在spark自己的资源调度管理框架上运行,该框架采用master/salve结构 |
| yarn | 集群模式 | 在yarn资源管理器框架上运行,由yarn负责资源管理,spark负责任务调度和计算 |
1.4.2 Spark集群角色
下图是spark的集群角色图,主要有集群管理节点cluster manager,工作节点worker,执行器executor,驱动器driver和应用程序application 五部分组成,下面详细说明每部分的特点。
(1)Cluster Manager 集群管理器,它存在于Master进程中,主要用来对应用程序申请的资源进行管理,根据其部署模式的不同,可以分为local,standalone,yarn等模式。
(2)worker worker是spark的工作节点,用于执行任务的提交,主要工作职责有下面四点:
worker节点通过注册机向cluster manager汇报自身的cpu,内存等信息。
worker 节点在spark master作用下创建并启用executor,executor是真正的计算单元。
spark master将任务Task分配给worker节点上的executor并执行运用。
worker节点同步资源信息和executor状态信息给cluster manager。

在yarn 模式下运行worker节点一般指的是NodeManager节点,standalone模式下运行一般指的是slave节点。
(3)executor executor 是真正执行计算任务的组件,它是application运行在worker上的一个进程。这个进程负责Task的运行,它能够将数据保存在内存或磁盘存储中,也能够将结果数据返回给Driver。
(4)Application
Application是Spark API 编程的应用程序,它包括实现Driver功能的代码和在程序中各个executor上要执行的代码,一个application由多个job组成。其中应用程序的入口为用户所定义的main方法。
(5)Driver 驱动器节点,driver是执行 Spark 应用程序的主要进程。它负责执行用户编写的代码,管理整个应用程序的执行流程,包括任务的分配、监控和调度等。 driver进程通常运行在集群中的一个节点上,可以与集群中的其他节点进行通信。它接收用户提交的 Spark 作业,并将作业划分为多个任务,然后将这些任务分配到各个工作节点(worker节点)上执行。
driver它是一个运行Application中main函数并创建SparkContext的进程。application通过Driver 和Cluster Manager及executor进行通讯。它可以运行在application节点上,也可以由application提交给Cluster Manager,再由Cluster Manager安排worker进行运行。
Driver节点也负责提交Job,并将Job转化为Task,在各个Executor进程间协调Task的调度。
(6)sparkContext sparkContext是整个spark应用程序最关键的一个对象,是Spark所有功能的主要入口点。核心作用是初始化spark应用程序所需要的组件,同时还负责向master程序进行注册等。
2. 安装 Spark
2.1 软件准备
下载Spark3.1.1安装文件。访问下载。
本教程的具体运行环境如下:
Hadoop 3.1.3 集群
Java JDK 1.8
Spark 3.1.1
2.2 Spark的三种部署方式
(1)Local
本地模式,运行在一台机器上,通常是练手或者测试环境。
Spark任务在单个本地节点上执行,适合小规模数据的快速验证。
(2)Standalone
使用Spark自身的节点运行,构建一个由Master+Slaves组成的资源调度集群。
Spark任务通过Spark自身的调度系统提交给Master节点运行,适用于搭建独立的Spark集群。
(3)Yarn
Spark客户端直接连接到Hadoop的YARN资源管理器(ResourceManager),不需要额外构建Spark集群。
有两种模式:
yarn-client: Driver程序运行在客户端,适用于交互和调试。yarn-cluster: Driver程序运行在由YARN ResourceManager 启动的ApplicationMaster中,适用于生产环境。
Driver程序是Spark应用程序的中央控制器,负责协调和管理整个应用程序的执行流程,一般为spark的Main函数

2.3 spark安装
2.3.1 Standalone模式
standalone 作为 spark 自带的分布式部署模式,是最简单也是最基本的 spark 应用程序部署模式
独立部署(Standalone)模式由Spark自身提供计算资源,无需其他框架提供资源。这种方式降低了和其他第三方资源框架的耦合性,独立性非常强。
构建一个由Master+Slave构成的Spark集群,Spark运行在集群中。 分布式部署集群,自带完整的服务,资源管理和任务监控是Spark自己监控,这个模式也是其他模式的基础。
集群规划:
| master | slave1 | slave2 | |
|---|---|---|---|
| Spark | Worker+Master | Worker | Worker |
1. 环境准备
## 前提条件
- 已配置hadoop3.1.3完全分布式集群,
- spark-3.1.1-bin-hadoop3.2.tgz的安装包
2. 解压Spark
cd /opt/software/
[root@master software]# tar -zxvf spark-3.1.1-bin-hadoop3.2.tgz -C ../apps/
cd /opt/apps
[root@master apps]# mv spark-3.1.1-bin-hadoop3.2/ spark
env:环境
3. 配置spark-env.sh
cd /opt/apps/spark/conf
mv spark-env.sh.template spark-env.sh
vim spark-env.sh
在文件的末尾添加
# JDK安装路径
export JAVA_HOME=/opt/apps/jdk
# 指定hadoop的配置项位置(yarn模式需要的,保证后续运行任务的路径都变成集群路径)
HADOOP_CONF_DIR=/opt/apps/hadoop/etc/hadoop
# 指定 Spark主节点主机名或 IP 地址
export SPARK_MASTER_HOST=master
# 指定 Spark 主节点端口号(内部通信用)
export SPARK_MASTER_PORT=7077
# 设置每个 Spark 工作节点使用的 CPU 核心数
export SPARK_WORKER_CORES=1
# 设置每个 Spark 工作节点可使用的内存大小
export SPARK_WORKER_MEMORY=1024M
# 指定了 Spark 主节点的 Web UI 端口号
export SPARK_MASTER_WEBUI_PORT=8080
4. 配置spark的工作节点
# 复制workers模板文件
cp /opt/apps/spark/conf/workers.template /opt/apps/spark/conf/workers
# 编辑workers文件
vim /opt/apps/spark/conf/workers
内容(根据自己的节点适当删减):
# 指定spark工作节点的主机名或IP地址,每行一个
master
slave1
slave2
5. 配置spark环境变量
# 依次在master、slave1、slave2节点上,添加spark环境变量:
vim /etc/profile
# 添加以下内容
export SPARK_HOME=/opt/apps/spark
export PATH=$PATH:$SPARK_HOME/bin
保存并退出,使环境变量生效:
source /etc/profile
6. 配置Job History Server
在运行Spark应用程序的时候,driver会提供一个webUI给出应用程序的运行信息,但是该webUI随着应用程序的完成而关闭端口,也就是 说,Spark应用程序运行完后,将无法查看应用程序的历史记录。Spark history server就是为了应对这种情况而产生的,通过配置,Spark应用程序在运行完应用程序之后,将应用程序的运行信息写入指定目录,而Spark history server可以将这些运行信息装载并以web的方式供用户浏览。
1)确保HDFS系统启动
在HDFS上创建/user/spark/eventlog目录用来存放日志
# 先启动hdfs和yarn
hdfs dfs -mkdir -p /user/spark/eventlog
2)进入到spark安装目录conf目录下
cd /opt/apps/spark/conf
3)将spark-default.conf.template复制为spark-default.conf
mv spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf
# 在文件的末尾添加
# 开启日志
spark.eventLog.enabled true
# 指定日志存储路径为hdfs的路径(与core.site.xml里的一致)
spark.eventLog.dir hdfs://master:9000/user/spark/eventlog
# 是否压缩
spark.eventLog.compress true
#参数描述:
#spark.eventLog.dir:Application在运行过程中所有的信息均记录在该属性指定的路径下 #spark.eventLog.compress 这个参数设置history-server产生的日志文件是否使用压缩,true为使用,false为不使用。启用了事件日志的压缩。压缩事件日志可以减少存储空间的使用,并加快传输和处理速度。 ps:最好不要是用IE内核的浏览器不然效果是显示不出来的
7. 分发spark与环境变量
把配置好的spark分发到slave1,slave2节点下
cd /opt/apps
[root@master apps]# scp -r spark/ root@slave1:/opt/apps/
[root@master apps]# scp -r spark/ root@slave2:/opt/apps/
8. 启动spark
# 1.启动zookeeper集群
# 2.启动Hadoop集群
# 3.启动Spark
cd /opt/apps/spark
## 启动的是Spark进程
[root@master apps]# ./sbin/start-all.sh
## 启动的是Spark的历史服务器
[root@master apps]# ./sbin/start-history-server.sh
# jps:出现master和worker进程即可
# 4.启动shell
[root@master apps]# spark-shell
检查状态:jps出现master和worker进程即可

Spark中的Master和Worker进程作用:
Master进程:
负责整个Spark集群的管理和调度。
接收来自客户端的应用程序提交请求,并将任务分配给可用的Worker节点。
维护集群中各个Worker节点的状态和资源情况。
提供Web界面以监控和管理整个集群的运行状态。
Worker进程:
在集群中的每个节点上运行,负责执行实际的任务。
接收Master节点分配的任务,并执行计算操作。
管理节点上的资源,如内存、CPU等,并将资源状态报告给Master节点。
提供Web界面以监控节点的资源使用情况和运行状态。
总的来说,Master进程负责集群的整体调度和管理,而Worker进程则负责在各个节点上执行任务和管理节点的资源。这样的分工使得Spark集群能够高效地执行分布式计算任务。
9.执行spark自带的案例
任务:在Spark集群中提交一个名为 SparkPi 的应用程序,该应用程序将计算π的近似值,并将结果返回。
cd /opt/apps/spark
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://master:7077 \
./examples/jars/spark-examples_2.12-3.1.1.jar \
10
命令解释:
bin/spark-submit:这是Spark提供的用于提交应用程序的脚本。--class org.apache.spark.examples.SparkPi:指定要运行的应用程序的主类,即org.apache.spark.examples.SparkPi。这是一个计算圆周率的示例应用程序。--master spark://master:7077:指定Spark集群的Master节点的地址和端口。在这个例子中,Master节点的地址是master,端口是7077。./examples/jars/spark-examples_2.12-3.1.1.jar:指定要提交的应用程序的JAR文件路径。这是Spark示例应用程序的JAR文件路径。10:应用程序的参数,传递给主类。表示并行计算的次数。该值会影响计算圆周率的精度和性能。
运行结果:

命令优化:
上一个任务在执行时会输出非常多的运行信息,输出结果不容易找到,可以通过 grep 命令进行过滤
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://master:7077 \
./examples/jars/spark-examples_2.12-3.1.1.jar \
10 \
2>&1 | grep "Pi is"
解释:
2是标准错误的输出,1是标准输出。 使用bash时,可以用2>&1把标准错误流和标准输出流结合在一起。
这是合并标准输出和标准错误的老派做法:2>&1
grep、cat、管道符配合使用:cat test.txt |grep hello # 查看文件中包括 hello 的行
|管道符,将一个命令的输出作为另外一个命令的输入grep 查找文件里符合条件的字符串

10.修改spark设置日志级别
log4j.properties文件的作用:
log4j.properties文件是Spark用来配置日志的文件。
通过设置不同的日志级别,可以控制日志的输出等级。
如果 $Spark_HOME/conf 目录下已经存在 log4j.properties 文件,则直接编辑这个文件。如果log4j.properties文件不存在,复制模板文件创建
设置日志级别:
在log4j.properties文件中,通过配置log4j.rootCategory属性来设置日志级别。
log4j.rootCategory=ERROR, console将根日志类别设置为ERROR级别。表示只记录错误级别的日志,并且将日志输出到控制台。
cd /opt/apps/spark
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://master:7077 \
./examples/jars/spark-examples_2.12-3.1.1.jar \
10

11.查看Spark的Web UI
访问Spark的Master资源监控Web UI界面:
默认URL访问:
http://master:8080Spark端口变更情况:
如果在启动Spark之前,已经启动了Hadoop、ZooKeeper、HBase等服务,ZooKeeper可能会占用8080端口以提供HTTP管理界面。
Spark会尝试使用8081端口来启动。
更换URL访问:
http://master:8081
打开浏览器输入“http://master:8081”,查看Spark集群情况

打开浏览器输入“http://slave1:8081”,查看Worker执行情况

启动spark-shell浏览器输入“http://master:4040”查看“Spark Jobs”。

2.3.2 Spark on YARN
Spark客户端直接连接 Yarn,不需要在本地额外构建 Spark 集群。
核心特点
简易部署:
Spark 在 YARN 模式下的部署相对简单。
安装要求:
Spark 需要安装在 YARN 集群的仅一个节点上,例如
master节点。客户端功能:
安装了 Spark 的节点(如
master)可作为客户端,用于提交 Spark 应用程序到 YARN 集群。
YARN 集群的角色
资源调度:
YARN 负责集群资源的调度。
Spark 集群的配置
无需启动 Master/Worker 节点:
在 Spark On YARN 模式下,不需要启动 Spark 自身的 Master 和 Worker 节点。
独立于 Standalone 集群:
Spark On Yarn 集群的部署不依赖于 Spark Standalone 集群。
Spark On Yarn 本质
Master 角色由 YARN 的 ResourceManager 担任。
Worker 角色由 YARN 的 NodeManager 担任。
Driver 角色运行在 YARN 容器内或提交任务的客户端进程中。
真正干活的 Executor 运行在 YARN 提供的容器内。
Spark On Yarn 需要啥?
需要 Yarn 集群:已经安装了
需要 Spark 客户端工具,比如 spark-submit,可以将 Spark 程序提交到 YARN 中
需要被提交的代码程序:如
spark/examples/src/.../pi.py示例程序,或后续自己开发的 Spark 任务

Spark On YARN 是有两种运行模式的,一种是 Cluster 模式,一种是 Client 模式
yarn 模式有yarn-client和yarn-cluster两种模式:主要区别在于:Driver程序的运行节点。
Driver进程:一个Spark作业运行时包括一个Driver进程,也是作业的主进程,具有main函数,并且有SparkContext的实例,是程序的入口点;
Cluster模式:Driver运行在YARN容器内部,和ApplicationMaster在同一个容器内。

Client模式:Driver运行在客户端进程中,比如Driver运行在spark-submit程序的进程中,适用于交互、调试,希望立即看到app的输出。

Cluster和Client模式最最本质的区别是:
Driver程序运行在哪里其中,就直接的区别就是:
运行在YARN集群中就是Cluster模式,
运行在客户端就是Client模式
1. 环境准备
已配置hadoop3.1.3完全分布式集群
spark-3.1.1-bin-hadoop3.2.tgz的安装包
2. 安装Spark
如果已经安装配置了Standalone模式(参照上文),则不用再做安装,跳过此步。
如果没有安装配置了Standalone模式(参照上文),则按下面的步骤【仅在Master主机上安装Spark】
解压spark
# 在Master主机上操作
cd /opt/software/
[root@master software]# tar -zxvf spark-3.1.1-bin-hadoop3.2.tgz -C ../apps/
cd /opt/apps
[root@master apps]# mv spark-3.1.1-bin-hadoop3.2/ spark
3.配置spark-env.sh
cd spark/conf/
cp spark-env.sh.template spark-env.sh
配置以下内容
# JDK安装路径
export JAVA_HOME=/opt/apps/jdk
# 指定hadoop的配置项位置(yarn模式需要的,保证后续运行任务的路径都变成集群路径)
HADOOP_CONF_DIR=/opt/apps/hadoop/etc/hadoop
# 指定了 Hadoop 配置文件的位置。这对于让 Spark 正确地与 Hadoop 集群(如 HDFS)交互是必要的,
# 特别是当在 YARN 模式下运行 Spark 作业时。
注意:原先在Standalone模式配置的spark-env.sh下面的配置项可以删除,只保留了上面两项
SPARK_MASTER_HOST和SPARK_MASTER_PORT用于指定 Spark 主节点的主机名或 IP 地址以及端口号,用于内部通信。在 YARN 模式下,Spark 主节点由 YARN 的 ResourceManager 管理,因此不需要手动设置这些参数。
SPARK_WORKER_CORES和SPARK_WORKER_MEMORY用于设置每个 Spark 工作节点可使用的 CPU 核心数和内存大小。在 YARN 模式下,资源的分配由 YARN 负责,因此不需要手动设置这些参数。
SPARK_MASTER_WEBUI_PORT用于指定 Spark 主节点的 Web UI 端口号。在 YARN 模式下,Spark 主节点的 Web UI 端口通常是由 YARN ResourceManager 管理的,因此无需手动设置该参数。因此,在 Spark on YARN 模式下,这些配置项都是不需要的,可以省略。Spark 应用程序会自动与 YARN 集成,并根据 YARN 的资源调度来分配资源和管理任务
4. 配置spark环境变量
vim /etc/profile
# 添加以下内容
export SPARK_HOME=/opt/apps/spark
export PATH=$PATH:$SPARK_HOME/bin
保存并退出,使环境变量生效:
source /etc/profile
5. 配置spark的运行模式
master\slave1\slave2 三台主机都要修改
yarn-site.xml文件,添加以下环境变量命令: vim /opt/apps/hadoop/etc/hadoop/yarn-site.xml
<!-- 控制 YARN NodeManager 是否启用对任务使用的物理内存和虚拟内存的检查 -->
<!-- 如果pmem、vmem资源不够,运行任务会报错,此处将资源检查设置为false -->
<!-- 禁止对任务使用的物理内存的检查(否则如果任务超出分配值,则直接将其杀掉)-->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 禁止对任务使用的虚拟内存的检查(否则如果任务超出分配值,则直接将其杀掉)-->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
保存退出,重启Hadoop集群
6.执行spark自带的案例
启动Hadoop集群
start-dfs.sh
start-yarn.sh
修改spark设置日志级别
# 编辑`$Spark_HOME/conf`下的`log4j.properties`为错误日志,如果没有,复制临时文件生成
log4j.rootCategory=ERROR, console
......
client模式
Driver运行在Client上的Spark-Submit进程中
应用程序运行结果会在客户端显示
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.12-3.1.1.jar \
10
# 解释
--class 指定了应用程序的主类。
--master 指定了集群管理器
--deploy-mode 指定了部署模式。client 模式意味着 Spark 驱动程序将在提交应用程序的机器上运行,通常是用户的本地机器。
举例:打包自己的jar上传并运行
bin/spark-submit \
--class org.example.EtlJob \
--master yarn \
--deploy-mode client \
./examples/jars/sparkexamples-1.0-SNAPSHOT.jar \
10

cluster模式
Driver 程序会在 YARN 集群中启动,并由 YARN 管理,客户端机器只是用于提交应用程序,并不直接参与应用程序的执行。
Driver 程序在集群中运行,应用程序的运行结果也将在集群中生成。在客户端机器上,你只能看到应用程序的提交信息和 YARN 的应用程序 ID,但无法直接查看应用程序的运行结果。
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.1.1.jar \
10
查看运行结果

http: //slave1:8088/proxy/application_1673791169680_0003/
: 这部分是 ResourceManager 的 Web UI 的基础地址
提供了一个通过 Web 浏览器访问 ResourceManager 的 Web UI 来跟踪和监视特定应用程序的方式。通过访问该链接,用户可以查看应用程序的状态、任务信息、日志等详细信息,以便更好地了解应用程序的运行情况。




3.使用 Zeppelin 进行交互式分析
Apache Zeppelin 是一款基于 Web 的 NoteBook,支持交互式数据分析。使用 Zeppelin,可以使用丰 富的预构建语言后端(或解释器)制作精美的数据驱动、交互式和协作文档。目前,Apache Zeppelin 支 持 Apache Spark、Python、JDBC、Markdown 和 Shell 等多种解释器。
特别是,Apache Zeppelin 提供了内置的 Apache Spark 集成。我们不需要为它构建单独的模块、插件 或库。Apache Zeppelin 与 Spark 集成,提供了如下功能:
自动注入 SparkContext 和 SQLContext ;
从本地文件系统或 maven 存储库加载运行时 jar 依赖项;
取消作业并显示进度。
Apache Zeppelin 专注于企业级应用,Zeppelin Notebook 可以满足以下企业用户以下需求:
数据摄取
数据发现
数据分析
数据可视化与协作
接下来,我们学习如何安装 Zeppelin 和配置 Zeppelin 解释器,并演示如何使用 Zepplin Notebook 作 为 Spark 的交互式数据分析工具进行大数据的分析和数据可视化。