上篇笔记的基础上,本文介绍Sparkclient的基本配置及Spark任务提交方式。

1. Sparkclient及基本配置

从Spark官网下载的pre-built包中集成了Sparkclient,如与hadoop ver1.x兼容的Sparkclient位于spark-1.3.1-bin-hadoop1/bin文件夹下。

Sparkclient通常部署在要提交计算任务的机器上。用来向集群提交应用。特别地。client自带的bin/pyspark脚本支持以交互模式向集群提交应用,在交互模式下測试spark python api的运行结果是非常方便的

Sparkclient的配置文件通常位于conf文件夹下,典型的配置文件列表例如以下所列:

spark-defaults.conf  // 设置spark master地址、每一个executor进程的内存、占用核数,等等
spark-env.sh // spark相关的各种环境变量
log4j.properties.template // 设置driver向console输出的日志的等级及格式
fairscheduler.xml.template // 设置调度方式
metrics.properties.template // 设置spark内部metrics系统。一般无需修改
slaves // 设置spark集群中的slave节点(即worker节点)。无需修改
hadoop-default.xml // hadoop配置。主要是hdfs的配置
hadoop-site.xml // hadoop集群的訪问配置(如master地址)

注意:因为spark的输入文件通常来自HDFS。故除spark本身的配置文件外,通常还需在conf文件夹下包括hadoop相关的配置文件,如上述演示样例中的hadoop-default.xml和hadoop-site.xml。

在这些配置文件里,最重要的是spark-defaults.conf,典型配置模板例如以下所看到的。

# Default system properties included when running spark-submit.
# This is useful for setting default environmental settings. # Example:
# spark.master spark://master:7077
# spark.eventLog.enabled true
# spark.eventLog.dir hdfs://namenode:8021/directory
# spark.serializer org.apache.spark.serializer.KryoSerializer
# spark.driver.memory 5g
# spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"

从模板可见,必须的配置项是spark.master的地址。此外另一些影响Spark执行性能的配置项,限于篇幅,这里不再赘述。

建议细致阅读Spark Configuration文档。

2. 怎样向spark集群提交应用

Sparkclient自带的bin/spark-submit脚本能够用来向集群提交应用,如以下的演示样例命令通过Sparkclient提交了一个基于ALS算法的矩阵分解模型用来实现电影个性化推荐:

spark-1.3.0.5-bin/bin/spark-submit movie_als_rec.py

假设应用程序依赖了其他库,则须要将应用程序及其依赖总体打包提交到spark集群

详细而言,若提交java应用,则可借助sbt或Maven的相关插件打成jar文件再提交(无需包括spark或hadoop相关的依赖,它们由cluster manager提供);若提交Python应用,则可先将应用脚本及其依赖打包成.zip或.egg包。然后借助—py-files參数将zip或egg文件传给spark-submit脚本。

spark-submit支持的參数列表可从官网文档了解,也可打开spark-submit脚本查看。脚本中解析參数的代码片段例如以下:



这里对deploy-mode參数做特别说明:

1) deploy mode分为client和cluster两种。

2) 若待提交的应用部署的节点与集群worker节点在物理网络上非常近。则以client模式提交应用较为合理。在client模式下,driver由spark应用脚本所在机器节点的spark-submit直接调起。driver针相应用的输入/输出会打印至该节点的终端控制台。

3) 若spark应用脚本部署节点与spark集群worker节点物理网络距离较远,则以cluster提交能够降低driver和executors间的网络延时(由于正常情况下,应用分解出的若干tasks均会由driver负责调度executor来运行。每次调度均有网络开销)。

4) 眼下以standalone或mesos方式部署的spark集群不支持cluster模式,基于Python的spark应用提交也不支持cluster模式。

未完待续,下篇笔记将会介绍Spark集群相应用的调度方式。

【參考资料】

1. Spark Configuration

==================== EOF ===================

