博客
关于我
Spark之本地模式与集群模式
阅读量:640 次
发布时间:2019-03-15

本文共 2843 字,大约阅读时间需要 9 分钟。

Spark本地模式与集群模式的对比与应用

Spark是流行的大数据处理框架,它的运行模式主要包括本地模式与集群模式。理解这两种模式的工作原理,以及如何选择合适的运行模式,是 cigar/apache Spark developers 和应用程序开发者的重要课题。本文将从理论和实践两个方面,详细分析本地模式与集群模式的特点,及其在实际应用中的适用场景。

本地模式

本地模式是Spark最常用的运行方式之一。在本地模式下,Spark程序运行在用户的本地机器上,不需要远程提交,而是通过本地的Spark Context(sc)进行执行。这种方式对于开发、调试和小规模的数据处理尤其方便。让我们具体了解本地模式的工作原理和应用场景。

  • 本地模式的启动方法
  • 在Spark Shell中,可以直接通过命令启动本地模式的Spark程序。以下是一个典型的示例:

    $ spark-shell --master local[2]

    在上述命令中:

    • local 表示使用本地模式运行。
    • [2] 表示使用2个本地线程来模拟集群环境。

    这是一个非常常见的方式,适用于快速验证或小规模的数据处理任务。

    1. 基于Scala的本地模式开发
    2. 如果你使用Spark Scala API,本地模式的配置方式看起来如下:

      object WordCountLocal {  def main(args: Array[String]): Unit = {    val conf = new SparkConf()      .setAppName("wordcount")      .setMaster("local[2]")    val sc = new SparkContext(conf)    sc.textFile("file:///d:/a.txt")      .flatMap(_.split(","))      .map((_, 1))      .reduceByKey(_ + _)      .sortBy(_._2)      .saveAsTextFile("file:///d:/out")  }}

      在上述代码中:

      • sparkContext 是本地模式的Spark Context。
      • local[2] 表示使用2个线程来运行任务。

      这种方式的优点是直观,依赖轻量,适合个人开发和小项目。

      集群模式

      相比于本地模式,集群模式是一种规范化的运行方式,适用于大规模数据处理和多用户环境。集群模式的一个主要特点是将任务分发到集群中的多个 worker 节点,利用集群的资源优势来提高计算能力。接下来,我们将详细介绍集群模式的使用方法和优势。

    3. 集群模式的启动方法
    4. 在集群模式下,需要首先启动一个 master 节点,然后将 application提交给 master。以下是一个典型的集群模式启动命令:

      $ spark-shell --master spark://server01:7077 \  --total-executor-cores 3 \  --executor-memory 1g

      在上述命令中:

      • --master spark://server01:7077:指定 master 节点的地址。
      • --total-executor-cores 3:指定 executor 的核数,即 worker 节点的数量。
      • --executor-memory 1g:指定每个 executor nodes 的内存大小。

      启动 master 节点后,可以使用命令提交 application:

      $ spark-submit \  --master spark://server01:7077 \  --total-executor-cores 2 \  --executor-memory 1g \  --class com.yundoku.spark.WordCountMaster \  /home/hadoop/sparkscalawordcount.jar \  /spark/words.txt \  /spark/scala_wordcount_out

      上述命令中:

      • --class 参数指定了要运行的主类路径。
      • /spark/words.txt:输入文件路径。
      • /spark/scala_wordcount_out:输出文件路径。
      1. 基于Scala的集群模式开发
      2. 对于Spark Scala API,集群模式的程序开发方式与本地模式类似,但需要集中管理Spark Context。以下是一个典型的集群模式应用代码:

        object WordCountMaster {  def main(args: Array[String]): Unit = {    val conf = new SparkConf()      .setAppName("WordCountMaster")    val sparkContext = new SparkContext(conf)        sparkContext.textFile(args(0))      .flatMap(_.split(","))      .map((_, 1))      .reduceByKey(_ + _)      .sortBy(_._2)      .saveAsTextFile(args(1))  }}

        在集群模式下,sparkContext 将根据配置文件连接到远程集群。

        集群模式与本地模式的对比

        尽管本地模式和集群模式都可以用于Spark程序的执行,但二者在运行机制、资源利用和应用场景上存在显著差异。以下是对本地模式与集群模式的对比总结:

      3. 本地模式特点
        • 资源使用:本地模式会在本地机器上使用少量的资源,通常为用户帐号下的本地用户(user@local)。
        • 执行方式:使用本地线程模拟集群环境,不具备高并发能力。
        • 展示结果:本地模式的结果不会展示在集群的Web界面(Port 8080),因为没有 master 节点。
        1. 集群模式特点
          • 资源利用:集群模式可以高效利用集群中的各个 worker 节点,以支持大规模的数据处理任务。
          • 执行方式:通过 master 节点统一接收并分发任务到多个 worker 节点上。
          • 展示结果:集群模式的应用任务结果会展示在 master 节点的Web界面(Port 8080)。

          适用场景

          • 小规模数据处理:本地模式更适合小规模的数据处理任务,开发效率高,且无需配置复杂的集群环境。
          • 大规模数据处理:集群模式对于处理大规模数据和需要分布式计算的任务更为理想,能够充分利用集群资源,具备高吞吐量。

          总的来说,Spark 提供了两种运行模式,本地模式适合小项目或个人开发需求,而集群模式则适合大型数据处理任务。根据具体需求选择合适的运行模式,是Spark应用开发的重要课题之一。

    转载地址:http://tgxlz.baihongyu.com/

    你可能感兴趣的文章
    mysql-connector-java各种版本下载地址
    查看>>
    mysql-EXPLAIN
    查看>>
    MySQL-Explain的详解
    查看>>
    mysql-group_concat
    查看>>
    MySQL-redo日志
    查看>>
    MySQL-【1】配置
    查看>>
    MySQL-【4】基本操作
    查看>>
    Mysql-丢失更新
    查看>>
    Mysql-事务阻塞
    查看>>
    Mysql-存储引擎
    查看>>
    mysql-开启慢查询&所有操作记录日志
    查看>>
    MySQL-数据目录
    查看>>
    MySQL-数据页的结构
    查看>>
    MySQL-架构篇
    查看>>
    MySQL-索引的分类(聚簇索引、二级索引、联合索引)
    查看>>
    Mysql-触发器及创建触发器失败原因
    查看>>
    MySQL-连接
    查看>>
    mysql-递归查询(二)
    查看>>
    MySQL5.1安装
    查看>>
    mysql5.5和5.6版本间的坑
    查看>>