Spark 集群的模式及提交任务的方式

  • 本文大致的内容图

  • Spark 集群的两种模式:

    • Standalone 模式

      • Standalone-client 任务提交方式

        • 提交命令

          ./spark-submit
          --master spark://node1:7077 (主节点的位置)
          --class 类的包+类名
          jar包的位置
          1000 # 分区参数, 也可以说是并行度

          ||

          ./spark-submit
          --master spark://node1:7077
          --deploy-mode client
          --class 类的包+类名
          jar包的位置
          100 # 分区参数, 也可以说是并行度
        • 执行原理

        • 执行流程

          1. client 模式提交任务后, 会在客户端启动Driver进程
          2. Driver 会向 Master 申请启动 Application启动的资源
          3. 资源申请成功, Driver 端将 task 发送到 worker端执行
          4. Worker 端将 task 执行结果 返回 到 Driver 端
        • 总结

          • client模式适用于测试调试程序。
          • Driver进程是在客户端启动的。这里的客户端指的是应用程序的当前节点
          • 在Driver端可以看到task执行的情况。
          • 生产环境下不能使用client模式是因为: 假设提交100个 Application 到集群运行, Driver每次都会在client端启动, 那么就会导致客户端100次网卡流量暴增。
      • Standalone-cluster 任务提交方式

        • 提交命令

          ./spark-submit
          --master spark://node1:7077
          --deploy-mode cluster
          --class 包+类名
          jar包的位置
          100 # 分区参数, 也可以说是并行度 #注意:Standalone-cluster提交方式,应用程序使用的所有jar包和文件,必须保证所有的worker节点都要有,因为此种方式,spark不会自动上传包。
          # 解决方式:
          # 1.将所有的依赖包和文件打到同一个包中,然后放在hdfs上。
          # 2.将所有的依赖包和文件各放一份在worker节点上。
        • 执行原理

        • 执行流程

          1. cluster模式提交应用程序后会先向 Master 请求启动 Driver
          2. Master 接收请求, 随机在集中的一台节点启动Driver进程
          3. Driver启动后为当前的应用程序申请资源
          4. Driver端发送task到worker节点上执行
          5. worker 将执行情况和执行结果返回 Driver
        • 总结

          • Standalone-cluster 运行方式适用于生产环境
          • 此时在driver端界面看不到执行任务情况
          • 由于driver会被随机分配到worker节点上启动, 那么不会有流量激增问题
    • On Yarn 模式

      • Yarn-client 任务提交方式

        • 提交命令

          ./spark-submit
          --master yarn
          --class 包+类名
          jar文件位置
          100

          ||

          ./spark-submit
          --master yarn–client
          --class 包+类名
          jar文件位置
          100

          ||

          ./spark-submit
          --master yarn
          --deploy-mode client
          --class 包+类名
          jar文件位置
          100
        • 执行原理

        • 执行流程

          1. 客户端提交一个 Application, 在客户端启动一盒Driver 进程。
          2. 应用程序启动后会向RM(ResourceManager) 发送请求, 启动AM(ApplicationMaster)
          3. RM 收到请求, 随机选择一台 NM(NodeManager)启动AM。这里的NM相当于Standalone中的Worker节点
          4. AM 启动后, 会向 RS 请求一批container资源, 用于启动Executor
          5. RM会找到一批NM返回给AM, 用于启动Executor
          6. AM会向NM发送命令启动Executor
          7. Executor 启动后, 会反向注册给Driver, Driver 发送 task 到 Executor, 执行情况和结果返回给Driver端
        • 总结

          • Yarn-client模式同样适用于测试, 因为Driver运行在本地, Driver会与yarn集群中的Executor 进行大量的通信, 会造成客户机网卡流量的大量增加

          • ApplicationMaster 的作用:

            • 为当前的Application申请资源

            • 给NodeManager发送消息启动Executor

      • Yarn-cluster 任务提交方式

        • 提交命令

          ./spark-submit
          --master yarn
          --deploy-mode cluster
          --class 包+类名
          jar文件位置
          100

          ||

          /spark-submit
          --master yarn-cluster
          --class 包+类名
          jar文件位置
          100
        • 执行原理

        • 执行流程

          1. 客户机提交Application应用程序, 发送请求到RM(ResourceManager), 请求启动(ApplicationMaster)
          2. RM收到请求后随即在一台 NM(NodeManager) 上启动 AM(相当于Driver 端)
          3. AM启动后, AM 发送请求到 RM, 申请一批容器(container)来启动Executor
          4. RM 返回一批 NM 节点 给 AM
          5. AM 连接到 NM, 发送请求到 NM 启动 Executor
          6. Executor 反向注册到 AM 所在节点的 Driver,Driver再发送task到Executor
        • 总结

          • Yarn-Cluster 主要用于生产环境中, 因为 Driver运行在 Yarn 集群中某一台NodeManager中, 每次提交任务的 Driver 所在机器都是随机的, 并不会产生一台机器网卡流量激增的现象。
          • 缺点是提交任务不能看到日志, 只能通过yarn查看日志
          • ApplicationMaster的作用
            • 为当前的 Application 申请资源
            • 给NodeManger 发送消息启动 Executor
            • 任务调度

