spark之路第四课——提交spark任务 | uohzoaix

标签: | 发表时间:2017-12-09 21:07 | 作者:
出处:http://uohzoaix.github.io

spark是使用spark-submit这个命令来提交任务的。用法如下:

./bin/spark-submit
  --class <main-class>
  --master <master-url>
  --deploy-mode <deploy-mode>
  --conf <key>=<value>
  ...  other options
  <application-jar>
  [application-arguments]  

各个参数解释如下: --class:一个spark任务的入口方法,一般指main方法。如:org.apache.spark.examples.SparkPi) -master:集群的master URL。如spark://23.195.26.187:7077 --deploy-mode:部署方式,有cluster何client两种方式,默认为client --conf:额外的属性 application-jar:指定的jar目录,路径必须在整个集群当中可见 application-argument:main方法的参数

两种部署方式

client

一种常见的提交方式是从一个网关机器提交到worker机器上,这个时候应该选择client模式,因为这时driver是直接通过spark-submit进程部署的,任何的输入和输出都会在终端上输出。因此这种方式在需要REPL(如:spark shell)的时候是很适合的。

cluster

当应用是通过远程进行提交的,应该选择cluster模式,因为这种模式会减少drivers和executors之间的带宽负载。但是目前standalone,mesos或python应用都不支持该模式。 下面是一些spark-submit的例子:

 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
./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 YARN cluster
export HADOOP_CONF_DIR=XXX
./bin/spark-submit
  --class org.apache.spark.examples.SparkPi
  --master yarn-cluster   can also be yarn-client for client mode
  --executor-memory 20G
  --num-executors 50
  /path/to/examples.jar
  1000
 Run a Python application on a cluster
./bin/spark-submit
  --master spark://207.184.161.138:7077
  examples/src/main/python/pi.py
  1000  

master urls

传递给spark-submit中的master url参数可以是如下形式的一种: local:本地运行spark且只有一个worker线程 local[K]:本地运行spark且有K个worker线程。k一般设置为机器的CPU数量 local[*]:本地运行spark并以尽可能多的worker线程运行 spark://HOST:PORT:连接指定的standalone集群 mesos://HOST:PORT:连接到指定的mesos集群,如果mesos集群使用zookeeper管理,则为mesos://zk://.... yarn-client:以client方式连接到yarn集群 yarn-cluster:以cluster模式连接到yarn集群

从配置文件读取参数

除了在命令上指定参数外,spark-submit还会读取指定的配置文件中的一些属性,默认会读取conf/spark-defaults.conf。另外一种方式是直接在程序中里的SparkConf类中指定,这三种方式的优先级为SparkConf>spark-submit参数设置>配置文件。 如果你想知道某个参数到底来自哪种方式,可以将--verbose选项传递给spark-submit。

依赖管理

spark-submit命令可以通过--jars来添加应用程序用到的其他的jar包,这些jar包会被发送到集群中。这些jars可以使用下面几种方式进行添加: file:——>指定http文件服务器的绝对路径,每个executor会从文件服务器上进行下载 hdfs:,http:,https:,ftp:——>从指定的路径下载 local:——>表示直接从当前的worker节点下载本地文件,所以这种方式不存在IO注意:由于每个executor节点的SparkContext都会将jar包和文件拷贝到工作目录,所以机器的空闲空间会逐渐减少,YARN集群模式会自动清理这些jar包和文件,但standalone模式需要配置spark.worker.cleanup.appDataTtl属性以使用自动清理功能。

相关 [spark spark 任务] 推荐:

Spark 任务调度

- - IT瘾-dev
 Spark的核心是基于RDD来实现的,Spark任务调度就是如何组织任务去处理RDD中每个分区的数据,根据RDD的依赖关系构建DAG,基于DAG划分Stage,然后将每个Stage中的任务(Task)分发到指定的节点去运行得到最终的结果. Application:用户编写的Spark应用程序,由一个或多个Job组成.

spark之路第四课——提交spark任务 | uohzoaix

