• Spark学习笔记(二)—— Local模式


    Spark 的运行模式有 Local(也称单节点模式),Standalone(集群模式),Spark on Yarn(运行在Yarn上),Mesos以及K8s等常用模式,本文介绍第一种模式。

    1、Local模式

    Local模式就是运行在一台计算机上的模式, 也称单节点模式 。Local 模式是最简单的一种Spark运行方式,它采用单节点多线程(CPU)方式运行, 通常就是用于在本机学习或者测试使用的,对新手比较友好。它可以通过以下的方式设置Master:

    • local:所有的计算都运行在一个线程中,没有任何的并行计算。通常我们在学习和测试的时候都是使用这种模式;

    • local[K]:这种方式可以指定用几个线程来计算,比如local[4],就是指定4个Worker线程。通常我们的CPU有几个Core,就指定介个线程,最大化的利用CPU的计算能力;

    • local[*]:这种模式直接帮你按照CPU最多Core来设置线程数量了。

    2、安装使用

    说了那么多,还没见真章。那么接下来开始安装使用一下~~

    1)上传并且解压Spark安装包

    我使用的是spark-2.1.1-bin-hadoop2.7.tgz

    [simon@hadoop102 sorfware]$ tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/
    
    [simon@hadoop102 module]$ mv spark-2.1.1-bin-hadoop2.7 spark
    

    解压完成之后看到目录还是非常清晰的:

    2)蒙特卡罗法求PI

    这是一个官方小案例,看代码

    [simon@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    
    

    解析一下上边的语法:

    • --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个

    这就是迭代100次的运算结果,运行速度还是非常快的:

    再来一个小的WordCount的小案例演示,同样也是很简单的。

    1)创建待输入的文件

    [simon@hadoop102 spark]$ mkdir input
    
    #创建a.txt和b.txt,填写如下内容:
    hello simon
    hello spark
    

    我创建的过程和编写的文件内容如下:

    2)启动spark-shell

    [simon@hadoop102 spark]$ bin/spark-shell
    Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
    Setting default log level to "WARN".
    ....
    #会打印一堆的启动日志信息
    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> 
    

    在启动日志中可以看到这么三行:

    解释一下这三个东西:

    • Web UI : 可以在web页面看到Spark集群的信息;
    • Spark context ..sc:可以理解为sc是Spark Core的程序入口;
    • Spark session ..spark:可以理解为spark是Spark SQL程序的入口。

    之后会用到,到时候再详细解释~~~

    再起一个窗口,执行jps可以看到启动了SparkSubmit进程,这样就算是启动成功了~~

    3)运行WordCount程序

    sc.textFile("./input").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
    

    看运行结果,nice ~~

    后边我们会解释这些代码的含义。

    可登录hadoop102:4040查看程序运行,整个流程还是非常清晰的:

    3、分析WordCount流程

    直接看个图吧:

    那我们回过头来解释一下代码吧,有scala语言基础的话,看起来还不是太难:

    • textFile("input"):读取本地文件input文件夹数据;
    • flatMap(_.split(" ")):压平操作,按照空格分割符将一行数据映射成一个个单词;
    • map((__,1)):对每一个元素操作,将单词映射为元组;
    • reduceByKey(+):按照key将值进行聚合,相加;
    • collect:将数据收集到Driver端展示。

    我这样语言组织起来比较费劲,先留个坑,过段时间回过头来再补充流程分析。

    文件是怎么被读出、被分割、被统计展示的呢?还是看图吧,等我组织好语言回来补充:


    参考资料:

    [1]李海波. 大数据技术之Spark


  • 相关阅读:
    Windows Store App 主题动画
    Windows Store App 过渡动画
    Windows Store App 控件动画
    Windows Store App 近期访问列表
    Windows Store App 文件选取器
    Windows Store App 访问应用内部文件
    Windows Store App 用户库文件分组
    Windows Store App 获取文件及文件夹列表
    Windows Store App 用户库文件夹操作
    Windows Store App 用户库文件操作
  • 原文地址:https://www.cnblogs.com/simon-1024/p/12170884.html
Copyright © 2020-2023  润新知