Spark -7:提交spark应用程序
来源:互联网 发布:北京淘宝纸箱 企业05 编辑:程序博客网 时间:2024/05/18 00:00
Spark的bin目录中的 spark-submit
脚本用于启动集群上的应用程序。它可以通过统一的接口使用Spark的所有支持的集群管理器,因此您不必为每个集群管理器专门配置您的应用程序
捆绑应用程序的依赖关系
如果您的代码依赖于其他项目,则需要将它们与应用程序一起打包,以便将代码分发到Spark集群。为此,请创建一个包含代码及其依赖关系的程序集jar(或“uber”jar)。 sbt和Maven都有程序集插件。创建组件jar时,将Spark和Hadoop列为提供的依赖关系;这些不需要捆绑,因为它们在运行时由集群管理器提供。一旦你有一个组装的jar,你可以调用bin / spark-submit脚本,如下所示,同时传递你的jar。
对于Python,您可以使用spark-submit的--py-files参数来添加.py,.zip或.egg文件以与应用程序一起分发。如果你依赖于多个Python文件,我们建议将它们打包成.zip或.egg文件。
使用spark-submit启动应用程序
捆绑用户应用程序后,可以使用bin / spark-submit脚本启动。此脚本负责使用Spark及其依赖关系设置类路径,并且可以支持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.examples.SparkPi)
--master:群集的主网址(例如spark://23.195.26.187:7077)
--deploy-mode:是否在工作节点(集群)上或在本地作为外部客户端(客户端)部署驱动程序(默认值:客户端)
--conf:key = value格式的任意Spark配置属性。对于包含空格的值,在引号中换行“key = value”(如图所示)。
application-jar:绑定的jar包的路径,包括你的应用程序和所有依赖。 URL必须在集群内部全局可见,例如,所有节点上存在的hdfs://路径或file://路径。
application-arguments:参数传递给你的主类的main方法,如果有的话
†常见的部署策略是从与工作机器物理位置相同的网关机器(例如独立EC2群集中的主节点)提交应用程序。在此设置中,客户端模式是适当的。在客户端模式下,驱动程序直接在火花提交过程中启动,该过程充当集群的客户端。应用程序的输入和输出连接到控制台。因此,此模式特别适合涉及REPL的应用程序(例如Spark shell)。
或者,如果您的应用程序是从远离工作机器的机器(例如在笔记本电脑上本地)提交的,则通常使用集群模式以最小化驱动程序和执行程序之间的网络延迟。目前,独立模式不支持Python应用程序的集群模式。
对于Python应用程序,只需在<application-jar>而不是JAR的地方传递一个.py文件,然后使用--py-files将Python .zip,.egg或.py文件添加到搜索路径。有几个特定于正在使用的集群管理器的可用选项。例如,对于具有集群部署模式的Spark独立集群,您还可以指定--supervise以确保驱动程序在发生非零退出代码失败时自动重新启动。要枚举spark-submit可用的所有这些选项,请使用--help运行它。以下是常见选项的几个示例:
# 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 clusterexport 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的master URL可以采用以下格式之一local
Run Spark locally with one worker thread (i.e. no parallelism at all).local[K]
Run Spark locally with K worker threads (ideally, set this to the number of cores on your machine).local[*]
Run Spark locally with as many worker threads as logical cores on your machine.spark://HOST:PORT
Connect to the given Spark standalone cluster master. The port must be whichever one your master is configured to use, which is 7077 by default.mesos://HOST:PORT
Connect to the given Mesos cluster. The port must be whichever one your is configured to use, which is 5050 by default. Or, for a Mesos cluster using ZooKeeper, use mesos://zk://...
. To submit with --deploy-mode cluster
, the HOST:PORT should be configured to connect to the MesosClusterDispatcher.yarn
Connect to a YARN cluster in client
or cluster
mode depending on the value of --deploy-mode
. The cluster location will be found based on the HADOOP_CONF_DIR
or YARN_CONF_DIR
variable.从文件加载配置spark-submit脚本可以从属性文件中加载默认的Spark配置值,并将它们传递给你的应用程序。默认情况下,它将从Spark目录中的conf / spark-defaults.conf中读取选项。有关详细信息,请参阅加载默认配置一节。
以这种方式加载默认Spark配置可以避免需要某些标志来进行spark-submit。例如,如果设置了spark.master属性,则可以安全地忽略spark提交中的--master标志。一般来说,在SparkConf上显式设置的配置值采用最高优先级,然后标志传递到spark-submit,然后传递到默认文件中的值。
如果您不清楚配置选项来自哪里,您可以通过使用--verbose选项运行spark-submit打印出细粒度的调试信息。
高级依赖管理
使用spark-submit时,应用程序jar以及包含在-jars选项中的任何jar将自动传输到集群。 --jars之后提供的URL必须用逗号分隔。该列表包含在驱动程序和执行程序类路径中。目录扩展不能与--jars一起使用。
Spark使用以下URL方案来允许不同的策略传播jar:
file: - 绝对路径和文件:/ URI由驱动程序的HTTP文件服务器提供,每个执行器从驱动程序HTTP服务器拉取文件。
hdfs :, http :, https :, ftp: - 这些从URI中下拉文件和JAR文件
local: - 以local:/开头的URI应该作为每个工作节点上的本地文件存在。这意味着不会产生网络IO,并且适用于推送到每个工作线程或通过NFS,GlusterFS等共享的大文件/ JAR。
请注意,JAR和文件被复制到执行器节点上每个SparkContext的工作目录。这可能会占用大量的空间,随着时间的推移,需要清理。使用YARN,自动处理清除,使用Spark独立的,可以使用spark.worker.cleanup.appDataTtl属性配置自动清除。
用户还可以通过用--packages提供逗号分隔的maven坐标列表来包括任何其他依赖项。使用此命令时将处理所有传递依赖性。可以使用标志--repositories以逗号分隔的方式添加其他存储库(或SBT中的解析器)。 (请注意,在某些情况下,可以在存储库URI中提供受密码保护的存储库的凭据,例如https:// user:password @ host / ....请谨慎提供凭据。)这些命令可以是与pyspark,spark-shell和spark-submit一起使用以包括Spark Packages。
对于Python,等效的--py-files选项可用于将.egg,.zip和.py库分发给执行程序。
- Spark -7:提交spark应用程序
- 提交spark应用程序spark-submit
- Spark 提交应用程序
- Spark On Yarn:提交Spark应用程序到Yarn
- Spark On Yarn:提交Spark应用程序到Yarn
- Spark -11:Spark Submit提交历史应用程序删除
- 用java提交一个Spark应用程序
- spark提交
- Spark 实践 - 客户端使用spark-submit提交Spark应用程序及注意事项
- spark 提交任务到spark
- [Spark]Spark 应用程序部署工具spark-submit
- 【Spark1.3官方翻译】 Spark Submit提交应用程序
- spark 官方文档(1)——提交应用程序
- Spark中文手册10:spark部署:提交应用程序及独立部署模式
- Spark中文手册10:spark部署:提交应用程序及独立部署模式
- 用maven管理spark应用程序,提交到spark on yarn 集群上运行
- spark mllib 应用程序开发及提交到spark集群运行--入门
- Spark中文手册10:spark部署:提交应用程序及独立部署模式
- An LRU cache class based on java.util.LinkedHashMap
- strstr的使用(字符串的查找)
- 计算字符串的MD5值和MD5文件摘要
- POJ 3304 Segments(计算几何)
- cookie、session和token那些事
- Spark -7:提交spark应用程序
- TK1重新刷机!
- 深入理解Angular中的$apply()以及$digest()
- 打通spark内幕运行内幕机制循环流程
- (a == !a )可以为true!
- css中使用“-webkit-appearance: none;”去除系统默认appearance的样式引发的问题
- 使用fastjson对字符串格式化为JSON对象
- 使用github和jekyll搭建自己的blog
- 控制台输