Spark1.1.1官网文档翻译3任务提交

提交任务

Spark-submit是bin目录下的用来在集群上启动应用程序的方法。它可以使Spark使用统一的接口管理ClusterManager,使得你不必为每一个程序进行单独部署

 

打包应用的依赖

如果你的代码依赖于其他的项目,你将需要把应用程序分发到集群上面,为此,创建一个打包文件(或者更高级的“JAR”文件)包含代码和它所依赖的。使用SBT或者Maven进行加载。创建打包文件的时候,Spark和Hadoop的文件不需要打包,因为这些是在ClusterManager上面的设置。一旦你拥有了一个包文件,你可以调用bin/spark脚本来运行它。

Python,你可以使用--.py文件参数作为Spark的补充,.py.zip.egg等文件都可以在你的程序中进行使用。如果你有多个.py文件,我们建议包装秤.zip或者.egg

 

使用Spark-submit提交申请

一旦应用程序捆绑在了一起,可以使用bin/spark-submit脚本提交,这个脚本会为Spark设置classpath和它的依赖,可以支持不同的ClusterManager以及他们对Spark的管理。

./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.SparkPi)

--master:集群master的url(spark://23.195.26.187:7077)

--deploy-mode:你的部署是在工作节点(cluster)还是外部节点(client)默认client*

--conf:键值对模式的任意属性,值包含空格引用"key=value"

application-jar:jar包和你的程序依赖的地址,这个地址必须在集群上面可见的,比如hdfs://path或者file://path(当前节点)

application-argument:主要方法的参数,如果有的话

 

*一个部署策略是提交你的程序到一个作为入口的物理机器(比如Ec2集群的Master)在这种安装模式下,客户端模式是很合适的。在客户端模式下,driver直接在spark-submit过程中发送,与输入输出直接连接到控制台应用,涉及到REPL(读取-求值-输出循环,例如Spark Shell)

另外,如果你的应用程序从远离工作机器(例如在你的笔记本电脑上)它是常见的使用集群模式以减少drivers和执行者之间的网络延迟。请注意集群模式当前不支持standaloneclusters,Mesos cluster或者Python applications

对于python应用程序,只需要在<application-jar>中添加一个py文件,jar文件,或者egg文件即可,py文件的搜索路径是--py-files

几个例子

#本地运行程序在8核上面

./bin/spark-submit \

--classorg.apache.spark.example.SparkPi \

--master local[8] \

/path/to/example.jar

100

 

#运行在spark 独立集群

./bin/spark-submit \

--classorg.apache.spark.examples.SparkPi \

--master spark://207.184.161.138:7077\

--executor-memory 20G \

--total-executor-cores 100 \

/path/to/example.jar \

1000

 

#运行在Yarn集群

export HADOOP_CONF_DIR=XXX

./bin/spark-submit \

--classorg.apache.spark.example.SparkPi \

--master yarn-cluster \#可以使用yarn-client启用client模式

--executor-memory 20G \

--num-executors 50 \

/path/to/examples.jar \

1000

 

#运行在集群的Python程序上

./bin/spark-submit \

--master spark://207.184.161.138:7077\

examples/src/main/python/pi.py \

1000

 

Master地址

SparkMasterURL有以下几个选择形式

 

Local

本地一个工作者的线程运行(不并行运行)

Local[k]

局部K个工作者运行Spark(理想状态下,设置为你机器的核数)

Local[*]

以尽可能多的工作者线程运行,作为核心逻辑运行在机器上

spark://HOST:PORT

连接到特定独立集群的主机,端口默认是7077

mesos://HOST:PORT

连接特定的mesos集群,端口必须配置为特定的,默认是5050或者,为使用zookeeper,采用mesos://zk://....

yarn-client

使用客户端模式连接到Yarn集群,集群位置将从HADOOP_CONF_DIR变量中寻找

Yarn-cluster

使用集群端模式连接到Yarn集群,集群位置将从HADOOP_CONF_DIR变量中寻找

 

从文件中加载配置

使用spark-submit脚本可以加载默认的Spark配置,从属性文件中传递给你的应用,默认情况下,它会在Spark目录中conf/spark-default.conf中。更多信息,参考Sparkconfiguration

 

http://spark.apache.org/docs/latest/configuration.html#loading-default-configurations

 

加载默认配置,这样可以避免Spark提交一部分确认的属性,例如,如果spark-master设置了一个属性,你可以安全的把它忽略。在一般情况下,SparkConf拥有最高的优先级,然后提交spark-submit补充一些缺省的文件。

 

如果有不清楚的配置选项,可以使用Spark的调试信息--verbose选项

 

先进的依赖性管理

使用spark-submit程序jar文件以及--jars包含的选项将自动转移到集群,Spark使用以下的url方式允许不同形式的文件传播

file:绝对的路径 file:/URI是由driver的HTTP文件服务器的服务,每一个执行者吧文件从driver拖动到HTTP服务器上面。

HDFS:HTTP:HTTPS:FTP:这些文件同样是从URI拖下文件

local:local:从本地运行,默认每个文件作为工作节点的本地文件存在,这意味着没有网络IO会发生,以及大的文件或者包,push到每个工作者,或者通过NFS共享,GlusterFS等。

请注意,包和文件为每个sparkcontext的复制到工作目录中的各执行器节点,这样可以使用大量空间,随着时间的推移,需要清理。Mesos是自动清理,并与Spark独立自动清理,可以配置spark.worker.cleanup.appDataTtl属性

Python等效,.py文件可以用来分发,.egg.zip和.py库用于执行

更多的信息

一旦你部署你的应用,集群模式概述介绍参与分布式执行的组件,以及如何监控和调试应用程序。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值