使用Spark 时,通常会有两种模式。
一、在交互式编程环境(REPL, a.k.a spark-shell)下实现一些代码,测试一些功能点。
二、像MapReduce 那样提前编写好源代码并编译打包(仅限 Java 或 Scala,Python 不需要),然后将程序代码通过spark-submit 命令提交到 YARN 集群完成计算。

spark-shell

启动 spark-shell 通常需要指定 master、executor 内存、executor 数量等参数。由于 YARN 集群有审计机制,每个人提交的 spark application 需要指定 name 参数,同时确保 name 是以个人的 LDAP 用户名为后缀。另外,如果你不确定 driver 是否有足够的内存能容纳一个 RDD 的计算结果,建议不要使用 RDD 的 collect 方法而使用其 take 方法,否则会使 driver 发生 OOM。

  1.scala交互式编程环境

  通过命令启动sprak-shell

/opt/tige/spark2/bin/spark-shell \
--master yarn-client \
--queue root.default \
--driver-memory 4g \
--executor-memory 8g\
--conf spark.dynamicAllocation.maxExecutors= \
--name spark_test_{your username}

启动spark后系统自动创建sc和sqlContext(HiveContext实例),可以使用它们来创建RDD或者DataFarme

  2.使用Python交互式编程环境

  通过命令pyspark

/opt/tiger/spark_deploy/spark2/bin/ipyspark --master yarn-client --queue root.default --driver-memory 4g --executor-memory 8g --num-executors  --name spark_test_${your LDAP user name}

spark-submit

首先我们需要使用 Spark 的 API 实现一个拥有入口(main)的程序,然后通过 spark-submit 提交到 YARN 集群。
  1. Scala 版本的 WordCount

    import org.apache.spark.{SparkConf, SparkContext}
    
    object WordCount extends App {
    val sparkConf = new SparkConf()
    sparkConf.setAppName("spark_test_${your LDAP user name}")
    sparkConf.setMaster("yarn-client")
    sparkConf.set("spark.driver.memory", "4g")
    sparkConf.set("spark.executor.memory", "8g")
    sparkConf.set("spark.dynamicAllocation.initialExecutors", "")
    sparkConf.set("spark.dynamicAllocation.maxExecutors", "")
    val sc = new SparkContext(sparkConf)
    val words = sc.textFile("/path/to/text/file")
    val wordCount = words.map(word => (word, 1)).reduceByKey(_ + _).collect()
    wordCount.foreach(println)
    }

    完成代码编写与编译打包之后就可以通过 spark-submit 来提交应用了,命令如下:

    /opt/tiger/spark_deploy/spark2/bin/spark-submit --master yarn-client --class WordCount your_spark_test.jar
  2. python版本的WordCount
    from pyspark import SparkContext, SparkConf
    from operator import add if __name__ == '__main__':
    conf = SparkConf()
    conf.setMaster('yarn-client')
    conf.setAppName('spark_test_${your LDAP user name}')
    conf.set("spark.driver.memory", "4g")
    conf.set("spark.executor.memory", "8g")
    conf.set("spark.dynamicAllocation.initialExecutors", "")
    conf.set("spark.dynamicAllocation.maxExecutors", "")
    sc = SparkContext(conf=conf) words = sc.textFile("/path/to/text/file")
    wordCount = words.map(lambda word: (word, 1)).reduceByKey(add).collect()
    for key, value in wordCount:
    print key, value
    假设上面这段 Python 代码的文件名为 your_spark_test.py,那么提交这段代码到 YARN 集群的命令如下:
    /opt/tiger/spark_deploy/spark2/bin/spark-submit --master yarn-client your_spark_test.py

