Spark初识-Spark基本架构概览使用
当需要处理的数据量超过了单机尺度(比如我们的计算机有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 种集群管理器:
- Hadoop YARN(在国内使用最广泛)
- Apache Mesos(国内使用较少, 国外使用较多)
- 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基本架构概览使用相关推荐
- Spark初识-Spark与Hadoop的比较
Spark,是分布式计算平台,是一个用scala语言编写的计算框架,基于内存的快速.通用.可扩展的大数据分析引擎 Hadoop,是分布式管理.存储.计算的生态系统:包括HDFS(存储).MapRedu ...
- Spark设计理念与基本架构
<深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...
- Spark精华问答 | Spark和Hadoop的架构区别解读
总的来说,Spark采用更先进的架构,使得灵活性.易用性.性能等方面都比Hadoop更有优势,有取代Hadoop的趋势,但其稳定性有待进一步提高.我总结,具体表现在如下几个方面. 1 Q:Spark和 ...
- Spark生态系统和运行架构
Spark是一个可应用于大规模数据处理的快速.通用引擎,spark提供了内存计算和基于DAG的任务调度机制.Spark最大的特点就是将计算数据.中间结果都存储在内存中,因此更适合于迭代运算. 1.Sp ...
- Spark设计理念和基本架构
Spark设计理念和基本架构 Spark是一个通用的并行计算框架,由加州伯克利大学(UC Berkeley) 的AMP实验室开发于2009年,并于2010年开源,2013年成长为Apache旗下在大数 ...
- Spark学习之Spark初识
一.什么是Spark Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎.Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Had ...
- Spark大数据处理讲课笔记2.1 初识Spark
文章目录 零.本节学习目标 一.Spark的概述 (一)Spark的组件 1.Spark Core 2.Spark SQL 3.Spark Streaming 4.MLlib 5.Graph X 6. ...
- spark笔记spark优化
基本概念(Basic Concepts) RDD - resillient distributed dataset 弹性分布式数据集 Operation - 作用于RDD的各种操作分为transfor ...
- Spark之 spark简介、生态圈详解
来源:http://www.cnblogs.com/shishanyuan/p/4700615.html 1.简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorith ...
最新文章
- [ 1001] 动态开辟二维数组的说明
- 老是说我编译版本不够_海思3518E编译环境搭建
- HTML5程序开发范例宝典 完整版 (韩旭等著) 中文pdf扫描版
- 简单封装kafka相关的api
- day31 java的多线程(1)
- mysql手动同步_MySql数据库主从手动同步
- VMware Horizon View 的内部版本号和版本 (2143853) -2020-10-27更新
- CROC-MBTU 2012, Elimination Round (ACM-ICPC) E. Mishap in Club
- java对象模型 指令_JVM-Java内存模型-20200217(示例代码)
- 2018-2019-1 20165208 《信息安全系统设计基础》第5周学习总结
- 使用了css3动画的元素z-index失效解决办法
- xsd文件生成class
- html微信分享图标设置,微信分享之设置分享title和icon
- vue 加载720全景图
- c语言引用性间接变量,c语言取地址和间接引用
- 个人提交专利,对说明书内容会进行查重吗
- 虚拟主机好还是云服务器,虚拟主机好还是云服务器
- 微信小程序使用crypto.js加密解密
- configure详解
- matlab与python区别_python和matlab的区别
热门文章
- printf 指针地址_指针搞都不懂,好意思说自己会C语言?
- python request url 转义_Python爬虫入门笔记
- java 如何循环执行一个对象_Java基础:如何定义好一个方法和进行方法重载
- C语言 十进制和二进制相互转换 - C语言零基础入门教程
- int类型数字特别大
- java local_java.time.LocalDateTime with()方法
- 换发型算法_GitHub - fredliu168/yry: yry(颜如玉)—— 一个实现人脸融合的算法,可以接近腾讯天天P图疯狂变脸功能的效果...
- Java HashMap与Hashtable数据结构和特点+HashSet简述
- ajax排行页面,ajax简单页面
- swagger-ui.html 404,解决访问swagger2报404问题