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. 病毒[POI2000](AC自动机+搜索)

    题目链接:病毒[POI2000] 我们假设已经有一个无限长的串满足要求,那如果我们拿它去匹配会发生什么? 它会一直在Trie树和fail树上转圈,一定经过根节点且不会经过病毒字符串结束的节点. 所以如 ...

  2. DeepLearning算法文章

    算法源码: learn_dl : https://github.com/hanbt/learn_dl rnn-from-scratch : https://github.com/pangolulu/r ...

  3. (4)LoraWAN:Physical Message Formats

    四.Physical Message Formats LoRa数据包结构 LoRaTM调制解调器采用隐式和显式两种数据包格式.其中,显式数据包的报头较短,主要 包含字节数.编码率及是否在数据包中使用循 ...

  4. Day10 - C - Blow up the city HDU - 6604

    Country A and B are at war. Country A needs to organize transport teams to deliver supplies toward s ...

  5. Unity 公告板 Billboard

    创建脚本如下 Billboard.cs using UnityEngine; using System.Collections; public class Billboard : MonoBehavi ...

  6. rapid-generator JAVA代码生成器

    有感于马上要做个比较大的业务系统,想到那无止境的增删改查.粘贴复制,顿时脑后升起一阵凉风.于是想到个找或者写一个Java代码的生成器,这样在正常开发进度下,也能余下更多的时间去做些别的事情. 闲话少说 ...

  7. 【转】深入分析JAVA IO(BIO、NIO、AIO)

    IO的基本常识 1.同步 用户进程触发IO操作并等待或者轮询的去查看IO操作是否完成 2.异步 用户触发IO操作以后,可以干别的事,IO操作完成以后再通知当前线程继续处理 3.阻塞 当一个线程调用 r ...

  8. 配置antMatchers(HttpMethod.GET,"/**").permitAll()当时仍然会校验

    .antMatchers(HttpMethod.GET,"/**").permitAll() .anyRequest().authenticated() .and() .addFi ...

  9. 本地连接 HDFS 报错 Exception in thread "main" org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=JM.H,access=WRITE, inode="":r

    此时 到hdfs机器下修改hdfs-site.xml即可 添加如下配置 <property> <name>dfs.permissions</name> <va ...

  10. 学习Linux系统永远都不晚

    作为一名机械专业毕业的学生,两年的工作经历实实在在地教会了我如何认清现实,让当初那个对机械行业无比憧憬的少年明白了自己选择的路有多艰难.由于我的父母都是工人,所以我比其他同龄人能更早地接触到工业的魅力 ...