当需要处理的数据量超过了单机尺度(比如我们的计算机有4GB的内存,而我们需要处理100GB以上的数据)这时我们可以选择spark集群进行计算,有时我们可能需要处理的数据量并不大,但是计算很复杂,需要大量的时间,这时我们也可以选择利用spark集群强大的计算资源,并行化地计算

一、架构及生态

架构示意图如下:

  • Spark Core:实现了 Spark 的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。SparkCore 中还包含了对弹性分布式数据集(Resilient Distributed DataSet,简称RDD)的API定义。
  • Spark SQL:是 Spark 用来操作结构化数据的程序包。通过SparkSql,我们可以使用 SQL或者Apache Hive 版本的 SQL 方言(HQL)来查询数据。Spark SQL 支持多种数据源,比如 Hive 表、Parquet 以及 JSON 等。
  • Spark Streaming:是 Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数据流的 API,并且与 Spark Core 中的 RDD API 高度对应。
  • Spark MLlib:提供常见的机器学习 (ML) 功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。
  • GraphX:控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作。

Spark架构的组成图如下:

  • Cluster Manager:Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算,为了实现这样的要求,同时获得最大灵活性,Spark 支持在各种集群管理器(Cluster Manager)上运行,目前 Spark 支持 3 种集群管理器:

    1. Hadoop YARN(在国内使用最广泛)
    2. Apache Mesos(国内使用较少, 国外使用较多)
    3. Standalone(Spark 自带的资源调度器, 需要在集群中的每台节点上配置 Spark)
  • Worker节点:从节点,负责控制计算节点,启动Executor或者Driver。
  • Driver: 运行Application 的main()函数
  • Executor:执行器,是为某个Application运行在worker node上的一个进程

二、Spark运行架构

基本概念:RDD、DAG、Executor、Application、Task、Job、Stage

  • RDD:弹性分布式数据集的简称,是分布式内存的一个抽象概念 ,提供了一个高度共享的内存模型。

  • Worker Node:物理节点,上面执行executor进程

  • Executor:Worker Node为某应用启动的一个进程,执行多个tasks

  • Jobs:action 的触发会生成一个job, Job会提交给DAGScheduler,分解成Stage,

  • Stage:DAGScheduler 根据shuffle将job划分为不同的stage,同一个stage中包含多个task,这些tasks有相同的 shuffle dependencies。

​ 有两类shuffle map stage和result stage:
​ shuffle map stage:case its tasks’ results are input for other stage(s)
​ result stage:case its tasks directly compute a Spark action (e.g. count(), save(), etc) by running a function on an RDD,输入与结果间划分stage

  • Task:被送到executor上的工作单元,task简单的说就是在一个数据partition上的单个数据处理流程。

action触发一个job (task对应在一个partition上的数据处理流程)

------stage1(多个tasks 有相同的shuffle依赖)------【map–shuffle】------- stage2---- 【result–shuffle】-----

*、本文参考

深入浅出,一文让你了解什么是Spark
Spark中application、job、stage、tast之间的关系详解
spark原理:概念与架构、工作机制

Spark初识-Spark基本架构概览使用相关推荐

  1. Spark初识-Spark与Hadoop的比较

    Spark,是分布式计算平台,是一个用scala语言编写的计算框架,基于内存的快速.通用.可扩展的大数据分析引擎 Hadoop,是分布式管理.存储.计算的生态系统:包括HDFS(存储).MapRedu ...

  2. Spark设计理念与基本架构

    <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...

  3. Spark精华问答 | Spark和Hadoop的架构区别解读

    总的来说,Spark采用更先进的架构,使得灵活性.易用性.性能等方面都比Hadoop更有优势,有取代Hadoop的趋势,但其稳定性有待进一步提高.我总结,具体表现在如下几个方面. 1 Q:Spark和 ...

  4. Spark生态系统和运行架构

    Spark是一个可应用于大规模数据处理的快速.通用引擎,spark提供了内存计算和基于DAG的任务调度机制.Spark最大的特点就是将计算数据.中间结果都存储在内存中,因此更适合于迭代运算. 1.Sp ...

  5. Spark设计理念和基本架构

    Spark设计理念和基本架构 Spark是一个通用的并行计算框架,由加州伯克利大学(UC Berkeley) 的AMP实验室开发于2009年,并于2010年开源,2013年成长为Apache旗下在大数 ...

  6. Spark学习之Spark初识

    一.什么是Spark Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎.Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Had ...

  7. Spark大数据处理讲课笔记2.1 初识Spark

    文章目录 零.本节学习目标 一.Spark的概述 (一)Spark的组件 1.Spark Core 2.Spark SQL 3.Spark Streaming 4.MLlib 5.Graph X 6. ...

  8. spark笔记spark优化

    基本概念(Basic Concepts) RDD - resillient distributed dataset 弹性分布式数据集 Operation - 作用于RDD的各种操作分为transfor ...

  9. Spark之 spark简介、生态圈详解

    来源:http://www.cnblogs.com/shishanyuan/p/4700615.html 1.简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorith ...

最新文章

  1. [ 1001] 动态开辟二维数组的说明
  2. 老是说我编译版本不够_海思3518E编译环境搭建
  3. HTML5程序开发范例宝典 完整版 (韩旭等著) 中文pdf扫描版
  4. 简单封装kafka相关的api
  5. day31 java的多线程(1)
  6. mysql手动同步_MySql数据库主从手动同步
  7. VMware Horizon View 的内部版本号和版本 (2143853) -2020-10-27更新
  8. CROC-MBTU 2012, Elimination Round (ACM-ICPC) E. Mishap in Club
  9. java对象模型 指令_JVM-Java内存模型-20200217(示例代码)
  10. 2018-2019-1 20165208 《信息安全系统设计基础》第5周学习总结
  11. 使用了css3动画的元素z-index失效解决办法
  12. xsd文件生成class
  13. html微信分享图标设置,微信分享之设置分享title和icon
  14. vue 加载720全景图
  15. c语言引用性间接变量,c语言取地址和间接引用
  16. 个人提交专利,对说明书内容会进行查重吗
  17. 虚拟主机好还是云服务器,虚拟主机好还是云服务器
  18. 微信小程序使用crypto.js加密解密
  19. configure详解
  20. matlab与python区别_python和matlab的区别

热门文章

  1. printf 指针地址_指针搞都不懂,好意思说自己会C语言?
  2. python request url 转义_Python爬虫入门笔记
  3. java 如何循环执行一个对象_Java基础:如何定义好一个方法和进行方法重载
  4. C语言 十进制和二进制相互转换 - C语言零基础入门教程
  5. int类型数字特别大
  6. java local_java.time.LocalDateTime with()方法
  7. 换发型算法_GitHub - fredliu168/yry: yry(颜如玉)—— 一个实现人脸融合的算法,可以接近腾讯天天P图疯狂变脸功能的效果...
  8. Java HashMap与Hashtable数据结构和特点+HashSet简述
  9. ajax排行页面,ajax简单页面
  10. swagger-ui.html 404,解决访问swagger2报404问题