Spark版本:1.6.2

spark-submit提供了在所有集群平台提交应用的统一接口,你不需要因为平台的迁移改变配置。Spark支持三种集群:Standalone、Apache Mesos和Hadoop Yarn。

绑定应用程序依赖库

如果你的应用程序依赖其他项目,需要将其一起打包,打包时需要包括依赖的第三方库。sbtmaven都有装配插件,可以指定hadoop和spark版本,而不将其打入jar包中,因为hadoop和spark的库由集群环境提供。然后通过spark安装目录下的spark-submit工具提交你的应用程序。

对于python程序,需要添加--py-files参数,若有多个Python文件,推荐将其打包zip或egg,然后执行。

spark-submit提交应用

spark-submit支持对三种集群提交应用,主要语法如下:

./bin/spark-submit \
--class <main-class> \
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]

参数详解:

  • --class: 应用程序的入口,例如org.apache.spark.example.SpariPi
  • --master: 指定集群类型,例如local(本地)、spark://master:7077(stanalone模式)、yarn-client
  • --deploy-mode: 是否将Driver部署到worker节点,默认是在client
  • --conf: 配置spark环境,在引号中使用key=value形式
  • appliaction-jar: 指定应用程序的jar包
  • application-arguments: 应用程序的参数

还有一些针对各个集群平台的非通用的设置,例如使用Spark standalone cluster时,可以配置--supervise参数,确保driver在返回值为非零时,自动重启。下面是一些常用的配置用例:

# Run application locally on 8 cores
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[8] \
/path/to/examples.jar \
100 # Run on a Spark standalone cluster in client deploy mode
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://207.184.161.138:7077 \
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000 # Run on a Spark standalone cluster in cluster deploy mode with supervise
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://207.184.161.138:7077 \
--deploy-mode cluster \
--supervise \
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000 # Run on a YARN cluster
export HADOOP_CONF_DIR=XXX
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \ # can be client for client mode
--executor-memory 20G \
--num-executors 50 \
/path/to/examples.jar \
1000 # Run a Python application on a Spark standalone cluster
./bin/spark-submit \
--master spark://207.184.161.138:7077 \
examples/src/main/python/pi.py \
1000 # Run on a Mesos cluster in cluster deploy mode with supervise
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master mesos://207.184.161.138:7077 \
--deploy-mode cluster \
--supervise \
--executor-memory 20G \
--total-executor-cores 100 \
http://path/to/examples.jar \
1000

Master URLs

下面对spark-submit的--master参数进行介绍,主要包含以下几种类型:

Master URL 简介
local 在本地使用一个worker线程运行spark
local[K] 在本地使用K个worker线程运行spark
local[*] 在本地运行CPU核心数个worker线程
spark://HOST: PORT 连接到Spark standalone集群的master节点,默认port是7077
mesos://HOST: PORT 连接到mesos集群,默认port是5050
yarn 连接到yarn集群,通过--deploy-mode指定yarn-client和yarn-cluster两种模式。集群的位置通过HADOOP_CONF_DIRYARN_CONF_DIR变量配置

通过文件加载配置

Spark可以通过配置文件或应用代码、或者spark-submit参数加载相关的配置。默认情况下,spark读取conf/spark-defaults.conf配置。默认的spark配置参见下一文档。
若是通过代码设置spark.master参数,则--master参数会被忽略。一般来说,可以通过SparkConf配置的属性优先级最高,其次是spark-submit的属性,最后是配置文件。代码优先级 > spark-submit参数 > 配置文件。

先进的依赖管理

spark-submit的**--jars**选项会根据集群不同选择不同的处理策略。spark支持以下几种URL模式,并使用不同策略:

  • file: 绝对的文件路径,各个worker通过http服务从driver节点copy文件;
  • hdfs:http: https ftp: 通过相应的协议拉取jar文件到本地;
  • local: 这种URL代表在每个worker的本地路径下都已经存在该文件,不会触发网络IO

由于每个worker都会拷贝文件到本地,如何清理是个问题。yarn会自动定期处理,spark standalone集群可以配置spark.worker.cleanup.appDataTtl配置保存的时间,默认是7天。
用户还可以通过--packages包含其他的依赖,这些依赖库的传播依赖也会被包含。--repositories可以包含额外的库仓储。这些参数在pyspark, spark-shell, spark-submit中都支持。

spark测试RDD所占存储

(获取部分记录,并根据RDD记录数对RDD所占空间进行预估):

def getTotalSize(rdd: RDD[Row]): Long = {
// This can be a parameter
val NO_OF_SAMPLE_ROWS = 10l;
val totalRows = rdd.count();
var totalSize = 0l
if (totalRows > NO_OF_SAMPLE_ROWS) {
val sampleRDD = rdd.sample(true, NO_OF_SAMPLE_ROWS)
val sampleRDDSize = getRDDSize(sampleRDD)
totalSize = sampleRDDSize.*(totalRows)./(NO_OF_SAMPLE_ROWS)
} else {
// As the RDD is smaller than sample rows count, we can just calculate the total RDD size
totalSize = getRDDSize(rdd)
} totalSize
} def getRDDSize(rdd: RDD[Row]) : Long = {
var rddSize = 0l
val rows = rdd.collect()
for (i <- 0 until rows.length) {
rddSize += SizeEstimator.estimate(rows.apply(i).toSeq.map { value => value.asInstanceOf[AnyRef] })
} rddSize
}

