Spark Standalone 运行模式

Standalone 模式是使用 spark 自带的集群管理器管理节点的方式,相比 Yarn 模式, standalone 模式不依赖 Hadoop 环境.

standalone模式启动集群命令详解

直接启动 master、worker 集群

使用 sbin/start-all.sh

单独启动 master、worker 集群

大多数时候,集群中各个节点的机器的核数,内存等资源是不同的,不方便使用 sbin/start-all.sh 直接启动, 这时候,就可以使用命令行单独启动 master 和 worker 节点.

单独分别启动master和worker进程必须先启动master进程,再启动worker进程,因为worker进程启动后,需要向 master 进程去注册,反过来先启动 worker 进程,再启动 master 进程,可能会有问题.

启动 master 进程

使用sbin/start-master.sh启动.

master 启动后日志会打印出master 的URL地址和集群监控webUI地址, 形如spark://HOST:PORT URLhttp://MASTER_HOST:8081

启动worker进程

使用 sbin/start-slave.sh <master-spark-URL> 启动

启动后,访问 http://MASTER_HOST:8082,就可以看见新启动的worker节点,包括该节点的cpu和内存资源等信息

命令行可用的参数
参数 说明
-h HOST, –host HOST 在哪台机器上启动,默认就是本机
-p PORT, –port PORT 对外提供服务的端口, master默认是7077,worker默认是随机的
–webui-port PORT web ui的端口,master默认是8080,worker默认是8081
-c CORES, –cores CORES 仅限于 worker,总共能让spark作业使用多少个cpu core,默认是当前机器上所有的 cpu core
-m MEM, –memory MEM 仅限于worker,总共能让spark作业使用多少内存,是100M或者1G这样的格式,默认是1g
-d DIR, –work-dir DIR 仅限于worker,工作目录,默认是SPARK_HOME/work目录
–properties-file FILE master和worker加载默认配置文件的地址,默认是conf/spark-defaults.conf

配置spark-env.sh说明

配置项 说明
SPARK_MASTER_IP 指定master进程所在的机器的ip地址
SPARK_MASTER_PORT 指定master监听的端口号(默认是7077)
SPARK_MASTER_WEBUI_PORT 指定master web ui的端口号(默认是8080
SPARK_LOCAL_DIRS spark的工作目录,包括了shufflemap输出文件,以及持久化到磁盘的RDD等
SPARK_WORKER_PORT worker节点的端口号,默认是随机的
SPARK_WORKER_WEBUI_PORT worker节点的web ui端口号,默认是8081
SPARK_WORKER_CORES worker节点上,允许spark作业使用的最大cpu数量,默认是机器上所有的cpu core
SPARK_WORKER_MEMORY worker节点上,允许spark作业使用的最大内存量,格式为1000m,2g等,默认最小是1g内存
SPARK_WORKER_INSTANCES 当前机器上的worker进程数量,默认是1,可以设置成多个,但是这时一定要设置SPARK_WORKER_CORES,限制每个worker的cpu数量
SPARK_WORKER_DIR spark作业的工作目录,包括了作业的日志等,默认是spark_home/work
SPARK_WORKER_OPTS worker的额外参数,使用”-Dx=y”设置各个参数
SPARK_DAEMON_MEMORY 分配给master和worker进程自己本身的内存,默认是1g
SPARK_PUBLISC_DNS master和worker的公共dns域名,默认是没有的

有三个配置项是用于配置额外参数的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SPARK_MASTER_OPTS:
设置master的额外参数,使用"-Dx=y"设置各个参数
比如 export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=1"
可用的配置项:
spark.deploy.retainedApplications 200 在sparkwebui上最多显示多少个application的信息
spark.deploy.retainedDrivers 200 在spark web ui上最多显示多少个driver的信息
spark.deploy.spreadOut true 资源调度策略,spreadOut会尽量将application的executor进程分布在更多worker上,适合基于hdfs文件计算的情况,提升数据本地化概率;非spreadOut会尽量将executor分配到一个worker上,适合计算密集型的作业
spark.deploy.defaultCores 无限大 每个spark作业最多在standalone集群中使用多少个cpu core,默认是无限大,有多少用多少
spark.deploy.timeout 60 单位秒,一个worker多少时间没有响应之后,master认为worker挂掉了


SPARK_WORKER_OPTS:
worker的额外参数,使用"-Dx=y"设置各个参数
spark.worker.cleanup.enabled false 是否启动自动清理worker工作目录,默认是false
spark.worker.cleanup.interval 1800 单位秒,自动清理的时间间隔,默认是30分钟
spark.worker.cleanup.appDataTtl 7 * 24 * 3600 默认将一个spark作业的文件在worker工作目录保留多少时间,默认是7天


SPARK_DAEMON_JAVA_OPTS:
设置master和worker自己的jvm参数,使用"-Dx=y"设置各个参数

三种模式提交 spark 作业

spark standalone 有三种提交的 spark 作业的模式,分别是 local,client 和 cluster 模式.

local 模式用于本地开发,为了方便测试和调试
client 模式用于测试环境, 为了方便看日志
cluster 模式用于生产环境, 为了解决 driver 单点故障问题

local 模式

local 模式下, 没有 master+worke ,相当于启动一个本地进程,然后在一个进程内模拟spark集群中作业的运行.
一个spark作业,就对应了进程中的一个或多个executor线程,开始执行作业的调度,task分配等等操作.

在实际工作当中,local模式,主要用于本地开发测试,通常是手动生成一份数据去使用

eg.

1
2
3
4
5
6
/usr/local/spark-2.2.1/bin/spark-submit \
--num-executors 1 \
--driver-memory 100m \
--executor-memory 100m \
--executor-cores 1 \
/usr/local/spark-2.2.1/examples/src/main/python/wordcount.py file:///home/zj/test.txt

client 模式

client 模式下,提交作业后,driver在本机启动,可以实时看到详细的日志信息,方便追踪和排查错误.

standalone模式提交,唯一与local区别就是要设置master的地址,有三种方法:

1
2
3
1、硬编码: SparkConf.setMaster("spark://IP:PORT")
2、spark-submit: --master spark://IP:PORT (最合适)
3、spark-shell: --master spark://IP:PORT

提交模式默认是 client,也可以用 --deploy-mode client 配置项声明.

cluster 模式

cluster 模式下, 向 master 提交申请后, 会在 worker 节点中选择一个节点作为 driver 节点,可以在 web ui 中观察到启动的 driver.

standalone cluster模式,还支持监控driver进程,并且在driver挂掉的时候,自动重启该进程
要使用这个功能,在spark-submit脚本中,使用–supervise标识即可

文章标题:Spark Standalone 运行模式

文章字数:1.6k

本文作者:Waterandair

发布时间:2018-01-17, 11:20:47

最后更新:2020-01-09, 16:37:46

原始链接:https://waterandair.github.io/2018-01-17-spark-standalone.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

github