Spark学习--1、Spark入门(Spark概述、Spark部署、Local模式、Standalone模式、Yarn模式)(一)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Spark学习--1、Spark入门(Spark概述、Spark部署、Local模式、Standalone模式、Yarn模式)(一)

1、Spark概述

1.1 什么是Spark

Spark是一个基于内存的快速、通用、可扩展的大数据分析计算引擎。

1.2 Hadoop和Spark历史

83b23707486045a0a2fd4e0a17ad83da.png

0edfb36cc24c4a0e92cd16e534107975.png

Hadoop的Yarn框架比Spark框架诞生的晚,所以Spark自己也设计了一套资源调度框架。

1.3 Hadoop和Spark框架对比


c954b8ee79ab4bec9f5cb396d640193c.png

1.4 Spark内置模块

c1e5c54a86b74620b0aad58a75ba22f7.png


image.png

1.5 Spark特点

1、快:与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上。Spark实现了高效地DAG执行引擎,可以通过基于内存来高效处理数据流。计算的中间结果是存在于内存中的。

2、易用:Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。而且Spark支持交互式的Python和Scala的Shell,可以非常方便的在这些Shell中使用Spark集群来验证解决问题的办法。

3、通用:Spark提供了统一的解决方案。Spark可以用于交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark Lib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应用中无缝使用、减少了开发和维护的人力成本和部署平台的物力成本。

4、兼容性:Spark可以非常方便地与其他的开源产品进行融合。比如,Spark可以使用Hadoop的Yarn好Apache Mesos作为它的资源管理和调度器,并且可以处理所以Hadoop支持的数据,包括HDFS、HBase等。这对于已经部署Hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用Spark强大的处理能力。

2、Spark 运行模式

部署Spark集群大体上分为两种模式:单机模式与集群模式

(1)Local模式: 在本地部署单个Spark服务

(2)Standalone模式:Spark自带的任务调度模式。(国内常用)

(3)YARN模式: Spark使用Hadoop的YARN组件进行资源与任务调度。(国内最常用)

(4)Mesos模式: Spark使用Mesos平台进行资源与任务的调度。(国内很少用)

2.1 Spark安装地址

1)官网地址:http://spark.apache.org/

2)文档查看地址:https://spark.apache.org/docs/3.3.0/

3)下载地址:https://spark.apache.org/downloads.htmlhttps://archive.apache.org/dist/spark/

2.2 Local模式

Local模式就是运行在一台计算机上的模式,通常就是用于在本机上练手和测试。

2.2.1 安装使用

1、上传并解压Spark安装包

2、官方求PI案例

##先进入Spark软件的家目录
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.12-3.3.0.jar \
10
##  --class 表示要执行程序的主类
##  --master local[2] 
##  local:没有指定线程数,则所以计算都运行在一个线程中,没有任何并行计算
##  local[K]:指定使用K个Core来运行计算
##  local[*]:默认模式。自动帮你按照CPU最多核来设置线程数
##  spark-examples_2.12-3.3.0.jar:要运行的程序;
##  10:要运行程序的输入参数(计算圆周率π的次数,计算次数越多,准确率越高);

3、查看spark-submit所以参数

bin/spark-submit

4、结果展示


2dd0191053f14bcb8bdc5180c0c10cd0.png

2.2.2 查看任务运行详情

再次运行求PI任务,增加任务次数

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.12-3.3.0.jar \
1000

在任务运行还没有完成时,可登录hadoop102:4040查看程序运行结果

3c858e1a2f41445180e0e35b45728b16.png

2.3 Standalone模式

Standalone模式是Spark自带的资源调度引擎,构建一个由Master+Worker构成的Spark集群,Spark运行在集群中。这个standalone区别于Hadoop的,这里的Standalone是指只用Spark来搭建一个集群,不需要借助其他框架。

2.3.1 集群角色之资源管理

Master和Worker集群资源管理


cd18a1e628e445f5ab638d033422cd8a.png

Master和Worker是Spark的守护进程、集群资源管理者,即Spark在特定模式(Standalone)下正常运行必须要有的后台常驻进程。

Driver和Executor任务的管理者


aeaae32525184b3bbf8ee34f98f18340.png