- -
spark是使用spark-submit这个命令来提交任务的. --class:一个spark任务的入口方法,一般指main方法. 如:org.apache.spark.examples.SparkPi). -master:集群的master URL. 如spark://23.195.26.187:7077.

Spark概览

- - 简单文本
Spark具有先进的DAG执行引擎,支持cyclic data flow和内存计算. 因此,它的运行速度,在内存中是Hadoop MapReduce的100倍,在磁盘中是10倍. 这样的性能指标,真的让人心动啊. Spark的API更为简单,提供了80个High Level的操作,可以很好地支持并行应用.

Spark与Mapreduce?

- - 崔永键的博客
我本人是类似Hive平台的系统工程师,我对MapReduce的熟悉程度是一般,它是我的底层框架. 我隔壁组在实验Spark,想将一部分计算迁移到Spark上. 年初的时候,看Spark的评价,几乎一致表示,Spark是小数据集上处理复杂迭代的交互系统,并不擅长大数据集,也没有稳定性. 但是最近的风评已经变化,尤其是14年10月他们完成了Peta sort的实验,这标志着Spark越来越接近替代Hadoop MapReduce了.

Spark迷思

- - ITeye博客
目前在媒体上有很大的关于Apache Spark框架的声音,渐渐的它成为了大数据领域的下一个大的东西. 证明这件事的最简单的方式就是看google的趋势图:. 上图展示的过去两年Hadoop和Spark的趋势. Spark在终端用户之间变得越来越受欢迎,而且这些用户经常在网上找Spark相关资料. 这给了Spark起了很大的宣传作用;同时围绕着它的也有误区和思维错误,而且很多人还把这些误区作为银弹,认为它可以解决他们的问题并提供比Hadoop好100倍的性能.

Spark 优化

- - CSDN博客推荐文章
提到Spark与Hadoop的区别,基本最常说的就是Spark采用基于内存的计算方式,尽管这种方式对数据处理的效率很高,但也会往往引发各种各样的问题,Spark中常见的OOM等等. 效率高的特点,注定了Spark对性能的严苛要求,那Spark不同程序的性能会碰到不同的资源瓶颈,比如:CPU,带宽、内存.

Spark 性能相关参数配置详解-任务调度篇

- - ITeye博客
随着Spark的逐渐成熟完善, 越来越多的可配置参数被添加到Spark中来, 本文试图通过阐述这其中部分参数的工作原理和配置思路, 和大家一起探讨一下如何根据实际场合对Spark进行配置优化. 由于篇幅较长,所以在这里分篇组织,如果要看最新完整的网页版内容,可以戳这里: http://spark-config.readthedocs.org/,主要是便于更新内容.

Spark&Spark性能调优实战

- - CSDN博客互联网推荐文章
       Spark特别适用于多次操作特定的数据,分mem-only和mem & disk. 其中mem-only:效率高,但占用大量的内存,成本很高;mem & disk:内存用完后,会自动向磁盘迁移,解决了内存不足的问题,却带来了数据的置换的消费. Spark常见的调优工具有nman、Jmeter和Jprofile,以下是Spark调优的一个实例分析:.

Mesos上部署spark

- - 开源小站
还是回到之前一直持续的 Mesos话题. 在之前的环节里,我们已经尝试了Mesos的安装,Marathon守护服务以及相对比较主流的Mesos作为Hadoop的资源管理器的实际操作. 这次就说说同属于伯克利出品的Spark. 其实spark最初0.7以前的版本还没有自己的资源管理系统,资源的调度都是通过Mesos来执行的.

Spark容错机制

- - zzm
一般来说,分布式数据集的容错性有两种方式: 数据检查点和记录数据的更新. 面向大规模数据分析,数据检查点操作成本很高,需要通过数据中心的网络连接在机器之间复制庞大的数据集,而网络带宽往往比内存带宽低得多,同时还需要消耗更多的存储资源. 因此,Spark选择记录更新的方式. 但是,如果更新粒度太细太多,那么记录更新成本也不低.