原文链接:http://blog.csdn.net/book_mmicky/article/details/25714545

随着Spark的应用越来越广泛,对支持多资源管理器应用程序部署工具的需求也越来越迫切。Spark1.0.0的出现,这个问题得到了逐步改善。从Spark1.0.0开始,Spark提供了一个容易上手的应用程序部署工具bin/spark-submit,可以完成Spark应用程序在local、Standalone、YARN、Mesos上的快捷部署。

 
1:使用说明
      进入$SPARK_HOME目录,输入bin/spark-submit --help可以得到该命令的使用帮助。
hadoop@wyy:/app/hadoop/spark100$ bin/spark-submit --help
Usage: spark-submit [options] <app jar | python file> [app options]
Options:
  --master MASTER_URL         spark://host:port, mesos://host:port, yarn, or local.
  --deploy-mode DEPLOY_MODE   driver运行之处,client运行在本机,cluster运行在集群
  --class CLASS_NAME          应用程序包的要运行的class
  --name NAME                 应用程序名称
  --jars JARS                 用逗号隔开的driver本地jar包列表以及executor类路径
  --py-files PY_FILES         用逗号隔开的放置在Python应用程序PYTHONPATH上的.zip, .egg, .py文件列表
  --files FILES               用逗号隔开的要放置在每个executor工作目录的文件列表
  --properties-file FILE      设置应用程序属性的文件放置位置,默认是conf/spark-defaults.conf
  --driver-memory MEM         driver内存大小,默认512M
  --driver-java-options       driver的java选项
  --driver-library-path       driver的库路径Extra library path entries to pass to the driver
  --driver-class-path         driver的类路径,用--jars 添加的jar包会自动包含在类路径里
  --executor-memory MEM       executor内存大小,默认1G
 Spark standalone with cluster deploy mode only:
  --driver-cores NUM          driver使用内核数,默认为1
  --supervise                 如果设置了该参数,driver失败是会重启
 Spark standalone and Mesos only:
  --total-executor-cores NUM  executor使用的总核数
 YARN-only:
  --executor-cores NUM        每个executor使用的内核数,默认为1
  --queue QUEUE_NAME          提交应用程序给哪个YARN的队列,默认是default队列
  --num-executors NUM         启动的executor数量,默认是2个
  --archives ARCHIVES         被每个executor提取到工作目录的档案列表,用逗号隔开
      关于以上spark-submit的help信息,有几点需要强调一下:
  • 关于--master  --deploy-mode,正常情况下,可以不需要配置--deploy-mode,使用下面的值配置--master就可以了,使用类似 --master spark://host:port --deploy-mode cluster会将driver提交给cluster,然后就将worker给kill的现象。
 Master URL  含义
 local  使用1个worker线程在本地运行Spark应用程序
 local[K]  使用K个worker线程在本地运行Spark应用程序
 local[*]  使用所有剩余worker线程在本地运行Spark应用程序
 spark://HOST:PORT  连接到Spark Standalone集群,以便在该集群上运行Spark应用程序
 mesos://HOST:PORT  连接到Mesos集群,以便在该集群上运行Spark应用程序
 yarn-client  以client方式连接到YARN集群,集群的定位由环境变量HADOOP_CONF_DIR定义,该方式driver在client运行。
 yarn-cluster  以cluster方式连接到YARN集群,集群的定位由环境变量HADOOP_CONF_DIR定义,该方式driver也在集群中运行。
  • 如果要使用--properties-file的话,在--properties-file中定义的属性就不必要在spark-sumbit中再
    定义了,比如在conf/spark-defaults.conf
    定义了spark.master,就可以不使用--master了。关于Spark属性的优先权为:SparkConf方式 > 命令行参数方式 >文件配置方式,具体参见Spark1.0.0属性配置
  • 和之前的版本不同,Spark1.0.0会将自身的jar包和--jars选项中的jar包自动传给集群。
  • Spark使用下面几种URI来处理文件的传播:
    • file:// 使用file://和绝对路径,是由driver的HTTP server来提供文件服务,各个executor从driver上拉回文件。
    • hdfs:, http:, https:, ftp: executor直接从URL拉回文件
    • local: executor本地本身存在的文件,不需要拉回;也可以是通过NFS网络共享的文件。
  • 如果需要查看配置选项是从哪里来的,可以用打开--verbose选项来生成更详细的运行信息以做参考。
