本文转载自:      spark的运行方式

本文主要讲述运行spark程序的几种方式,包括:本地测试、提交到集群运行、交互式运行 等。

在以下几种执行spark程序的方式中,都请注意master的设置,切记。

运行自带样例

可以用 run-example 执行spark自带样例程序,如下:

./bin/run-example org.apache.spark.examples.SparkPi

或者同样的:

run-example SparkPi

交互运行

可以用 spark-shell 以交互方式执行spark代码,这些操作都将由spark自动控制并以分布式处理的形式完成。首先,进入spark shell:

./bin/spark-shell

然后就可以直接执行spark代码了。spark-shell非常适合学习API,初学的话多在里面敲敲很好的。

  • Spark Shell中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用sc即可,否则用户自己再初始化,就会出现端口占用问题,相当于启动两个上下文。
  • 在使用spark-shell时,可以通过 –driver-class-path 选项来指定所依赖的jar文件,多个jar文件之间使用分号”:”分割。
  • 如果觉得spark-shell的日志过多而影响观看结果,可以配置一下日志参数,将conf目录下的log4j.properties.template复制一个并命名为log4j.properties,并修改其中的日志等级就ok了。

本地运行测试

如果你是在windows上开发spark程序,然后提交到linux运行。那么本地测试将会方便开发。
本地测试spark程序,需要将master设置为local[n]。同时注意:sc.textFile()可以加载本地文件而不一定是hdfs文件,这对于开发测试是非常方便的。
本地运行测试spark程序,既可以在IDE中进行,也可以手动在命令行中执行,参见我的linux下spark开发环境配置

windows本地测试时,需要用到hadoop的一个东东(winutils.exe),否则会出现异常。使用方法是:新建一个文件夹 D:\hadoop\bin\ 并将 winutils.exe 放入其中,并保证winutils.exe双击运行没有报*.dll缺失的错误,然后 System.setProperty("hadoop.home.dir", "D:\\hadoop\\") 设置一下hadoop目录即可。

提交到集群

可以用 spark-submit 提交任务到集群执行,如下(这里我们指定了集群URL为spark standalone集群):

spark-submit \
--class 应用程序的类名 \
--master spark://master:7077 \
--jars 依赖的库文件,多个包之间用逗号","分割 \
--executor-memory 2G \
--total-executor-cores 20 \
spark应用程序的jar包 你的应用程序需要的参数(即main方法的参数)

--master参数指定集群URL,可以是独立集群、YARN集群、Mesos集群,甚至是本地模式。见下表:

master可选值 描述
spark://host:port spark standalone集群,默认端口为7077。
yarn YARN集群,当在YARN上运行时,需设置环境变量HADOOP_CONF_DIR指向hadoop配置目录,以获取集群信息。
mesos://host:port Mesos集群,默认端口为5050。
local 本地模式,使用1个核心。
local[n] 本地模式,使用n个核心。
local[*] 本地模式,使用尽可能多的核心。
  • 如果jar包所需的依赖较少,通过--jars手动指定还可以,如果很多,最好使用构建工具打包。
  • 需要注意的是,你的spark程序需要打包成jar包,spark-submit会将程序包分发到各个worker节点,同时这些上传到worker节点的文件,需要定时清理,否则会占用许多磁盘空间,如果运行于standalone模式,你可以设置 spark.worker.cleanup.appDataTtl 选项来让spark自动清理这些文件。
  • 其实安装spark不需要安装scala,因为 spark-assembly-1.2.0-hadoop2.4.0.jar 中已经自带了scala库。spark/bin/compute-classpath.sh 会自动将spark自带的库文件(spark-assembly-1.2.0-hadoop2.4.0.jar等)添加到classpath中,因此即使classpath和你的spark应用程序中都没有指定spark库文件路径,你的spark应用程序照样可以执行。

