您的位置:首页 > 其它

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

2014-12-19 13:50 274 查看
提交任务
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库用于执行

更多的信息

一旦你部署你的应用,集群模式概述介绍参与分布式执行的组件,以及如何监控和调试应用程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: