赞
踩
spark单机运行,开发测试,可以local[N]
来设置使用N个线程,每个线程有一个core。spark-submit默认是spark-submit --master local
,spark-shell默认是spark-shell --master local。
注:
(1)只需要把Spark的安装包解压后,改一些常用的配置即可使用,而不用启动Spark的Master、Worker守护进程,也不用启动Hadoop的各服务(除非需要用到HDFS)。
(2)SparkSubmit进程既是客户提交任务的Client进程、又是Spark的driver程序、还充当着Spark执行Task的Executor角色。
Yarn 模式是把资源统一交给 Yarn 集群来管理,其优点在于实现了 application 的多样性,如 MapReduce 程序、HBase 集群、Storm 集群、spark 集群等;
Yarn 模式有两种运行模式:client 和 cluster,区别在于
如果知道了在哪个节点,在该节点上安装程序运行所需环境即可,
但是事实是哪个节点都有可能,这意味着需要在所有节点上安装程序运行所需环境,显然这不是个好办法;
随着 application 的增加,需要不断安装新的包,而且不同 application 可能存在版本问题,这对于 client 模式来说或许还可以接受,但 cluster 模式肯定不行的,如果集群很大,装环境会很麻烦。
一句通俗的话描述 Pyspark On Yarn:Driver 从本地电脑获取环境后分发给 Container 来执行。
master 的地址,提交任务到哪里执行,例如 spark://host:port, yarn, local
MASTER_URL:设置集群的主URL,用于决定任务提交到何处执行。
常见的选项有
local:提交到本地服务器执行,并分配单个线程
local[k]:提交到本地服务器执行,并分配k个线程
spark://HOST:PORT:提交到standalone模式部署的spark集群中,并指定主节点的IP与端口
mesos://HOST:PORT:提交到mesos模式部署的集群中,并指定主节点的IP与端口
yarn:提交到yarn模式部署的集群中
在本地 (client) 启动 driver 或在 cluster 上启动,默认是 client
DEPLOY_MODE:设置driver启动的位置,可选项如下,默认为client
client:在客户端上启动driver,这样逻辑运算在client上执行,任务执行在cluster上
cluster:逻辑运算与任务执行均在cluster上,cluster模式暂时不支持于Mesos集群或Python应用程序
应用程序的主类,仅针对 java 或 scala 应用
CLASS_NAME:指定应用程序的类入口,即主类,仅针对java、scala程序,不作用于python程序
应用程序的名称
用逗号分隔的本地 jar 包,设置后,这些 jar 将包含在 driver 和 executor 的 classpath 下
包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标
为了避免冲突 ,指定的参数–package中不包含的jars包
远程 repository
附加的远程资源库(包含jars包)等,可以通过maven坐标进行搜索
PY_FILES:逗号隔开的的.zip、.egg、.py文件,这些文件会放置在PYTHONPATH下,该参数仅针对python应用程序
FILES:逗号隔开的文件列表,这些文件将存放于每一个工作节点进程目录下
指定spark配置属性的值,格式为PROP=VALUE, 例如 --conf spark.executor.extraJavaOptions=“-XX:MaxPermSize=256m”
指定需要额外加载的配置文件,用逗号分隔,如果不指定,默认为 conf/spark-defaults.conf
Driver内存,默认 1G
传给 driver 的额外的 Java 选项
传给 driver 的额外的库路径
传给 driver 的额外的类路径,用–jars 添加的jar包会自动包含在类路径里
Driver 的核数,默认是1。在 yarn 或者 standalone 下使用
每个 executor 的内存,默认是1G
所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用
启动的 executor 数量。默认为2。在 yarn 下使用
每个 executor 的核数。在yarn或者standalone下使用
当–master参数设置为Standalone,–deploy-mode参数设置为cluster时,如下选项可以设置:
–driver-cores NUM:driver使用的内核数,默认为1
当–master参数设置为Standalone或者Mesos,–deploy-mode参数设置为cluster时,如下选项可以设置:
–supervise:如果设置了该参数,driver失败是会重启
–kill SUBMISSION_ID:如果设置了该参数,则会杀死指定SUBMISSION_ID的driver进程
–status SUBMISSION_ID:如果设置了该参数,则请求返回指定SUBMISSION_ID的driver的状态
当–master参数设置为Standalone或者Mesos时,如下选项可以设置:
–total-executor-cores NUM:设置集群中所有工作节点上executor使用的内核总数
当–master参数设置为Standalone或者YARN时,如下选项可以设置:
–executor-cores NUM:每个executor使用的核数
当–master参数设置为YARN时,如下选项可以设置:
–driver-cores NUM :当–deploy-mode为cluster时,driver使用的内核数,默认为1
–queue QUEUE_NAME :将任务提交给哪个YARN队列,默认为YARN的默认队列
–num-executors NUM:设置启动的executor数量,默认为2
–archives ARCHIVES :被每个executor提取到工作目录的档案列表,用逗号隔开
Driver 负责把本地的资源分发给 Container
在 client 模式下,Driver 就找在 Client 端,可以把 client 端的资源分发,而 cluster 模式下,Driver 可在集群任一节点,该节点是没有资源的
如果是 普通依赖:
在 client 模式下,Driver 可能自动收集资源,分发,无需上传依赖;
在 cluster 模式下,Driver 无法收集资源,必须上传依赖;
在 client 模式 和 cluster 模式下,都需要通过 虚拟环境 上传依赖
在工业环境中,使用的多是 cluster 模式,cluster 模式必须上传依赖
在调试环节,多使用 client 模式,client 只需上传复杂依赖即可
[0] 官方文档spark-submit说明
[1] spark-submit提交任务及参数说明
[2] Pyspark On Yarn 的模块依赖问题
[3] Pyspark学习笔记(二)— spark-submit命令
[4] 搞懂spark-submit参数及应用程序提交(详细)
[5] PySpark on Yarn 的 Python 环境与包依赖解决方式
[6] Spark常用启动方式(三种)
[7] 算法工程师应知应会-部署spark任务提交
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。