Spark 集群 任务提交模式的更多相关文章

  1. Spark集群任务提交

    1. 集群管理器 Spark当前支持三种集群管理方式 Standalone—Spark自带的一种集群管理方式,易于构建集群. Apache Mesos—通用的集群管理,可以在其上运行Hadoop Ma ...

  2. Spark集群任务提交流程----2.1.0源码解析

    Spark的应用程序是通过spark-submit提交到Spark集群上运行的,那么spark-submit到底提交了什么,集群是怎样调度运行的,下面一一详解. 0. spark-submit提交任务 ...

  3. Spark集群之yarn提交作业优化案例

    Spark集群之yarn提交作业优化案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.启动Hadoop集群 1>.自定义批量管理脚本 [yinzhengjie@s101 ...

  4. CentOS6安装各种大数据软件 第十章:Spark集群安装和部署

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  5. Spark集群模式&Spark程序提交

    Spark集群模式&Spark程序提交 1. 集群管理器 Spark当前支持三种集群管理方式 Standalone-Spark自带的一种集群管理方式,易于构建集群. Apache Mesos- ...

  6. 大数据学习day18----第三阶段spark01--------0.前言(分布式运算框架的核心思想,MR与Spark的比较,spark可以怎么运行,spark提交到spark集群的方式)1. spark(standalone模式)的安装 2. Spark各个角色的功能 3.SparkShell的使用,spark编程入门(wordcount案例)

    0.前言 0.1  分布式运算框架的核心思想(此处以MR运行在yarn上为例)  提交job时,resourcemanager(图中写成了master)会根据数据的量以及工作的复杂度,解析工作量,从而 ...

  7. Spark集群模式概述

    作者:foreyou出处:http://www.foreyou.net/2015/06/22/spark-cluster-mode-overview/声明:本文采用以下协议进行授权: 署名-非商用|C ...

  8. 向Spark集群提交任务

    1.启动spark集群. 启动Hadoop集群 cd /usr/local/hadoop/ sbin/start-all.sh 启动Spark的Master节点和所有slaves节点 cd /usr/ ...

  9. Spark集群的任务提交执行流程

    本文转自:https://www.linuxidc.com/Linux/2018-02/150886.htm 一.Spark on Standalone 1.spark集群启动后,Worker向Mas ...

随机推荐

  1. SpringBoot nohup启动

    #!/bin/sh nohup java -jar /data/wwwroot/xxx.jar > /data/wwwlogs/xxx.log >&

  2. CSS如何实现三列布局?如果两端固定、中间是自适应又该如何做?

    使用浮动布局来实现 左侧元素与右侧元素优先渲染,分别向左和向右浮动 中间元素在文档流的最后渲染,并将 width 设为 100%,则会自动压到左右两个浮动元素的下面,随后在中间元素中再添加一个div元 ...

  3. QQ企业通知识点---ClassSerializers

    Serializers  串列器 序列化器 串行器 MemoryStream   创建其支持存储区为内存的流. BinaryFormatter   以二进制格式将对象或整个连接对象图形序列化和反序列化 ...

  4. 夯实Java基础(十五)——Java中Comparable和Comparator

    1.前言 对于Java中的对象,我们只能使用基本运算符==.!=来判断一下地址是否相等,不能使用>.<来比较大小.但是在实际的开发中,我们需要对对象进行排序,也就是比较大小,那么应该如何实 ...

  5. 2_05_MSSQL课程_查询_where,group by,having的区别以及内连接、案例练习

    SQL查询顺序 select distinct/top ..._ (5) 投影 from_(1)找到表  where_ (2)过滤掉我们不需要的数据    group by_ (3)分组操作    h ...

  6. python爬虫入门之快递查询

    现在快递遍布生活的角角落落,一个快递其实是信息的集合体,里面包含大量的物流信息,那能不能自己实现一个快递查询的小功能?答案是能的!现在也有别人整理好的快递查询api,比如说快递100,可以通过它提供的 ...

  7. Memcached 最新版本发布,不再仅仅是个内存缓存了

    导读 Memcached 1.5.18和之后版本可以在服务重启时恢复内存缓存.新版本还通过DAX文件系统挂载来实现缓存持久性功能. 可以通过在启动选项使用该功能: -e /tmpfs_mount/me ...

  8. 一、iBatis进行分页查询

    1.ibatis理解: iBatis属于半自动化的ORM框架,我们需要编写SQL语句,由iBatis进行数据库访问,返回结果.而iBatis可以为我们做的更多,比如对查询参数集合.结果.分页查询.事务 ...

  9. 《跟老齐学Python:从入门到精通》齐伟(编著)epub+mobi+azw3

    内容简介 <跟老齐学Python:从入门到精通>是面向编程零基础读者的Python入门教程,内容涵盖了Python的基础知识和初步应用.以比较轻快的风格,向零基础的学习者介绍一门时下比较流 ...

  10. Android之系统自带的文字外观设置及实际显示效果图

     android:textAppearance xml布局里面设置文字的外观: 如“android:textAppearance=“?android:attr/textAppearanceLargeI ...