更多信息

当部署好应用程序后,集群模式概述对分布式执行、如何监控和调试程序进行了阐述。

spark 官方文档(1)——提交应用程序的更多相关文章

  1. Spark官方文档 - 中文翻译

    Spark官方文档 - 中文翻译 Spark版本:1.6.0 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linki ...

  2. Spark官方文档——本地编写并运行scala程序

    快速开始 本文将介绍如何用scala.java.python编写一个spark单击模式的程序. 首先你只需要在一台机器上成功建造Spark:做法: 进入Spark的根目录,输入命令:$ sbt/sbt ...

  3. Spark 官方文档(2)——集群模式

    Spark版本:1.6.2 简介:本文档简短的介绍了spark如何在集群中运行,便于理解spark相关组件.可以通过阅读应用提交文档了解如何在集群中提交应用. 组件 spark应用程序通过主程序的Sp ...

  4. 《Spark 官方文档》在Mesos上运行Spark

    本文转自:http://ifeve.com/spark-mesos-spark/ 在Mesos上运行Spark Spark可以在由Apache Mesos 管理的硬件集群中运行. 在Mesos集群中使 ...

  5. spark api之一:Spark官方文档 - 中文翻译

    转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linking with Spark) 3 初始化Spark(Initi ...

  6. 【译】Spark官方文档——Spark Configuration(Spark配置)

    注重版权,尊重他人劳动 转帖注明原文地址:http://www.cnblogs.com/vincent-hv/p/3316502.html   Spark主要提供三种位置配置系统: 环境变量:用来启动 ...

  7. Spark 官方文档(5)——Spark SQL,DataFrames和Datasets 指南

    Spark版本:1.6.2 概览 Spark SQL用于处理结构化数据,与Spark RDD API不同,它提供更多关于数据结构信息和计算任务运行信息的接口,Spark SQL内部使用这些额外的信息完 ...

  8. 【译】Spark官方文档——编程指南

    本文翻自官方博客,略有添加:https://github.com/mesos/spark/wiki/Spark-Programming-Guide Spark发指南 从高的面看,其实每一个Spark的 ...

  9. Spark 官方文档(4)——Configuration配置

    Spark可以通过三种方式配置系统: 通过SparkConf对象, 或者Java系统属性配置Spark的应用参数 通过每个节点上的conf/spark-env.sh脚本为每台机器配置环境变量 通过lo ...

随机推荐

  1. Lua面线对象学习

    --[[ ]] local userdata = {} local Register = {} function Register:del(key) userdata[self.namespace][ ...

  2. LCX端口转发实现内网突破

    工具:lcx.exe 原理:当目标主机仅开放了web服务,而该服务又仅能供内网用户使用,外网用户根本无法直接访问.因此想要让外网用户能能够访问局域网中的系统服务,必须进行端口映射等操作才行.其原理就是 ...

  3. PAT 1046. 划拳(15)

    划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒.两人同赢或两人同输 ...

  4. Python 【第十一章】 Django模版

    1.直接传值 urls.py """mysite URL Configuration The `urlpatterns` list routes URLs to view ...

  5. virtualBox安装Centos7之后

    之前用vmware装虚拟机的时候,直接配置好网卡就可以ping通,可以用ssh登录,然后配置yum源,万事大吉. 但是virtualBox配置却有不同,需要按下面的方法配置: 选中虚拟机->设置 ...

  6. C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有

    前言:最近项目里面有一些对Excel操作的需求,博主想都没想,NPOI呗,简单.开源.免费,大家都喜欢!确实,对于一些简单的Excel导入.导出.合并单元格等,它都没啥太大的问题,但是这次的需求有两点 ...

  7. [转] eclipse SVN中文件修改后图标不变黑星解决

    原文地址:http://blog.csdn.net/luwei42768/article/details/39225641 版权声明:本文为博主原创文章,未经博主允许不得转载. 如上图, 如果文件修改 ...

  8. ios app 企业帐号发布,在浏览器中直接点击链接下载安装

    软件环境:Xcode 6.4 参考链接: 1.http://zxs19861202.iteye.com/blog/1997722 2.http://www.cnblogs.com/abl1992/p/ ...

  9. 【BZOJ 1016】【JSOI 2008】最小生成树计数

    http://www.lydsy.com/JudgeOnline/problem.php?id=1016 统计每一个边权在最小生成树中使用的次数,这个次数在任何一个最小生成树中都是固定的(归纳证明). ...

  10. C# Aspose word 替换指定键值数据

    今天研究一天的导出word,一开始准备选用为软件自带的office,但是有局限性,机子上必须安装office才能使用,最后在网上搜了一下资料aspose开源的 小公司没得钱,你懂得.最后选择了这款 开 ...