博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark (一) 生态与架构
阅读量:7071 次
发布时间:2019-06-28

本文共 1649 字,大约阅读时间需要 5 分钟。

hot3.png

伯克利数据分析栈BDAS

 

Spark开发视图

deploy:含有Spark部署与启动运行的代码。

 

common:不是一个文件夹,而是代表Spark通用的类和逻辑实现,有5000行代码。

 

metrics:是运行时状态监控逻辑代码,Executor中含有Worker节点负责计算的逻辑代码。

 

partial:含有近似评估代码。

 

network:含有集群通信模块代码。

 

serializer:含有序列化模块的代码。

 

storage:含有存储模块的代码。

 

ui:含有监控界面的代码逻辑。其他的代码模块分别是对Spark生态系统中其他的实现。

 

streaming:是Spark Streaming的实现代码。

 

YARN:是Spark on YARN的部分实现代码。

 

graphx:含有GraphX实现代码。

 

interpreter:代码交互式Shell的代码量为3300行。

 

mllib:代表MLlib算法实现的代码量。

 

sql代表Spark SQL的代码量。

 

逻辑架构

ClusterManager:在Standalone模式中即为Master(主节点),控制整个集群,监控Worker。在YARN模式中为资源管理器。

 

Worker:从节点,负责控制计算节点,启动Executor或Driver。在YARN模式中为NodeManager,负责计算节点的控制。

 

Driver:运行Application的main()函数并创建SparkContext。

 

Executor:执行器,在worker node上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executors。

 

SparkContext:整个应用的上下文,控制应用的生命周期。

 

RDD:Spark的基本计算单元,一组RDD可形成执行的有向无环图RDD Graph。

 

DAG Scheduler:根据作业(Job)构建基于Stage的DAG,并提交Stage给TaskScheduler。

 

TaskScheduler:将任务(Task)分发给Executor执行。

 

SparkEnv:线程级别的上下文,存储运行时的重要组件的引用。

 

SparkEnv内创建并包含如下一些重要组件的引用。

 

MapOutPutTracker:负责Shuffle元信息的存储。

 

BroadcastManager:负责广播变量的控制与元信息的存储。

 

BlockManager:负责存储管理、创建和查找块。

 

MetricsSystem:监控运行时性能指标信息。

 

SparkConf:负责存储配置信息。

 

RDD的物理形式

Block-Manager管理RDD的物理分区,每个Block就是节点上对应的一个数据块,可以存储在内存或者磁盘。而RDD中的partition是一个逻辑数据块,对应相应的物理块Block。本质上一个RDD在代码中相当于是数据的一个元数据结构,存储着数据分区及其逻辑结构映射关系,存储着RDD之前的依赖转换关系。

物理上,RDD对象实质上是一个元数据结构,存储着Block、Node等的映射关系,以及其他的元数据信息。一个RDD就是一组分区,在物理数据存储上,RDD的每个分区对应的就是一个Block,Block可以存储在内存,当内存不够时可以存储到磁盘上。

每个Block中存储着RDD所有数据项的一个子集,暴露给用户的可以是一个Block的迭代器(例如,用户可以通过mapPartitions获得分区迭代器进行操作),也可以就是一个数据项(例如,通过map函数对每个数据项并行计算)

如果是从HDFS 等外部存储作为输入数据源,数据按照HDFS中的数据分布策略进行数据分区,HDFS中的一个Block对应Spark的一个分区。同时Spark支持重分区,数据通过Spark默认的或者用户自定义的分区器决定数据块分布在哪些节点

 

转载于:https://my.oschina.net/bigsloth/blog/754748

你可能感兴趣的文章
什么是RESTfull?理解RESTfull架构【转】
查看>>
linux lsof命令详解
查看>>
MySQL中concat函数
查看>>
代理模式
查看>>
Linux命令 cat命令
查看>>
poj1007 逆序数 排序
查看>>
周末轻松话卷积(上)
查看>>
【转】对C# 中堆栈,堆,值类型,引用类型的理解
查看>>
perl脚本调用
查看>>
gcc 0长数组学习
查看>>
经方时方接轨之――茵陈蒿汤合甘露饮
查看>>
MATLAB中取整函数(fix, floor, ceil, round)的使用
查看>>
10Mybatis_mybatis和hibernate本质区别和应用场景
查看>>
C语言 线性表 顺序表结构 实现
查看>>
SQLLoader7(只导入数据文件的其中几行记录)
查看>>
iOS编程修改系统音量
查看>>
当 iOS 游戏开发像做份沙拉那么简单
查看>>
HDOJ2028 ( Lowest Common Multiple Plus ) 【水题,lcm】
查看>>
css--水平居中,垂直居中,自适应宽度
查看>>
Google Map API V3 离线版
查看>>