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 URL
和 http://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 | SPARK_MASTER_OPTS: |
三种模式提交 spark 作业
spark standalone 有三种提交的 spark 作业的模式,分别是 local,client 和 cluster 模式.
local 模式用于本地开发,为了方便测试和调试
client 模式用于测试环境, 为了方便看日志
cluster 模式用于生产环境, 为了解决 driver 单点故障问题
local 模式
local 模式下, 没有 master+worke ,相当于启动一个本地进程,然后在一个进程内模拟spark集群中作业的运行.
一个spark作业,就对应了进程中的一个或多个executor线程,开始执行作业的调度,task分配等等操作.
在实际工作当中,local模式,主要用于本地开发测试,通常是手动生成一份数据去使用
eg.
1 | /usr/local/spark-2.2.1/bin/spark-submit \ |
client 模式
client 模式下,提交作业后,driver在本机启动,可以实时看到详细的日志信息,方便追踪和排查错误.
standalone模式提交,唯一与local区别就是要设置master的地址,有三种方法:
1 | 1、硬编码: SparkConf.setMaster("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" 转载请保留原文链接及作者。