赞
踩
spark-submit \
--master yarn \
--name mongoToHive \
--deploy-mode client \
--class com.lihua.mongoToHive.DataController \
--driver-memory 1G \
--driver-cores 1 \
--executor-memory 2G \
--executor-cores 2 \
--num-executors 4 \
/opt/jars/mongodbToHive.jar \
mongodb://root:root123456@192.168.1.124:27017,192.168.1.123:27017,192.168.1.125:27017/ \
lhiot \
"试验场" \
thrift://192.168.1.119:9083/ \
ods.mongo_xhdevice_mess \
append \
originTime \
${yesterdate} \
${yesterdate} \
pt_d
应用程序的名称,方便在webui上查看程序状况,或查看日志时进行区别。
master指定的地址,提交任务到哪里执行,例如 spark://host:port, yarn, local, mesos://host:port(国外常用) 等。
spark任务的部署方式:
local模式(本地模式),一般调试的时候使用。
1、【local】: 所有计算都运行在一个线程当中,没有任何并行计算,通常我们在本机执行一些测试代码,或者练手,就用这种模式。
2、【local[n]】:指定使用几个线程来运行计算,比如local[n]就是运行n个worker线程。通常我们的cpu有几个core,就指定几个线程,这样可以最大化利用cpu的计算能力。
3、【local[*]】: 该模式按照本机cpu最多cores来设置线程数,一般大家都不会可以去记自己本机的cup核数,所以这是高效省事的写法。
cluster模式(集群模式),一般代码线上部署时使用,当然测试时也会涉及。
1、【spark://host:port(,slave1:port,slave2:port…)】:独立部署模式,将程序提交给指定的Spark独立集群,只使用Spark自身节点运行的集群模式。Spark会自己负责资源的管理调度,它将cluster中的机器分为master机器和worker机器。生产环境一般不会把spark部署为standalone模式,除非是学习调试阶段,才会将spark部署为该模式。
2、【yarn】:将程序提交到yarn集群,由yarn集群调度资源,指定master机器和worker机器。正式生产环境都是这种部署模式,很多时候我们需要和mapreduce使用同一个集群。
其中yarn模式又分为yarn-cluster模式和yarn-client模式:
【yarn-cluster】: 这个就是生产环境常用的模式,所有的资源调度和计算都在集群环境上运行。
【yarn-client】: 这个是说Spark Driver和ApplicationMaster进程均在本机运行,而计算任务在cluster上。
yarn-cluster和yarn-client的区别在于yarn appMaster,每个yarn app实例有一个appMaster进程,是为app启动的第一个container;负责从ResourceManager请求资源,获取到资源后,告诉NodeManager为其启动container。yarn-cluster和yarn-client模式内部实现还是有很大的区别。如果你需要用于生产环境,那么请选择yarn-cluster;而如果你仅仅是Debug程序,可以选择yarn-client。
主程序Program Driver启动的方式,默认为 client
1、【client】:本地客户端模式,在本地启动driver,并且本地会产生一个程序的客户端。
2、【cluster】:集群工作节点模式,由集群调度一个主节点启动driver,任务最终都会提交给主节点处理,所以在指定任务提交方式时,考虑本地客户端和集群工作节点对主节点的网络开销问题即可。
应用程序的主类即入口类,仅针对 java 或 scala 应用。
包含在driver和executor的classpath中的jar的maven坐标。
如果应用依赖于少量第三方的jar包,可以把它们放在这个参数里,用逗号分隔的本地jar包,设置后,这些jar包将包含在driver和executor的classpath下。
为了避免冲突 而指定不包含的package,程序加载会排除该指定下的jar包。
driver使用内核数,默认为1(在yarn或者standalone模式下使用)。
driver是驱动整个应用的主驱动程序,也可以把它理解为是主进程。
其主要作用:
1、将用户程序转化为作业(job)
2、在Executor之间调度任务(task)
3、跟踪Executor的执行情况
4、通过UI展示查询运行情况
driver内存大小,占用客户端内存,用于通信及调度开销,默认512M。
启动executor的数量,默认为2(在yarn模式下使用)。
Spark Executor是集群中工作节点(Worker)中的一个JVM进程,负责在Spark 作业中运行具体任务(Task),任务彼此之间相互独立。Spark 应用启动时,Executor节点被同时启动,并且始终伴随着整个 Spark应用的生命周期而存在。如果有 Executor 节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。
其主要作用:
1、负责运行组成 Spark 应用的任务,并将结果返回给驱动器进程。
2、它们通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在 Executor 进程内的,因此任务可以在运行时充分利用缓存数据加速运算。
每个executor使用的内核数,默认为1(在yarn或者standalone模式下使用,官方建议为2-5个)
每个executor内存大小,占用工作节点内存,主要用于执行任务的内存开销,默认为1G。
最终,将所需配置指定完之后,需要在最后指定启动类所在的主程序包,以及主程序中需要给定的参数。
指定spark配置属性的值,用于spark调优,参数格式为KEY=VALUE。
例如:
–conf spark.default.parallelism=1000 设置RDD分区大小,系统默认为200。
–conf spark.storage.memoryFraction=0.5 设置内存分配大小(存储),系统默认为0.6。
–conf spark.shuffle.memoryFraction=0.3 设置shuffle上限内存空间,系统默认为0.2。
用逗号隔开的文件列表,会放置在每个executor工作目录中,通过SparkFiles.get(fileName)调用。
可以用来上传配置文件,默认路径为conf/spark-defaults.conf。
如果使用–properties-file,在–properties-file中定义的属性就不必要在spark-sumbit中再定义了,比如在conf/spark-defaults.conf中定义了spark.master,就可以不使用–master了。如果不指定,默认使用conf/spark-defaults.conf文件中的配置。(关于Spark属性的优先权为:SparkConf方式 > 命令行参数方式 > 文件配置方式)
远程repository储存库。
例如:【–repositories https://oss.sonatype.org/content/groups/public/ 】
传给driver的额外的java选项。
传给driver的额外的库路径。
传给driver的额外的类路径。
设置任务占用的总CPU核数(即任务的并发量),由主节点指定各个工作节点CPU的使用数(仅仅在mesos或者standalone模式下使用)。
以上只是我遇到的一些参数配置的理解,还有一些配置我还未遇到了解,这里并没有做解释。
感谢大家的鉴赏,欢迎大家点赞加关注,蟹蟹!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。