Driver和Executor是临时程序,当有具体任务提交到Spark集群才会开启的程序。

Standalone是Spark自带的资源调度引擎,构建一个由Master+Worker构成的Spark集群,Spark运行在集群中。

2.3.2 安装使用

1、集群规划


hadoop102
hadoop103 hadoop104
Spark Master Worker Worker Worker

2、再解压一份Spark安装包,并修改解压后的文件夹名称为spark-standalone

3、进入Spark的配置目录/opt/module/spark-standalone/conf

4、重命名conf/workers.template文件为conf/workers,并修改works文件内容,添加work节点

vim workers
添加内容如下:
hadoop102
hadoop103
hadoop104

5、修改重命名文件conf/spark-env.sh.template为conf/spark-env.sh文件,添加master节点

SPARK_MASTER_HOST=hadoop102
SPARK_MASTER_PORT=7077

6、分发spark-standalone包

7、启动Spark集群

##进入spark-standalone的家目录
sbin/start-all.sh

8、查看三台服务器运行进程

ef03f941980d420087874e06fd5a9bf2.png

9、网页查看:hadoop102:8080(master web的端口,相当于yarn的8088端口)

目前还看不到任何任务的执行信息。

10、官方求PI案例

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop102:7077 \
./examples/jars/spark-examples_2.12-3.3.0.jar \
10
##--master spark://hadoop102:7077指定要连接的集群的master(配置文件中所配置的信息一致)。

11、页面查看http://hadoop102:8080/

·8080:master的webUI

·4040:application的webUI的端口号

2.3.3 参数说明

我们当然也可以根据实际任务需求指定使用资源

1、配置Executor可用内存为2G,使用CPU核数为2个

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop102:7077 \
--executor-memory 2G \
--total-executor-cores 2 \
./examples/jars/spark-examples_2.12-3.3.0.jar \
10

2、页面查看http://hadoop102:8080/

eec0c7726f91467daecbc9b8d8b77f80.png

3、基本语法

bin/spark-submit \
--class <main-class>
--master <master-url> \
... # other options
<application-jar> \
[application-arguments]
##参数  解释
##--class Spark程序中包含主函数的类
##--master  Spark程序运行的模式
##--executor-memory 1G  指定每个executor可用内存为1G
##--total-executor-cores 2  指定所有executor使用的cpu核数为2个
##application-jar 打包好的应用jar,包含依赖。这个URL在集群中全局可见。 比如hdfs:// 共享存储系统,如果是file:// path,那么所有的节点的path都包含同样的jar
##application-arguments 传给main()方法的参数
2.3.4 配置历史服务

由于spark-shell停止掉后,hadoop102:4040页面就看不到历史任务的运行情况,所以我们需要历史服务器任务日志。

1、修改spark-default.conf.template名称

mv spark-defaults.conf.template spark-defaults.conf

2、修改spark-default.conf文件,配置日志存储路径(写)

spark.eventLog.enabled          true
spark.eventLog.dir              hdfs://hadoop102:8020/directory
## 注意:需要启动Hadoop集群,HDFS上的目录需要提前存在(因为历史任务日志数据存储在HDFS上)。

3、修改spark-env.sh文件,添加如下配置:

export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080 
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory 
-Dspark.history.retainedApplications=30"
# 参数1含义:WEBUI访问的端口号为18080
# 参数2含义:指定历史服务器日志存储路径(读)
# 参数3含义:指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。

4、分发配置文件

5、启动历史服务

sbin/start-history-server.sh

6、再次执行任务

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop102:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
./examples/jars/spark-examples_2.12-3.3.0.jar \
10

7、查看Spark历史服务地址:hadoop102:18080

cef64622874549ceb9bd213e5d04070d.png

相关文章
|
1月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
132 6
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
62 2
|
1月前
|
存储 分布式计算 算法
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
38 0
|
1月前
|
消息中间件 分布式计算 Kafka
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
37 0
|
1月前
|
SQL 存储 分布式计算
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
36 0
|
10天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
38 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
1月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
58 0
|
1月前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
38 0
|
1月前
|
消息中间件 存储 分布式计算
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
75 0

相关实验场景

更多
下一篇
无影云桌面