2:测试环境
  • 测试程序来源于使用IntelliJ IDEA开发Spark1.0.0应用程序,将测试其中的WordCount1和WordCount2这两个Class。
  • 测试数据来源于搜狗的用户查询日志(SogouQ),详见Spark1.0.0 开发环境快速搭建,虽然用这个数据集测试不是很理想,但由于其完整版足够大,可以分割其中部分数据进行测试,在加上其他例程需要使用,将就采用了这个数据集。实验中分别截取100000行(SogouQ1.txt)和200000行(SogouQ2.txt)做实验。
3:准备工作
A:集群
切换到用户hadoop启动Spark1.0.0 开发环境快速搭建中搭建的虚拟集群
[hadoop@hadoop1 ~]$ su - hadoop
[hadoop@hadoop1 ~]$ cd /app/hadoop/hadoop220
[hadoop@hadoop1 hadoop220]$ sbin/start-all.sh
[hadoop@hadoop1 hadoop220]$ cd ../spark100/
[hadoop@hadoop1 spark100]$ sbin/start-all.sh
B:客户端
在客户端切换到用户hadoop并切换到/app/hadoop/spark100目录,将实验数据上传hadoop集群,然后将使用IntelliJ IDEA开发Spark1.0.0应用程序生成的程序包复制过来。
mmicky@wyy:~/data$ su - hadoop
hadoop@wyy:~$ cd /app/hadoop/hadoop220
hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -mkdir -p /dataguru/data
hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -put /home/mmicky/data/SogouQ1.txt /dataguru/data/
hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -put /home/mmicky/data/SogouQ2.txt /dataguru/data/
检查SogouQ1.txt的块分布,以后数据本地性分析的时候会用到
hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs fsck /dataguru/data/SogouQ1.txt -files -blocks -locations -racks
Connecting to namenode via http://hadoop1:50070
FSCK started by hadoop (auth:SIMPLE) from /192.168.1.111 for path /dataguru/data/SogouQ1.txt at Sat Jun 14 03:47:39 CST 2014
/dataguru/data/SogouQ1.txt 108750574 bytes, 1 block(s):  OK
0. BP-1801429707-192.168.1.171-1400957381096:blk_1073741835_1011 len=108750574 repl=1 [/default-rack/192.168.1.171:50010]
检查SogouQ2.txt的块分布,以后数据本地性分析的时候会用到
hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs fsck /dataguru/data/SogouQ2.txt -files -blocks -locations -racks
Connecting to namenode via http://hadoop1:50070
FSCK started by hadoop (auth:SIMPLE) from /192.168.1.111 for path /dataguru/data/SogouQ2.txt at Sat Jun 14 03:48:07 CST 2014
/dataguru/data/SogouQ2.txt 217441417 bytes, 2 block(s):  OK
0. BP-1801429707-192.168.1.171-1400957381096:blk_1073741836_1012 len=134217728 repl=1 [/default-rack/192.168.1.173:50010]
1. BP-1801429707-192.168.1.171-1400957381096:blk_1073741837_1013 len=83223689 repl=1 [/default-rack/192.168.1.172:50010]
切换到spark目录并复制程序包
hadoop@wyy:/app/hadoop/hadoop220$ cd ../spark100
hadoop@wyy:/app/hadoop/spark100$ cp /home/mmicky/IdeaProjects/week2/out/artifacts/week2/week2.jar .
4:实验
下面给出了几种实验CASE的命令,具体的运行架构会抽取几个例子在Spark1.0.0 on Standalone 运行架构实例解析说明。
在使用spark-submit提交spark应用程序的时候,需要注意以下几点:
  • 集群外的客户机向Spark Standalone部署Spark应用程序时,要注意事先实现该客户机和Spark Standalone之间的SSH无密码登录。
  • 向YARN部署spark应用程序的时候,注意executor-memory的大小,其内存加上container要使用的内存(默认值是1G)不要超过NM可用内存,不然分配不到container来运行executor。
  • 关于python程序的部署可以参考Spark1.0.0 多语言编程之python实现 和 Spark1.0.0 on YARN 模式部署 。

