美文网首页
Spark运行模式之Local模式

Spark运行模式之Local模式

作者: 大数据小同学 | 来源:发表于2020-07-21 10:18 被阅读0次

    Spark安装地址

    1. 官网地址
      http://spark.apache.org/
    2. 文档查看地址
      https://spark.apache.org/docs/2.1.1/
    3. 下载地址
      https://spark.apache.org/downloads.html

    重要角色

    Driver(驱动器)

    Spark的驱动器是执行开发程序中的main方法的进程。它负责开发人员编写的用来创建SparkContext、创建RDD,以及进行RDD的转化操作和行动操作代码的执行。如果你是用spark shell,那么当你启动Spark shell的时候,系统后台自启了一个Spark驱动器程序,就是在Spark shell中预加载的一个叫作 sc的SparkContext对象。如果驱动器程序终止,那么Spark应用也就结束了。主要负责:

    1. 把用户程序转为作业(JOB)
    2. 跟踪Executor的运行状况
    3. 为执行器节点调度任务
    4. UI展示应用运行状况

    Executor(执行器)

    Spark Executor是一个工作进程,负责在 Spark 作业中运行任务,任务间相互独立。Spark 应用启动时,Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。主要负责:

    1. 负责运行组成 Spark 应用的任务,并将结果返回给驱动器进程;
    2. 通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

    Local模式

    概述

    1. Local模式就是运行在一台计算机上的模式,通常就是用于在本机上练手和测试。它可以通过以下集中方式设置Master。
    2. local: 所有计算都运行在一个线程当中,没有任何并行计算,通常我们在本机执行一些测试代码,或者练手,就用这种模式;
    3. local[K]: 指定使用几个线程来运行计算,比如local[4]就是运行4个Worker线程。通常我们的Cpu有几个Core,就指定几个线程,最大化利用Cpu的计算能力
    4. local[*]: 这种模式直接帮你按照Cpu最多Cores来设置线程数了

    安装使用

    1. 上传并解压spark安装包
    [liujh@hadoop102 sorfware]$ tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/
    [liujh@hadoop102 module]$ mv spark-2.1.1-bin-hadoop2.7 spark
    
    1. 官方求PI案例
    [liujh@hadoop102 spark]$ bin/spark-submit \
    --class org.apache.spark.examples.SparkPi \
    --executor-memory 1G \
    --total-executor-cores 2 \
    ./examples/jars/spark-examples_2.11-2.1.1.jar \
    100
    
    1. 基本语法
    bin/spark-submit \
    --class <main-class>
    --master <master-url> \
    --deploy-mode <deploy-mode> \
    --conf <key>=<value> \
    ... # other options
    <application-jar> \
    [application-arguments]
    参数说明:
    --master 指定Master的地址,默认为Local
    --class: 你的应用的启动类 (如 org.apache.spark.examples.SparkPi)
    --deploy-mode: 是否发布你的驱动到worker节点(cluster) 或者作为一个本地客户端 (client) (default: client)*
    --conf: 任意的Spark配置属性, 格式key=value. 如果值包含空格,可以加引号“key=value” 
    application-jar: 打包好的应用jar,包含依赖. 这个URL在集群中全局可见。 比如hdfs:// 共享存储系统, 如果是 file:// path, 那么所有的节点的path都包含同样的jar
    application-arguments: 传给main()方法的参数
    --executor-memory 1G 指定每个executor可用内存为1G
    --total-executor-cores 2 指定每个executor使用的cup核数为2个
    
    1. 结果展示


      image.png
    2. 准备文件
    [liujh@hadoop102 spark]$ mkdir input
    在input下创建3个文件1.txt和2.txt,并输入以下内容
    hello liujh
    hello spark
    
    1. 启动spark-shell
    [liujh@hadoop102 spark]$ bin/spark-shell
    Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
    Setting default log level to "WARN".
    To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
    18/09/29 08:50:52 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    18/09/29 08:50:58 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
    Spark context Web UI available at http://192.168.9.102:4040
    Spark context available as 'sc' (master = local[*], app id = local-1538182253312).
    Spark session available as 'spark'.
    Welcome to
          ____              __
         / __/__  ___ _____/ /__
        _\ \/ _ \/ _ `/ __/  '_/
       /___/ .__/\_,_/_/ /_/\_\   version 2.1.1
          /_/
             
    Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_144)
    Type in expressions to have them evaluated.
    Type :help for more information.
    scala>
    开启另一个CRD窗口
    [liujh@hadoop102 spark]$ jps
    3627 SparkSubmit
    4047 Jps
    

    可登录hadoop102:4040查看程序运行


    image.png
    1. 运行WordCount程序
    scala>sc.textFile("input").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
    res0: Array[(String, Int)] = Array((hadoop,6), (oozie,3), (spark,3), (hive,3), (liujh,3), (hbase,6))
    

    可登录hadoop102:4040查看程序运行


    image.png
    1. WordCount程序分析
      提交任务分析:


      image.png

      数据流分析:

    textFile("input"):读取本地文件input文件夹数据;
    flatMap(_.split(" ")):压平操作,按照空格分割符将一行数据映射成一个个单词;
    map((_,1)):对每一个元素操作,将单词映射为元组;
    reduceByKey(_+_):按照key将值进行聚合,相加;
    collect:将数据收集到Driver端展示。
    
    image.png 关注微信公众号
    简书:https://www.jianshu.com/u/0278602aea1d
    CSDN:https://blog.csdn.net/u012387141

    相关文章

      网友评论

          本文标题:Spark运行模式之Local模式

          本文链接:https://www.haomeiwen.com/subject/vedjyhtx.html