一、spark的指令参数
在spark的bin下有是spark的指令,指令运行时可以指定对用的参数,实现对服务的控制
# 查看指令参数
pyspark --help
# 常用参数的使用
pyspark --master yarn --name yarn_demo --conf 'PYSPARK_PYTHON=/export/server/anaconda3/bin/python3' --conf '其他配置'
--executor-memory 2G --executor-cores 2 --num-executors 3
# 表示应用运行的模式,要么是本地local要么是集群(Standalone、YARN、Mesos)了
--master MASTER_URL
# 本地模式∶local[2] 数字表示可以使用到本地的cpu核心数据量, loacl[*] *表示自动判断
# Standalone集群∶spark∶//xxx∶7077,yyy∶7077
# YARN 集群∶ yarn
# 表示Drive Program运行的地方,也叫做应用部署模式,默认值为client,通常在生成环境中使用cluster
--deploy-mode DEPLOY_MODE
# 表示运行Spark Application的类名称,注意为类的全名称(包含包名)
--class CLASS_NAME
# 表示的是应用运行的名称,通常在应用开发的时候指定
--name NAME
# 表示应用的类所依赖的第三方的Jar包指定路径,通常在本地文件系统中,多个】ar包使用逗号隔开<15
-jars JARS
# 表示应用运行时指定的某些参数配置,http∶//spark.apache.org/docs/2.2.0/configuration.html
# 当value中值有空格组成的时候,使用双引号将key=value引起来
# 可以不用在bashrc写配置可以通过conf配置,每次运行都要指定很麻烦
--conf "PROP=VALUE"
# 第一种方式∶属性的值中没有空格
--conf spark.eventLog.enabled=false
# 第二种方式∶属性的值中有空格,将属性和值统一使用双引号引起来
--conf"spark.executor.extraJavaOptions=-XX:+PrintGCDetails -XX:+PrintGCTimestamps"
# Driver相关配置
# 指定Driver Program JVM进程内存大小,默认值为1g
--driver-memory MEM
# 表示Driver 运行CLASS PATH路径,使用不多
--driver-class-path
# Spark standalone with cluster deploy mode∶运行在standalone 中cluster Deploy Mode 默认值为1 cpu核心数据
# 运行在YARN in cluster mode,默认值是1
--driver-cores NUM
# 运行在standalone的 中cluster Deploy Mode下,表示当Driver运行异常失败,可以自己重启
--supervise
# Executor运行所需内存大小
--executor-memory MEM
# Execturo 运行的CPU Cores,默认的情况下,在Standalone集群上为worker节点所有可有的CpuCores,在YARN集群下为1
--executor-cores NUM
# 表示运行在Standalone集群下,所有Executor的CPU Cores,结合--executor-cores计算出Executor个数
--total-executor-cores
# 表示在YARN集群下,Executor的个数,默认值为2
--num-executors
# 表示Executor运行的队列,默认为default队列
--queue QUEUE_NAME
standalone fifo
二、spark-submit提交方式
集群模式提交计算任务的模式
client 客户端(本地)模式
cluster 集群模式
区别在于dirver在哪里运行?
dirver在提交代码的服务器上运行时,就是client模式
dirver有资源调度分配在哪台机器上运行,就是cluster
提交指令
spark-submit --deploy-mode cluster 代码文件名
- client
- 该模式提交时,是在当前服务器上运行dirver,有可能当前服务器资源不足,造成dirver无法运行
- 不需要给dirver创建container,直接使用本地。默认能使用的资源 内存1G cpu核心 1个
- cluster
- 集群模式提交dirver有rm生成,rm虽然是随机找nm,但是中的是资源充足的nm,可以保证dirver能正常运行
- applicationmaster和dirver运行在同一台服务器上,使用不同容器资源
- 使用
spark-submit --master yarn --deploy-mode cluster 代码文件
三、spark中的名词解释
当spark完成计算后,会产生对应的日志计算信息,在计算信息中显示了计算的流程
流程中涉及Application,job,stage,task的信息
- Application 代表一个计算程序,当运行一个dirver时就会有一个计算程序,可以指定名称
- job 计算任务
- stage 将计算任务划分多个计算部分,每个stage中的任务并行执行 rdd依赖
- task 以线程的方式执行每个计算部分中的代码