spark的运行方式——转载的更多相关文章

  1. Spark 精品文章转载(目录)

    学习 Spark 中,别人整理不错的文章,转载至本博客,方便自己学习,并按照不同的模块归档整理.每个文章作者能力不同,写文章所处的时间点不同,可能会略有差异,在阅读的同时,注意当时的文章的内容是否已经 ...

  2. CentOS上安装spark standalone mode(转载)

    原文链接 http://blog.csdn.net/chenxingzhen001/article/details/11072765 参考: http://spark.incubator.apache ...

  3. Project Tungsten:让Spark将硬件性能压榨到极限(转载)

    在之前的博文中,我们回顾和总结了2014年Spark在性能提升上所做的努力.本篇博文中,我们将为你介绍性能提升的下一阶段——Tungsten.在2014年,我们目睹了Spark缔造大规模排序的新世界纪 ...

  4. Spark内核-部署模式

    Master URL Meaning local 在本地运行,只有一个工作进程,无并行计算能力. local[K] 在本地运行,有K个工作进程,通常设置K为机器的CPU核心数量. local[*] 在 ...

  5. 【大数据】Spark内核解析

    1. Spark 内核概述 Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制.Spark任务调度机制.Spark内存管理机制.Spark核心功能的运行原理等,熟练掌握Spa ...

  6. Spark(火花)快速、通用的大数据处理引擎框架

    一.什么是Spark(火花)? 是一种快速.通用处理大数据分析的框架引擎. 二.Spark的四大特性 1.快速:Spark内存上采用DAG(有向无环图)执行引擎非循环数据流和内存计算支持. 内存上比M ...

  7. 【Spark 内核】 Spark 内核解析-上

    Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制.Spark任务调度机制.Spark内存管理机制.Spark核心功能的运行原理等,熟练掌握Spark内核原理,能够帮助我们更 ...

  8. spark源码解析大全

      第1章 Spark 整体概述 1.1 整体概念   Apache Spark 是一个开源的通用集群计算系统,它提供了 High-level 编程 API,支持 Scala.Java 和 Pytho ...

  9. Spark内核解析

    Spark内核概述 Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制.Spark任务调度机制.Spark内存管理机制.Spark核心功能的运行原理等,熟练掌握Spark内核 ...

随机推荐

  1. Myeclipse2014无法启动,启动十分之一自动闪退,闪退

    现象: Myeclipse2014 无法启动 闪退 配图:  解决办法: 删掉 {workspace}/.metadata/.plugins/org.eclipse.e4.workbench/work ...

  2. 为什么我不再用 .NET 框架(网摘)

    觉得好就拿过来收藏了,保留出处链接-凌风 2017年08月23日 14:51:32 hisense_大致若愚 阅读数:9355 .NET平台很棒.真的很棒.直到它不再那么棒.我为什么不再用.NET?简 ...

  3. 实际SQL案例解决方法整理_LEAD函数相关

    表结构及数据如下: 需求: 将记录按照时间顺序排列,每三条记录为一组,若第二条记录与第一条记录相差5分钟,则删除该记录,若第三条与第二条记录相差5分钟,则删除该记录, 第二组同理,遍历全表,按要求删除 ...

  4. 复习Vue

    以前学过vue,但是工作中一直没有用到都忘记了最近在复习下正好做个笔记偶尔看看,(目前常更新,2018年6月25日) 1.指令 setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. ...

  5. javascript设计模式系列二-封装

    JavaScript封装: var Book = function (id, name, price) { this.id = id, this.name = name, this.price = p ...

  6. #leetcode刷题之路16-最接近的三数之和

    给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 例如,给定数 ...

  7. select 宽度跟随option内容自适应

    传统的select在没有设置固定宽度的情况,会因为自身的 option 选项的里,宽度最宽的option作为select本身的宽度 例如 可见效果为: select的宽度因为"宽度最宽的op ...

  8. Laravel源码解析--看看Lumen到底比Laravel轻在哪里

    在前面一篇<Laravel源码解析--Laravel生命周期详解>中我们利用xdebug详细了解了下Laravel一次请求中到底做了哪些处理.今天我们跟 Lumen 对比下,看看 Lume ...

  9. 利用.htaccess文件将多个子域名解析至对应的子目录

    对于不支持子域名解析但是支持 .htaccess 的主机来说,这个功能就非常有用了 假设有主域名 ppios.com,子域名 yspx.ppios.com 和 ask.ppios.com,设置结果为访 ...

  10. 树莓派 raspberry系统 VNC View 连接 Cannot currently show the desktop 错误解决

    https://www.raspberrypi.org/forums/viewtopic.php?t=216737 我是因为空间不够