Spark on Yarn相关一些使用小技巧总结

1、Spark on Yarn 有两种模式,一种是cluster模式,一种是client模式。

a.执行命令 “./spark-shell --master yarn” 默认运行的是client模式。

b.执行 "./spark-shell --master yarn-client" 或者 "./spark-shelll --master yarn --deploy-mode client",运行client模式。

c.执行 "./spark-shell --master yarn-cluster" 或者 "./spark-shell --master yarn --deploy-mode cluster"。

d.client 和 cluster模式的主要区别:前者的driver是运行在客户端进程中,后者的driver是运行在NodeManager的ApplicationMaster之中。driver是负责分发作业的,运行在ApplicationMaster里的driver是无法直接与客户端进行通信的。

注:生产上通常使用的是spark on yarn-cluster模式,由于client模式的driver在客户端上,可能与executor不在同一局域网,两者之间的通信会很慢。

2、提交作业的方式

./spark/bin/spark-submit --class org.apache.spark.examples.SparkPi \        #作业类名
    --master yarn \                       #spark模式
    --deploy-mode cluster \                #spark on yarn 模式
    --driver-memory 4g \                    #每一个driver的内存
    --executor-memory 2g \                    #每一个executor的内存
    --executor-cores 1 \                        #每一个executor占用的core数量
    --queue thequeue \                            #作业执行的队列
    examples/jars/spark-examples*.jar \            #jar包
    10                                               #传入类中所需要的参数

3、提交作业时 yarn 会将spark jars分发到 yarn 的container中,这十分耗费资源,故而可以将spark jars放在一个yarn可以访问到的目录中,具体的做法如下(调优点)

vim spark-default.conf 添加

spark.yarn.jars hdfs://ip:8021/somepath/*

保存生效,并将所有的spark jars上传至 hdfs://ip:9000/somepath/即可

4、spark对于同时运行的作业数目有一定的限制

该限制由参数 "spark.port.maxRetries"决定,该参数默认值为16,表明同一时间运行的作业最多为17个(不是16个),可以进行更改:

vim spark-default.conf 添加

spark.port.maxRetries ${业务所需要的数值}

5、启动spark on yarn 的命令优化

举个栗子:"/spark-shell --master yarn --jars mysql驱动包绝对路径" ,该命令相对较繁琐

vim spark-defaults.conf 添加

spark.executor.extraClassPath mysql驱动包绝对路径

spark.driver.extraClassPath mysql驱动包绝对路径

保存生效,则启动命令变成:“/spark-shell --master yarn”

注:当某个jar包或者某个类找不到的时候,都可以用这种方式手动指定类或jar包的路径

继续简化,vim spark-defaufs.conf 添加

spark.master spark

则启动命令变成:"/spark-shell"

6、直接修改spark.defaults.conf,会对其它spark模式产生影响

可以拷贝一份spark-defaults.conf,重命名后配置个性化参数,然后以命令:

/spark-shell --properties-file ${你拷贝的配置文件绝对路径} 启动

7、命令行传入属性的方法

/spark-shell --master yarn --conf spark.属性 = 值

8、作业最大重试次数

作业最大重试次数默认是等于yarn配置中设置的全局最大重试数,可以进行设置:

spark.yarn.maxAppAttempts=值

但不应该大于yarn设置的全局最大重试次数。

猜你喜欢

转载自blog.csdn.net/LINBE_blazers/article/details/86762390