提交应用

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的更多相关文章

  1. spark第二篇--基本原理

    ==是什么 == 目标Scope(解决什么问题) 在大规模的特定数据集上的迭代运算或重复查询检索 官方定义 aMapReduce-like cluster computing framework de ...

  2. spark第一篇:RDD Programming Guide

    预览 在高层次上,每一个Spark应用(application)都包含一个驱动程序(driver program),该程序运行用户的主函数(main function),并在集群上执行各种并行操作. ...

  3. IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm(转载)

    IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm 自从本系列发布之后,收到了很多的朋友的回复!非常感谢,同时很多朋友问到了一些问题,有些问 ...

  4. 第二篇:彻底搞清楚 Spring Boot 的配置文件 application.properties

    前言 在Spring Boot中,配置文件有两种不同的格式,一个是properties,另一个是yaml. 虽然properties文件比较常见,但是相对于properties而言,yaml更加简洁明 ...

  5. 【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析

    [渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP ...

  6. Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

    Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...

  7. 第二篇——Struts2的Action搜索顺序

    Struts2的Action的搜索顺序: 地址:http://localhost:8080/path1/path2/student.action     1.判断package是否存在,例如:/pat ...

  8. 第二篇 界面开发 (Android学习笔记)

    第二篇 界面开发 第5章 探索界面UI元素 ●The Android View Class     ●△Widget设计步骤 需要修改三个XML,以及一个class: 1)第一个xml是布局XML文件 ...

  9. XSS报警机制(前端防火墙:第二篇)

    XSS报警机制(前端防火墙:第二篇) 在第一章结尾的时候我就已经说了,这一章将会更详细的介绍前端防火墙的报警机制及代码.在一章出来后,有人会问为什么不直接防御,而是不防御报警呢.很简单,因为防御的话, ...

随机推荐

  1. 手机APP兼容性测试

    兼容性测试方案 兼容性问题 屏幕分辨率兼容性问题 软件(iOS和Android系统版本及不同厂家的定制ROM)兼容性问题 硬件(不同的CPU.内存大小等等)兼容性问题 网络(2G/3G/4G/WIFI ...

  2. css总结15:CSS3 圆角

    1 css圆角: 1.1 浏览器支持:-webkit- 或 -moz- 前面的数字表示支持该前缀的第一个版本. 1.2 属性 border-radius: 代码如下: #rcorners1 { bor ...

  3. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(7):装配SpringBean·依赖注入装配

    一.依赖注入的三种方式      在实际环境中实现IoC容器的方式主要分为两大类,一类是依赖查找,依赖查找是通过资源定位,把对应的资源查找回来.另一类则是依赖注入.一般而言,依赖注入可分为3中方式: ...

  4. linux下SVN服务器配置

    SVN服务器配置 1. 安装svn服务 yum install subversion 2. 新建一个目录用于存储SVN所有文件 mkdir /home/svn 3. 创建项目 在上面创建的文件夹中为项 ...

  5. adb命令安装及卸载应用

    一.手机连接电脑,检测手机是否已开启授权并连接成功 adb devices 二.安装应用 adb install UYUN-CARRIER-Android.apk 三.卸载应用 1.查看应用包名 ad ...

  6. Android下拉选择框之PopupWindow

    1.效果图 2.思路分析 1.点击弹出对话框 popupwindow 2.对popupwindow进行相关设置,popupwindow中设置view为listview 3.listview中item设 ...

  7. Java集合类总结 (二)

    LinkedList类 由于基于数组的链表有一个大的缺点,那就是从链表中间移除一个元素时需要将此元素后面的所有元素向前移动,会产生大量的开销,同样的在链表中间插入一个新元素也会有大量开销.如下图: L ...

  8. android 多点触控

    多点触控 1.多点触控从字面意思讲就是你用大于等于2根的手指触摸子啊手机屏幕上. Android中监听触摸事件是onTouchEvent方法,它的参数为MotionEvent,下面列举MotionEv ...

  9. WPF 控件库——可拖动选项卡的TabControl

    WPF 控件库系列博文地址: WPF 控件库——仿制Chrome的ColorPicker WPF 控件库——仿制Windows10的进度条 WPF 控件库——轮播控件 WPF 控件库——带有惯性的Sc ...

  10. 在有主分支和个人分支情况下的TFS使用方法

    从事.NET开发的资深童鞋一定都知道VS有自带的代码管理工具TFS(Team Foundation Server ),但是开发萌新可能就不太了解了,下面我就介绍一下这个工具以及它的一些常用操作. TF ...