欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spark入门及常用组件介绍

程序员文章站 2022-06-21 18:30:14
...

Spark架构

Spark入门及常用组件介绍

Spark的组件

Spark Core

实现了 Spark 的基本功能,包含任务调度、内存管理、容错机制、与存储系统交互等模块。还定义了弹性分布式数据集(Resilient DistributedDataSet,简称 RDD),并提供了很多API来创建和操作这些RDD。Spark Core 为其他组件提供底层的服务,其他的四个模块库都是构建在Spark Core和RDD上。

Spark SQl

提供交互式语法(SQL) 来操作结构化数据的一个模块,通过Spark SQL用户可以使用SQL或者HQL(Hive版本的SQL)来查询数据。Spark SQL 支持多种数据源,比如 Hive 表、Parquet 以及 JSON 等。

Spark SQL和SparkCore一样,主要包含Context上下文和核心抽象DataFrame。其中Context主要包括两种:

SQLContext:提供SQL语法的上下文对象,不能提供Hive相关操作。
HiveContext:提供集成Hive的数据操作相关的上下文对象。

Spark Streaming

Spark提供的对实时数据进行流式计算的组件。提供了用来操作数据流的 API,并且与 Spark Core 中的 RDD API 高度对应。

Spark MLlib

Spark提供的一个机器学习算法库,主要有分类、回归、聚类、协同过滤等,还供了模型评估、数据导入和一个通用的梯度下降优化基础算法。

MLlib包含spark.mllibspark.ml这两个package:

spark.mllib基于RDD,是一种低级别的API
spark.ml基于DataFrame,是一种高层次的API

集群管理器

集群管理器:Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算。为了实现这样的要求,同时获得最大灵活性,Spark 支持在各种集群管理器(Cluster Manager)上运行,包括 Hadoop YARN、Apache Mesos,以及 Spark 自带的一个简易调度器,叫作独立调度器

Spark提交任务指令

bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
<application-jar> \
[application-arguments]

命令的参数说明:

--master 指定 Master 的地址,默认为 Local
--class: 应用的启动类 (如:com.havorld.spark.WordCount)
--deploy-mode: 发布驱动到worker节点(cluster) 或者作为一个本地客户端(client);默认为client
--conf: 任意的Spark配置属性,格式为key=value. 如果值包含空格可以加引号"key=value"
application-jar: 打包好的应用jar
application-arguments: 传给 main方法的参数
--executor-memory 1G 指定每个 executor 可用内存为 1G
--total-executor-cores 2 指定每个 executor 使用的 cup 核数为 2 个

spark-submit 详细参数说明

参数名 参数说明
–master master 的地址,提交任务到哪里执行,例如 spark://host:port, yarn, local
–deploy-mode client:在本地启动driver (默认); cluster:在集群上启动driver
–class 应用程序的主类,仅针对 java 或 scala 应用
–name 应用程序的名称
–jars 用逗号分隔的本地 jar 包,设置后,这些 jar 将包含在 driver 和 executor 的 classpath 下
–packages 包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标
–exclude-packages 为了避免冲突 而指定不包含的 package
–repositories 远程 repository
–conf PROP=VALUE 指定 spark 配置属性的值
–properties-file 加载的配置文件,默认为 conf/spark-defaults.conf
–driver-memory Driver内存,默认 1G
–driver-java-options 传给 driver 的额外的 Java 选项
–driver-library-path 传给 driver 的额外的库路径
–driver-class-path 传给 driver 的额外的类路径
–driver-cores Driver 的核数,默认是1。在 yarn 或者 standalone 下使用
–executor-memory 每个 executor 的内存,默认是1G
–total-executor-cores 所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用
–num-executors 启动的 executor 数量。默认为2。在 yarn 下使用
–executor-core 每个 executor 的核数。在yarn或者standalone下使用

Spark运行模式

Spark入门及常用组件介绍

执行角色

Driver(驱动器)

Spark Driver是执行开发程序中的主代码(创建 SparkContext、RDD的创建及转化操作等),负责Executor的资源(cpu、内存等)申请、Task调度的进程。Driver主要负责:

  • 把用户程序转为任务
  • 跟踪 Executor 的运行状况
  • 为执行器节点调度任务
  • UI 展示应用运行状况

Executor(执行器)

Spark Executor 是一个工作进程,负责Task的具体运行和运行监控,并将Task的运行情况汇报给Driver。Spark 应用启动时,Executor 节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有 Executor 节点发生了故障或崩溃,出错节点上的任务会被调度到其他 Executor 节点上继续运行。Executor主要负责:

  • 负责运行组成 Spark 应用的任务,并将结果返回给驱动器进程;
  • 通过自身的块管理器(Block Manager)为用户程序中要求缓存的 RDD 提供内存式存储。RDD 是直接缓存在 Executor 进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

Task(作业任务)

Spark Task具体的任务执行单元,是Executor中的最小数据处理单元。执行具体的数据处理代码。并支持将处理结果输出到磁盘、内存或者外部存储系统中。Task任务间相互独立。

Local模式

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

Local模式提交命令

./bin/spark-submit \
--class com.havorld.spark.WordCount \
--master local[2] \
/home/hadoop/data/Test.jar

提交输入和输出文件的写法:

  • 本地文件:file://
  • HDFS文件:hdfs://ip:port

Local模式运行流程

Spark入门及常用组件介绍

Standalone模式

由Master+Slave构成的Spark集群,Spark运行在集群中。

Standalone模式提交命令

./bin/spark-submit \
–class com.havorld.spark.WordCount \
–master spark://192.168.128.110:7077 \
–executor-memory 4G \
–total-executor-cores 6 \
/home/hadoop/data/Test.jar

Standalone模式运行流程

Spark入门及常用组件介绍

Standalone模式高可用的配置

Spark入门及常用组件介绍

YARN模式

Spark客户端直接连接YARN,不需要额外构建Spark集群。Spark YARN模型有yarn-client和yarn-cluster两种模式,主要区别在于Driver程序的运行节点。

yarn-client

Driver程序运行在客户端,Client请求Container完成作业调度执行,Client不能退出。适用于交互、调试、日志在控制台输出方便查看。

yarn-client模式提交命令
./bin/spark-submit \
--class com.havorld.spark.WordCount \
--master yarn \
--deploy-mode client \
/home/hadoop/data/Test.jar

yarn-cluster

Driver程序运行在由ResourceManager启动的ApplicationMaster,Client提交完作业就可以关掉,因为作业运行在YARN上,可以通过yarn logs -applicationIdapplication_id查看日志,一般用于生产环境中。

yarn-cluster 模式提交命令
./bin/spark-submit \
--class com.havorld.spark.WordCount \
--master yarn \
--deploy-mode cluster  \
/home/hadoop/data/Test.jar

注意
在提交任务之前需启动HDFS以及YARN集群
spark-submit提交jar包到yarn上的时候,数据输入和输出的路径必须是HDFS路径,否则将报错 :Input path does not exist

YARN模式运行流程

Spark入门及常用组件介绍

Mesos模式

Spark 客户端直接连接 Mesos;不需要额外构建 Spark集群。(国内应用较少,大多使用yarn模式来调度)

Local、Standalone、YARN模式对比

Spark入门及常用组件介绍

相关标签: Big Data