spark-6

使用SparkConf配置Spark

SparkConf conf=new SparkConf()
conf.set(“spark.app.name”,”My Spark App”)
conf.set(“spark.master”,”local[4]”);
conf.set(“spark.ui.port”,”36000”);
SparkConf 类包含用户要重载的配置选项的键值对。Spark中的每个配置选项都是基于字符串形式的键值对。
有一小部分也可用通过调用setAppName()和setMaster()来分别设置spark.app.name 和spark.master 的配置值
spark还可以在允许通过spark-submit工具来为sparkconf赋值
spark-submit –class com.xiaoding.app –master local[5] –name “My Spark App” –conf spark.ui.port =36000

spark-submit 也支持从文件中读取配置项的值。这对于设置一些与环境相关的配置项比较有用,方便不同用户共享这些配置
比如默认的Spark主节点。默认情况下,Spark -submit 脚本会在Spark 安装目录中找到spark-default.conf 文件。
也可以通过–properties- File 标记:自定义该文件的路径

注意:一旦传给了SparkContext的构造方法,应用绑定的SparkConf就不可变了,这意味着所有的配置项都必须

优先顺序: 代码 >> spark-submit >> 配置文件 >> 系统默认值
常用的Spark配置项
spark.executor.memory
(–executor-memory)

spark.executor.core 限制应用使用的核心个数的配置项。在YARN模式下会为每个任务分配指定书目的核心
(–executor-cores) 在独立模式和mesos模式下,spark.core.max 设置了所有执行器进程使用的核心总数的
上限。

spark.core.max
(–total-executor-cores)

spark.speculation 开启任务预测执行机制,当出现比较慢的任务时,这种机制会在另外的节点上尝试执行该任务的
一个副本,打开此选项会帮助减少规模集群中个别较慢的任务带来的影响。

几乎所有的Spark配置都发生在SparkConf 创建过程中,但有一个重要的选项例外。
你需要在conf/spark-env.sh 中将环境变量SPARK_LOCAL_DIRS设置为逗号隔开的存储位置列表。来指定SPARK用来混洗数据的本地存储
路径。这需要在独立模式和mesos模式下设置。

SPARK 执行的组成部分:作业、 任务、步骤
要对SPARK进行调优和测试,首先要进一步了解系统的内部设计。执行时,Spark会把操作合并为一组任务,把RDD的逻辑表示翻译为物理执行计划。

通过toDebugString() 查看RDD的谱系

Spark调度器会创建出计算行动操作的RDD物理执行计划。我们在此处调用RDD的collect方法,于是RDD的每个分区都会被物化出来并发送
到驱动器程序中,Spark调度器从最终被调用行动操作的RDD出发,向上回溯所有计算的RDD,调度器会访问RDD的父节点、父节点的父节点
递归向上生成计算所有必要的RDD的物理计划。我们以最简单的情况为例,调度器为有向图中的每个RDD输出计算步骤,步骤中包括RDD上
需要应用于每个分区的任务,然后以相反的顺序执行这些步骤,计算出最终所求的RDD。

特定的行动操作所生成的步骤的集合被称为一个作业,我们通过类似count之类的方法出发行动操作,创建出一个或多个步骤组成的作业

一旦步骤图确定下来,任务就会被创建出来并发给内部的调度器,该调度器在不同的部署模式下回有所不同,物理计划中的步骤会依赖与
其他步骤,如RDD谱系图所显示的那样。因此,这些步骤会以特定的顺序执行,例如一直输出混洗后的数据步骤一定会依赖于数据混洗的那个步骤
一个物理步骤会启动很多任务,每个任务都是在不同的数据分区上做同样的事情,热为奴内部的流程是一样的。
1. 从数据存储或者已有RDD或数据混洗的输出中获取输入数据
2.执行必要的操作来计算出这些操作所代表的RDD,例如,对输入数据执行filter和map函数,或者进行分组或归约操作
3.把输出写到一个数据混洗文件中,写入外部存储,或者是发挥驱动器程序
总结:Spark大部分日志信息和工具都是以步骤、任务或者数据混洗为单位的,理解用户代码如何编译为物理执行时需要探究的
1. 用户代码定义RDD的有向无环图:RDD上的操作创建出新的RDD,并引用他们的父节点,这样就创建出一个图
2.行动操作把有向无环图强制转译为执行计划:当你调用RDD的一个行动操作时,这个RDD就必须被计算出来。
3.任务于集群中调度屏执行:步骤是按顺序执行的,任务则独立地启动来计算RDD的一部分。一旦作业的最后一个步骤结束,一个行动操作
也就执行完毕了

查找信息:
Spark的网页用户界面以及驱动器进程和执行器进程生成的日志文件中。

关键性能考量:

并行度 :RDD的逻辑表示其实是一个对象集合,我们在本书中多次提到,在物理执行期间,RDD会被分为一系列的分区,每个分区都是整个
数据的子集,当Spark调度并运行任务时,Spark会为每个分区中的数据创建一个任务。该任务在默认情况下会需要集群中的一个计算核心来
执行。Spark也会针对RDD直接自动推出合适的并行度,这对于大多数用例来说已经够了
Spark提供两种方法对操作的并行度进行调优
1. 在数据混洗操作时,使用参数的方式为RDD制定并行度
2. 对于任何已有的RDD,可以进行重新分区来获取更多或更少的分区数,通过reparitition()实现。
如果要减少RDD分区,可以使用coalesce()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值