Spark调研笔记第2篇 - 怎样通过Sparkclient向Spark提交任务的更多相关文章

  1. Spark调研笔记第6篇 - Spark编程实战FAQ

    本文主要记录我使用Spark以来遇到的一些典型问题及其解决的方法,希望对遇到相同问题的同学们有所帮助. 1. Spark环境或配置相关 Q: Sparkclient配置文件spark-defaults ...

  2. Spark调研笔记第3篇 - Spark集群相应用的调度策略简单介绍

    Spark集群的调度分应用间调度和应用内调度两种情况,下文分别进行说明. 1. 应用间调度 1) 调度策略1: 资源静态分区 资源静态分区是指整个集群的资源被预先划分为多个partitions,资源分 ...

  3. Spark调研笔记第4篇 - PySpark Internals

    事实上.有两个名为PySpark的概念.一个是指Sparkclient内置的pyspark脚本.而还有一个是指Spark Python API中的名为pyspark的package. 本文仅仅对第1个 ...

  4. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  5. Spark学习笔记1——第一个Spark程序:单词数统计

    Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...

  6. 【转载】Spark性能优化指南——高级篇

    前言 数据倾斜调优 调优概述 数据倾斜发生时的现象 数据倾斜发生的原理 如何定位导致数据倾斜的代码 查看导致数据倾斜的key的数据分布情况 数据倾斜的解决方案 解决方案一:使用Hive ETL预处理数 ...

  7. 【转载】 Spark性能优化指南——基础篇

    转自:http://tech.meituan.com/spark-tuning-basic.html?from=timeline 前言 开发调优 调优概述 原则一:避免创建重复的RDD 原则二:尽可能 ...

  8. Spark学习笔记之SparkRDD

    Spark学习笔记之SparkRDD 一.   基本概念 RDD(resilient distributed datasets)弹性分布式数据集. 来自于两方面 ①   内存集合和外部存储系统 ②   ...

  9. spark学习笔记总结-spark入门资料精化

    Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用. ...

随机推荐

  1. Apache 编译扩展的方法

    下载源码包 进入源码包的modules目录 选择你要编译的.c文件 eg: /home/work/local/apache/bin/apxs -c -i -a mod_proxy_http.c 选项说 ...

  2. 去掉xcode编译warning:ld: warning: directory not found for option '

    tyle="margin:20px 0px 0px; font-size:14px; line-height:26px; font-family:Arial; text-align:left ...

  3. 1)③爬取网易It方面部分新闻

    __author__ = 'minmin' #coding:utf-8 import re,urllib,sgmllib,os #根据当前的url获取html def getHtml(url): pa ...

  4. codeforces 377B Preparing for the Contest 二分+优先队列

    题目链接 给你m个bug, 每个bug都有一个复杂度.n个人, 每个人有两个值, 一个是能力值, 当能力值>=bug的复杂度时才可以修复这个bug, 另一个是雇佣他需要的钱,掏一次钱就可以永久雇 ...

  5. maven 常用命令及操作(转)

    Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ Maven常用命令: 1. 创建Maven的普通 ...

  6. 腾讯出品的抓包工具Rythem

    Mac下一直没有fiddler这样好用的抓包工具,Charles要收费,难免不爽,昨天调研国内项目的时候,看到腾讯开源了一款抓包工具Rythem,试用了一下,基本配置无问题,但是通配符方面不太搞的定. ...

  7. makefile简单helloworld

    最近要在unix系统上开发c++应用程序,但默认情况下unix编译c++程序需要使用makefile.其实makefile语法还是比较简单,看上去有点像ant.废话不说了,直接上helloworld. ...

  8. Linux c 信号—pause、sigsuspend 的相同于区别

    pause函数:      功能:让进程暂停直到信号出现 #include<unistd.h> intpause(); 函数说明:pause()会令目前的进程暂停(进入睡眠状态),直至信号 ...

  9. Java的接口及实例

    一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...

  10. hdoj 1052 Tian Ji -- The Horse Racing【田忌赛马】 【贪心】

    思路:先按从小到大排序, 然后从最快的開始比(如果i, j 是最慢的一端, flag1, flag2是最快的一端 ),田的最快的大于king的 则比較,如果等于然后推断,有三种情况: 一:大于则比較, ...