Spark学习散点总结的更多相关文章

  1. Spark学习(一) -- Spark安装及简介

    标签(空格分隔): Spark 学习中的知识点:函数式编程.泛型编程.面向对象.并行编程. 任何工具的产生都会涉及这几个问题: 现实问题是什么? 理论模型的提出. 工程实现. 思考: 数据规模达到一台 ...

  2. Spark学习笔记之SparkRDD

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

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

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

  4. 用Spark学习FP Tree算法和PrefixSpan算法

    在FP Tree算法原理总结和PrefixSpan算法原理总结中,我们对FP Tree和PrefixSpan这两种关联算法的原理做了总结,这里就从实践的角度介绍如何使用这两个算法.由于scikit-l ...

  5. 用Spark学习矩阵分解推荐算法

    在矩阵分解在协同过滤推荐算法中的应用中,我们对矩阵分解在推荐算法中的应用原理做了总结,这里我们就从实践的角度来用Spark学习矩阵分解推荐算法. 1. Spark推荐算法概述 在Spark MLlib ...

  6. Spark学习笔记2(spark所需环境配置

    Spark学习笔记2 配置spark所需环境 1.首先先把本地的maven的压缩包解压到本地文件夹中,安装好本地的maven客户端程序,版本没有什么要求 不需要最新版的maven客户端. 解压完成之后 ...

  7. Spark学习笔记3(IDEA编写scala代码并打包上传集群运行)

    Spark学习笔记3 IDEA编写scala代码并打包上传集群运行 我们在IDEA上的maven项目已经搭建完成了,现在可以写一个简单的spark代码并且打成jar包 上传至集群,来检验一下我们的sp ...

  8. 2019-1-24 Spark 学习 --总体架构

    2019-1-24 Spark 学习 --总体架构 新建 模板 小书匠 1548339392539.jpg 1548339357270.jpg 1548339372461.jpg 1548339345 ...

  9. redis学习-散列表常用命令(hash)

    redis学习-散列表常用命令(hash)   hset,hmset:给指定散列表插入一个或者多个键值对 hget,hmget:获取指定散列表一个或者多个键值对的值 hgetall:获取所欲哦键值以及 ...

随机推荐

  1. 【转】django 与 vue 的完美结合 实现前后端的分离开发之后在整合

    https://blog.csdn.net/guan__ye/article/details/80451318   最近接到一个任务,就是用django后端,前段用vue,做一个普通的简单系统,我就是 ...

  2. Node.js下的Hello World

    Node.js技术现在可谓是如火如荼,前后端都统一为Javascript的体验绝对是受到了很多人的青睐,我都后悔以前没抽时间好好学一学Javascript了. 首先,我来介绍一下Node.js.本人实 ...

  3. Vue 2.0学习(五)v-bind及class与style绑定

    DOM元素经常会动态地绑定一些class类名或style样式. 基本用法 <div id="app"> <a v-bind:href="url" ...

  4. vmware12安装centos7系统详解

    1.首先需要准备的工具有vmware12和contos7的系统. vmvare12下载地址: http://pan.baidu.com/s/1i5vH50D contos7我自己使用的为1511版本. ...

  5. 【BZOJ 1272】 1272: [BeiJingWc2008]Gate Of Babylon (容斥原理+卢卡斯定理)

    1272: [BeiJingWc2008]Gate Of Babylon Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 254  Solved: 12 ...

  6. Entity Framework(实体框架 EF)

    什么是Entity Framework呢(下面简称EF)? EF(实体框架)是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架.ORM(对象关系映射框架):指的是面向 ...

  7. 更换mac电脑后证书过期的解决办法

    http://stackoverflow.com/questions/32821189/xcode-7-error-missing-ios-distribution-signing-identity- ...

  8. Hash表及hash算法的分析

    Hash表中的一些原理/概念,及根据这些原理/概念: 一.       Hash表概念 二.       Hash构造函数的方法,及适用范围 三.       Hash处理冲突方法,各自特征 四.   ...

  9. [bzoj1024][SCOI2009]生日快乐 (枚举)

    Description windy的生日到了,为了庆祝生日,他的朋友们帮他买了一 个边长分别为 X 和 Y 的矩形蛋糕.现在包括windy,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的 ...

  10. 事务有哪些特性?spring的事务管理有几种方式实现,如何实现?

    特性:1.原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做 2.一致性:数据不会因为事务的执行而遭到破坏 3.隔离性:一个事物的执行,不受其他事务的干扰,即并发执行的事 ...