热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Spark运行时环境

Spark运行原理Spark运行原理构建应用程序运行时首先根据应用程序资源需求构建一个运行时环境,通过与资源管理器交互来完成,通常存在两种方式:粗粒度,应用程序在提交之后,正式运行

Spark运行原理

《Spark 运行时环境》 Spark运行原理

构建应用程序运行时

首先根据应用程序资源需求构建一个运行时环境,通过与资源管理器交互来完成,通常存在两种方式:
粗粒度,应用程序在提交之后,正式运行之前根据程序资源需求一次性获取资源,整个运行过程不再申请新的资源
细粒度,应用程序在提交之后,动态向集群申请资源,只要等资源满足一个任务的运行就开始执行,基于Hadoop的MR就是基于细粒度运行时构建

对于Spark on YARN,目前支持粗力度

应用程序转换成DAG

根据宽依赖和窄依赖拆分Stage,将应用程序转换成DAG

首先,从数据混洗的角度,窄依赖RDD可以通过相同键进行联合分区,整个操作可以在同一个节点上流水线式运行,不会造成网络间数据传输
其次,从失败恢复的角度,窄依赖的失败只需要重新计算丢失的RDD的父分区,并且可以在不同节点并行计算。宽依赖会设计多个父RDD分区的重新计算

首先将DAG划分成一个完整的Stage,从最后一个RDD往前回溯,不断判断RDD的依赖关系,如果是窄依赖则继续回溯,宽依赖则划分出一个新的Stage

调度执行DAG

DAGScheduler按照依赖关系调度执行每个Stage,优先选择不依赖任何阶段的Stage。执行Stage阶段启动一定数目的Task并行执行

Spark的优化机制(借鉴MapReduce)
数据本地性,对任务进行调度时,为算子选择节点,优先选择数据所在节点,其次选择数据所在机架节点,最后选择其他机架节点。
推测执行,检查到同类任务存在明显比较慢的任务时,尝试为慢任务启动备份任务,先完成的结果作为最终结果。
多线程执行具体的任务,减少多进程任务的启动开销
Executor上有一个BlockManager存储模块,当需要多轮迭代时,将中间过程的数据进行存储,后续需要时直接读取存储数据。


推荐阅读
  • Kylin 单节点安装
    软件环境Hadoop:2.7,3.1(sincev2.5)Hive:0.13-1.2.1HBase:1.1,2.0(sincev2.5)Spark(optional)2.3.0K ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • MapReduce 切片机制源码分析
     总体来说大概有以下2个大的步骤1.连接集群(yarnrunner或者是localjobrunner)2.submitter.submitJobInternal()在该方法中会创建 ... [详细]
  • Hadoop之Yarn
    目录1Hadoop1.x和Hadoop2.x架构区别2Yarn概述3Yarn基本架构4Yarn工作机制5作业提交全过程6资源调度器7任务的推测执行1Hadoop1.x和Hadoo ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • Maven构建Hadoop,
    Maven构建Hadoop工程阅读目录序Maven安装构建示例下载系列索引 序  上一篇,我们编写了第一个MapReduce,并且成功的运行了Job,Hadoop1.x是通过ant ... [详细]
  • MR程序的几种提交运行模式本地模型运行1在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行-- ... [详细]
  • 《Spark核心技术与高级应用》——1.2节Spark的重要扩展
    本节书摘来自华章社区《Spark核心技术与高级应用》一书中的第1章,第1.2节Spark的重要扩展,作者于俊向海代其锋马海平,更多章节内容可以访问云栖社区“华章社区”公众号查看1. ... [详细]
  • 前言折腾了一段时间hadoop的部署管理,写下此系列博客记录一下。为了避免各位做部署这种重复性的劳动,我已经把部署的步骤写成脚本,各位只需要按着本文把脚本执行完,整个环境基本就部署 ... [详细]
  • MapReduce工作流程最详细解释
    MapReduce是我们再进行离线大数据处理的时候经常要使用的计算模型,MapReduce的计算过程被封装的很好,我们只用使用Map和Reduce函数,所以对其整体的计算过程不是太 ... [详细]
  • Azkaban(三)Azkaban的使用
    界面介绍首页有四个菜单projects:最重要的部分,创建一个工程,所有flows将在工程中运行。scheduling:显示定时任务executing:显示当前运行的任务histo ... [详细]
  • Java开发实战讲解!字节跳动三场技术面+HR面
    二、回顾整理阿里面试题基本就这样了,还有一些零星的问题想不起来了,答案也整理出来了。自我介绍JVM如何加载一个类的过程,双亲委派模型中有 ... [详细]
  • bat大牛带你深度剖析android 十大开源框架_请收好!5大领域,21个必知的机器学习开源工具...
    全文共3744字,预计学习时长7分钟本文将介绍21个你可能没使用过的机器学习开源工具。每个开源工具都为数据科学家处理数据库提供了不同角度。本文将重点介绍五种机器学习的 ... [详细]
  • SparkOnYarn在YARN上启动Spark应用有两种模式。在cluster模式下,Spark驱动器(driver)在YARNApp ... [详细]
author-avatar
吴款爷
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有