Spark1.0.0 应用程序部署工具spark-submit的更多相关文章

  1. Spark应用程序部署工具Spark Submit

    不多说,直接上干货!  spark-submit在哪个位置 [spark@master ~]$ cd $SPARK_HOME/bin [spark@master bin]$ pwd /usr/loca ...

  2. spark 应用程序部署工具 spark-submit

    打包 Spark application 使用spark-submit启动Spark application spark-submit usage spark-submit option 运行模式相关 ...

  3. Spark1.0.0 开发环境高速搭建

          在本系列博客中.为了解析一些概念.解析一些架构.代码測试.搭建了一个实验平台.例如以下图所看到的:       本实验平台是在一台物理机上搭建的.物理机的配置是16G内存,4核8线程CPU ...

  4. Spark1.0.0新特性

            Spark1.0.0 release于2014-05-30日正式公布,标志Spark正式进入1.X的时代.Spark1.0.0带来了各种新的特性,并提供了更好的API支持:Spark1 ...

  5. Spark1.0.0 编程模型

    Spark Application能够在集群中并行执行,其关键是抽象出RDD的概念(详见RDD 细解),也使得Spark Application的开发变得简单明了.下图浓缩了Spark的编程模型. w ...

  6. 基于Spark1.3.0的Spark sql三个核心部分

    基于Spark1.3.0的Spark sql三个核心部分: 1.可以架子啊各种结构化数据源(JSON,Hive,and Parquet) 2.可以让你通过SQL,saprk内部程序或者外部攻击,通过标 ...

  7. spark 1.1.0 单机与yarn部署

    环境:ubuntu 14.04, jdk 1.6, scala 2.11.4, spark 1.1.0, hadoop 2.5.1 一 spark 单机模式 部分操作参考:http://www.cnb ...

  8. spark 1.6.0 安装与配置(spark1.6.0、Ubuntu14.04、hadoop2.6.0、scala2.10.6、jdk1.7)

    前几天刚着实研究spark,spark安装与配置是入门的关键,本人也是根据网上各位大神的教程,尝试配置,发现版本对应最为关键.现将自己的安装与配置过程介绍如下,如有兴趣的同学可以尝试安装.所谓工欲善其 ...

  9. Spark 1.0.0 横空出世 Spark on Yarn 部署(Hadoop 2.4)

    就在昨天,北京时间5月30日20点多.Spark 1.0.0最终公布了:Spark 1.0.0 released 依据官网描写叙述,Spark 1.0.0支持SQL编写:Spark SQL Progr ...

随机推荐

  1. LeetCode 136. Single Number(只出现一次的数字)

    LeetCode 136. Single Number(只出现一次的数字)

  2. C++运算符重载规则

    运算符重载时要遵循以下规则:  ( 1 ) 除了类属关系运算符 " . " .成员指针运算符 " .* " .作用域运算符 " :: " . ...

  3. 《java虚拟机》----线程安全和锁优化

    No1: 线程安全:当多个线程访问一个对象时,如果不用考虑这些线程在运行环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这 ...

  4. STM32使用定时器实现输入捕获

    输入捕获简介输入捕获模式可以用来测量脉冲宽度或者测量频率.STM32的定时器,除了TIM6和TIM7,其他定时器都有输入捕获功能. STM32的输入捕获,简单地说就是通过检测TIMx_CHx上的边沿信 ...

  5. 初识Linux 基础操作

    Linux常用指令: 在Linux中如果不懂基础命令,在Linux中将寸步难行,下面是我在初学Linux系统时总结的一些基本命令. 1.基础命令 ls                          ...

  6. [ZOJ3254] MON 9.2009Secret Code

    A^x = D (mod P) 0 <= x <= M, here M is a given integer. 1 <= A, P < 2^31, 0 <= D < ...

  7. luogu P1011 车站

    题目描述 火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上.下车,但上.下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人.从第3站起( ...

  8. BZOJ1086 SCOI2005王室联邦

    想学树上莫队结果做了个树分块. 看完题后想到了菊花图的形状认为无解,结果仔细一瞧省会可以在外省尴尬 对于每一颗子树进行深搜,一旦遇到加在一起大小达到B则将它们并为一省,因为他子树搜完以后没有分出块的大 ...

  9. Map之类的东西

    http://www.cnblogs.com/anywei/archive/2011/10/27/2226830.html http://blog.csdn.net/aqzwss/article/de ...

  10. BZOJ3238 [Ahoi2013]差异 SA+单调栈

    题面 戳这里 题解 考虑把要求的那个东西拆开算,前面一个东西像想怎么算怎么算,后面那个东西在建出\(height\)数组后相当于是求所有区间\(min\)的和*2,单调栈维护一波即可. #includ ...