spark第二篇:Application Submission Guide
提交应用
SPARK_HOME/bin目录中的spark-submit脚本用于启动集群上的应用程序。它可以通过一个统一的接口使用所有Spark支持的集群管理器。
绑定应用程序的依赖
如果你的代码依赖其他项目,你需要将其与你的应用程序一起打包,以便将代码分发到Spark集群。为此,创建一个包含你的代码及其依赖的assembly jar (or uber jar)。sbt和maven都有对应的组装插件。在创建assembly jar时,将Spark和Hadoop依赖设为provided级别即可,它们不需要捆绑,因为它们是由集群管理器在运行时提供的。
用spark-submit脚本启动应用
一旦你有一个组装jar,你可以调用bin/spark-submit脚本启动应用。该脚本负责使用Spark及其依赖来设置环境变量,并且可以支持不同集群管理器及部署模式:
./bin/spark-submit \
--class <main-class> \
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
一些常用的选项如下:
--class 应用的main类(例如org.apache.spark.examples.SparkPi)
--master 集群的master URL, spark standalone对应的是spark://host:port, mesos对应的是mesos://host:port,yarn,or local.
--deploy-mode 本地启动驱动程序(client)还是在集群的一个工作节点上启动驱动程序(cluster),默认是client
--conf 键值对格式的属性设置。如果属性值有空格的话,则用双引号包裹key=value, 形如"key=value"
application-jar 包含应用代码和依赖的组装jar的路径。路径对整个集群来说必须是可访问的,例如,一个hdfs://或者file://
application-arguments 传递给main方法的参数
常见的部署策略是从与你的worker节点物理位置相同的网关机器提交你的应用程序。这时候,client模式是合适的。在client模式下,驱动程序直接在作为集群客户端的spark-submit进程中启动。应用程序的输入和输出连接到控制台。因此,这种模式特别适用于设计REPL的应用程序(比如Spark shell)。
REPL,Read-Eval-Print Loop的简称,“读取-求值-输出”循环,是一个简单的、交互式的编程环境。
或者,如果你的应用程序是从远离worker机器的机器提交的(例如,在你本地的笔记本上),则通常使用cluster模式来尽量减少驱动程序(drivers)和执行程序(executors)之间的网络延迟。
有几个选项是特定于集群管理器的。
例如,对于cluster部署模式的Spark standalone模式或者Mesos,你可以指定--supervise以确保在驱动程序因non-zero exit code失败时可以自动重启。
具体可以使用spark-submit --help来查看所有的选项。以下是常见选项的一些示例:
# Run application locally
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[*] \
/path/to/examples.jar \ # 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 \
/path/to/examples.jar \ # 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 \
/path/to/examples.jar \ # 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 \
/path/to/examples.jar \ # 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 \ # 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 \
http://path/to/examples.jar \
Master URLS
传递给Spark的master URL可采用以下格式之一:
local 以一个工作线程在本地运行Spark应用
local[K] 以K个工作线程在本地运行Spark应用
local[K, F] 以K个工作线程在本地运行Spark应用,每个任务最多失败F次
local[*] 使用与本机逻辑内核一样多的工作线程在本地运行Spark应用
local[*, F] 使用与本机逻辑内核一样多的工作线程在本地运行Spark应用,每个任务最多失败F次
spark://HOST:PORT Spark standalone集群的master。端口默认是7077,可以在master节点的文件中配置。
spark://HOST1:PORT1,HOST2:PORT2 连接用ZooKeeper中间件搭建的高可用的Spark standalone集群的masters。Spark standalone cluster with standby masters with Zookeeper。主机名列表必须包含所有的master节点,端口默认都是7077
mesos://HOST:PORT 连接Mesos集群,端口默认是5050,可配置。如果使用ZooKeeper搭建Mesos集群的话,则用mesos://zk://
yarn 连接YARN集群,以client 模式或者以 cluster 模式,取决于--deploy-mode 的值。集群地址由HADOOP_CONF_DIR 或者 YARN_CONF_DIR 参数指定
从文件加载配置
spark-submit脚本可以从属性文件加载默认的配置并传给你的应用。默认情况下,它将从SPARK_HOME的conf目录中的spark-default.conf文件读取配置。
以这种方式加载默认Spark配置使得我们在使用spark-submit脚本时可以省略特定的标志。例如,如果在spark-default.conf文件中设置了spark.master属性,则spark-submit脚本可省略--master标志。一般来说,在SparkConf上显式设置的配置值的优先级最高,spark-submit选项值优先级次之,spark-default.conf文件中的配置值优先级最低。如果不确定配置项的值最终取的是哪里的值,可以在spark-submit 的时候添加--verbose选项。
高级依赖管理
略。
实际项目中,我们会把写到shell脚本中,这样直接运行脚本就可以启动spark任务了。
示例1:
#!/bin/sh
sparkTaskName='spark-realtime-contactList2Hive';
/home/koushengrui/app/spark-2.2.-bin-hadoop2./bin/spark-submit \
--class com.kou.SparkConsumerTest \
--name ${sparkTaskName} \
--master local[] \
--driver-memory 16G \
--executor-memory 16G \
--conf spark.kafka.metadata.broker.list=192.168.56.100:,192.168.56.101:,192.168.56.102: \
--conf spark.zookeeper.quorum=192.168.56.100:,192.168.56.101:,192.168.56.102: \
--conf spark.streaming.kafka.maxRatePerPartition= \
--conf spark.default.parallelism= \
--conf spark.task.maxFailures= \
--conf spark.network.timeout= \
--conf spark.dynamicAllocation.enaled=false \
--conf spark.shuffle.service.enabled=false \
--conf spark.eventLog.enabled=true \
--conf spark.eventLog.compress=false \
--conf spark.eventLog.dir=/data/spark/events \
--conf spark.executor.extraJavaOptions="-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+ParallelRefProcEnabled
-XX:+CMSClassUnloadingEnabled -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+HeapDumpOnOutOfMemoryError -verbose:gc" \
--verbose \
/home/koushengrui/app/spark-realtime-contactList2Hive.jar
本例的master是local[*],不用写deploy-mode。
spark第二篇:Application Submission Guide的更多相关文章
- spark第二篇--基本原理
==是什么 == 目标Scope(解决什么问题) 在大规模的特定数据集上的迭代运算或重复查询检索 官方定义 aMapReduce-like cluster computing framework de ...
- spark第一篇:RDD Programming Guide
预览 在高层次上,每一个Spark应用(application)都包含一个驱动程序(driver program),该程序运行用户的主函数(main function),并在集群上执行各种并行操作. ...
- IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm(转载)
IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm 自从本系列发布之后,收到了很多的朋友的回复!非常感谢,同时很多朋友问到了一些问题,有些问 ...
- 第二篇:彻底搞清楚 Spring Boot 的配置文件 application.properties
前言 在Spring Boot中,配置文件有两种不同的格式,一个是properties,另一个是yaml. 虽然properties文件比较常见,但是相对于properties而言,yaml更加简洁明 ...
- 【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析
[渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP ...
- Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN
Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...
- 第二篇——Struts2的Action搜索顺序
Struts2的Action的搜索顺序: 地址:http://localhost:8080/path1/path2/student.action 1.判断package是否存在,例如:/pat ...
- 第二篇 界面开发 (Android学习笔记)
第二篇 界面开发 第5章 探索界面UI元素 ●The Android View Class ●△Widget设计步骤 需要修改三个XML,以及一个class: 1)第一个xml是布局XML文件 ...
- XSS报警机制(前端防火墙:第二篇)
XSS报警机制(前端防火墙:第二篇) 在第一章结尾的时候我就已经说了,这一章将会更详细的介绍前端防火墙的报警机制及代码.在一章出来后,有人会问为什么不直接防御,而是不防御报警呢.很简单,因为防御的话, ...
随机推荐
- Gson 配置解析
之前项目用到了gson对json和Java类之间互转,现在将gson的配置总结一下. 首先,创建gson对象之间,建立gsonbuilder对象,并配置 // 不导出实体类中没有用@Expose注解的 ...
- Java集合框架---重构设计
面向接口编程: 接口类型 变量 =new 实现类(); List list=new ArrayList(); --------------------------------------- List ...
- ios7适配--uitableviewcell选中效果
ios7 UITableViewCell selectionStyle won't go back to blue up vote6down votefavorite 2 Xcode 5.0, iOS ...
- word 2013如何从某一页开始插入页码
把光标移入要插入页面的最前面 插入分页符 在要插入页码的页脚双击打开页脚设计 取消页脚和前面页眉的链接 插入页码
- C# 高性能对象映射(表达式树实现)
前言 上篇简单实现了对象映射,针对数组,集合,嵌套类并没有给出实现,这一篇继续完善细节. 开源对象映射类库映射分析 1.AutoMapper 实现原理:主要通过表达式树Api 实现对象映射 优点: . ...
- 预定义宏,C语言预定义的宏详解
1.预定义宏 对于预定义宏,相信大家并不陌生.为了方便处理一些有用的信息,预处理器定义了一些预处理标识符,也就是预定义宏.预定义宏的名称都是以"__"(两条下划线)开头和结尾的,如 ...
- javascript中var that=this
在JavaScript中,this代表的是当前对象. $(‘#conten').click(function(){ //this是被点击的#conten var that = this; $(‘.co ...
- IO相关2(文件输入输出)
除了继承自 iostream 类型的行为之外,fstream 中定义的类型还增加了一些新的成员来管理与流相关的文件.我们可以对 fstream,ifstream 和 ofstream 对象调用这些操作 ...
- JDBC解决中文乱码
本文转载自https://www.liyongzhen.com/jdbc/jdbc-character 在使用JDBC开发的过程中,通常会遇到中文保存到数据库乱码的问题. 这个问题的产生有3个方面: ...
- 蓝牙4.0BLE抓包(三) – 扫描请求和扫描响应
版权声明:本文为博主原创文章,转载请注明作者和出处. 作者:强光手电[艾克姆科技-无线事业部] 1. 扫描请求和扫描响应 广播包含扫描请求SCAN_REQ和扫描响应SCAN_RSP. 扫描请求: ...