原文:https://www.cnblogs.com/miqi1992/p/5621268.html

前言

本章将对Spark做一个简单的介绍,更多教程请参考:Spark教程

本章知识点概括

  • Apache Spark简介
  • Spark的四种运行模式
  • Spark基于Standlone的运行流程
  • Spark基于YARN的运行流程

Apache Spark是什么?

Spark是一个用来实现快速而通用的集群计算的平台。扩展了广泛使用的MapReduce计算模型,而且高效地支持更多的计算模式,包括交互式查询和流处理。在处理大规模数据集的时候,速度是非常重要的。Spark的一个重要特点就是能够在内存中计算,因而更快。即使在磁盘上进行的复杂计算,Spark依然比MapReduce更加高效。

Spark重要概念

(1)Spark运行模式

目前Spark的运行模式主要有以下几种:

  • local:主要用于开发调试Spark应用程序
  • Standlone:利用Spark自带的资源管理与调度器运行Spark集群,采用Master/Slave结构,为解决单点故障,可以采用Xookeeper实现高可靠(High Availability, HA)
  • Apache Mesos:运行在著名的Mesos资源管理框架基础之上,该集群运行模式将资源管理管理交给Mesos,Spark只负责运行任务调度和计算
  • Hadoop YARN:集群运行在Yarn资源管理器上,资源管理交给YARN,Spark只负责进行任务调度和计算
    Spark运行模式中Hadoop YARN的集群方式最为常用,前面一章关于Spark集群搭建就是采用的YARN模式。

    (2)Spark组件(Components)

    一个完整的Spark应用程序,如前面一章当中的SparkWorkdCount程序,在提交集群运行时,它涉及到如下图所示的组件:

每个Spark应用都由一个驱动器程序(drive program)来发起集群上的各种并行操作。驱动器程序包含应用的main函数,驱动器负责创建SparkContext,SparkContext可以与不同种类的集群资源管理器(Cluster Manager),例如Hadoop YARN,Mesos进行通信,获取到集群进行所需的资源后,SparkContext将
得到集群中工作节点(Worker Node)上对应的Executor(不同的Spark程序有不同的Executor,他们之间是相互独立的进程,Executor为应用程序提供分布式计算以及数据存储功能),之后SparkContext将应用程序代码发送到各Executor,最后将任务(Task)分配给executors执行

  • ClusterManager:在Standalone模式中即为Master节点(主节点),控制整个集群,监控Worker.在YARN中为ResourceManager
  • Worker:从节点,负责控制计算节点,启动Executor或Driver。在YARN模式中为NodeManager,负责计算节点的控制。
  • Driver:运行Application的main()函数并创建SparkContect。
  • Executor:执行器,在worker node上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executor。
  • SparkContext:整个应用的上下文,控制应用的生命周期。
  • RDD:Spark的计算单元,一组RDD可形成执行的有向无环图RDD Graph。
  • DAG Scheduler:根据作业(Job)构建基于Stage的DAG,并提交Stage给TaskScheduler。
  • TaskScheduler:将任务(Task)分发给Executor。
  • SparkEnv:线程级别的上下文,存储运行时的重要组件的引用。
    SparkEnv内构建并包含如下一些重要组件的引用。

    1、MapOutPutTracker:负责Shuffle元信息的存储。
    2、BroadcastManager:负责广播变量的控制与元信息的存储。
    3、BlockManager:负责存储管理、创建和查找快。
    4、MetricsSystem:监控运行时性能指标信息。
    5、SparkConf:负责存储配置信息。

Spark的整体流程

1、Client提交应用。
2、Master找到一个Worker启动Driver
3、Driver向Master或者资源管理器申请资源,之后将应用转化为RDD Graph
4、再由DAGSchedule将RDD Graph转化为Stage的有向无环图提交给TaskSchedule。
5、再由TaskSchedule提交任务给Executor执行。
6、其它组件协同工作,确保整个应用顺利执行。

图片:

Spark on Yarn流程:

1、基于YARN的Spark作业首先由客户端生成作业信息,提交给ResourceManager。
2、ResourceManager在某一NodeManager汇报时把AppMaster分配给NodeManager。
3、NodeManager启动SparkAppMaster。
4、SparkAppMastere启动后初始化然后向ResourceManager申请资源。
5、申请到资源后,SparkAppMaster通过RPC让NodeManager启动相应的SparkExecutor。
6、SparkExecutor向SparkAppMaster汇报并完成相应的任务。
7、SparkClient会通过AppMaster获取作业运行状态。

参考文档

问题

  • 针对SparkContext和Drive program还没有解释清楚
  • 关于Driver向Master请求资源这一块还没搞懂
  • 关于Spark的整体流程图还是不太准确,以后找到好的再补上

转载:Spark中文指南(入门篇)-Spark编程模型(一)的更多相关文章

  1. Spark中文指南(入门篇)-Spark编程模型(一)

    前言 本章将对Spark做一个简单的介绍,更多教程请参考:Spark教程 本章知识点概括 Apache Spark简介 Spark的四种运行模式 Spark基于Standlone的运行流程 Spark ...

  2. Spark性能优化指南-高级篇(spark shuffle)

    Spark性能优化指南-高级篇(spark shuffle) 非常好的讲解

  3. Java工程师学习指南 入门篇

    Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...

  4. Spark下载与入门(Spark自学二)

    2.1 下载Spark 略 2.2 Spark中Python和Scala的shell Spark shell可用来与分布式存储在许多机器的内存或者硬盘上的数据进行交互,并且处理过程的分发由Spark自 ...

  5. Spark性能优化指南——基础篇

    本文转自:http://tech.meituan.com/spark-tuning-basic.html 感谢原作者 前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一 ...

  6. Java工程师学习指南(入门篇)

    Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...

  7. Spark开发指南

    原文链接http://www.sxt.cn/info-2730-u-756.html 目录 Spark开发指南 简介 接入Spark Java 初始化Spark Java 弹性分布式数据集 并行集合 ...

  8. Spark性能优化指南——基础篇(转载)

    前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作 ...

  9. 【转载】 Spark性能优化指南——基础篇

    转自:http://tech.meituan.com/spark-tuning-basic.html?from=timeline 前言 开发调优 调优概述 原则一:避免创建重复的RDD 原则二:尽可能 ...

随机推荐

  1. dt7.0自定义推送熊掌号功能插件

    因要推送较早的数据,所以写了一个自定义推送熊掌号的功能插件,因我自己站点是新站,推送的数据较少,所以程序比较简单,算是初始版本,凑合着用吧. <?php /* 百度当天主动推送熊掌功能 作者:6 ...

  2. 007——转载-MATLAB读取文件夹下的文件名

    (一)参考文献:https://blog.csdn.net/liutaojia/article/details/84899923 (二)第一步:获取文件夹下某类型数据的所有文件名 主要包括三个步骤: ...

  3. simcom7600ce-t LBS function

    Welcome to minicom 2.7 OPTIONS: I18n Compiled on Nov 15 2018, 20:20:38.Port /dev/ttyUSB2, 00:55:23 P ...

  4. [English] - 单词阶段1

    百词斩这个app很好玩,尤其是在记忆单词的时候,效果显著. 有的PK赛场也是比较谁的单词翻译提交的快,这个我曾经连胜好几次.

  5. P1928 外星密码

    题目描述 有了防护伞,并不能完全避免 2012 的灾难.地球防卫小队决定去求助外星种族的帮 助.经过很长时间的努力,小队终于收到了外星生命的回信.但是外星人发过来的却是一 串密码.只有解开密码,才能知 ...

  6. 从ServerSwitch到SONiC Chassis:数据中心交换机技术的十年探索历程

    从ServerSwitch到SONiC Chassis:数据中心交换机技术的十年探索历程 2019-07-09 | 作者:白巍   编者按:微软交换机操作系统开源项目SONiC (Software f ...

  7. 从零开始实现SSD目标检测(pytorch)(一)

    目录 从零开始实现SSD目标检测(pytorch) 第一章 相关概念概述 1.1 检测框表示 1.2 交并比 第二章 基础网络 2.1 基础网络 2.2 附加网络 第三章 先验框设计 3.1 引言 3 ...

  8. Luogu5540 最小乘积生成树

    Luogu5540 最小乘积生成树 题目链接:洛谷 题目描述:对于一个\(n\)个点\(m\)条边的无向连通图,每条边有两个边权\(a_i,b_i\),求使\((\sum a_i)\times (\s ...

  9. 宏任务、微任务与Event Loop

    说到宏任务和微任务,我们就不得不提 Event Loop 了 JS的本质是单线: 1. 一般来说,非阻塞性的任务采取同步的方式,直接在主线程的执行栈完成. 2. 一般来说,阻塞性的任务都会采用异步来执 ...

  10. linux下redis的安装、启动、关闭和卸载

    edis 在Linux 和 在Windows 下的安装是有很大的不同的,和通常的软件安装是一样的. 一  下载 Redis 安装包 去redis 官网下载reids 安装包, redis 官网默认只提 ...