spark原理

Posted hongfeng2019

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark原理相关的知识,希望对你有一定的参考价值。

原理:

RDD:
使用内存--基本处理单位RDD:弹性分布式数据集

spark处理的时候,处理的是RDD数据(相当于是将块数据加载到内存中)

类似: 

[1,2,3,4,5,...]        1个节点处理 [1,2]   1个节点处理[3,4,5] ......

 

stage:

一个 Job 会被分成一个或多个Stage, 类似airflow的DAG

技术图片

 

 

partition:

把RDD分成多个分区运行在分布式的节点上,一个分区对应一个task

 

相关概念:

技术图片

 

 

spark生态圈:

技术图片

 

 

? Spark Core:包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的  (就是上面的Apache Spark)
? Spark SQL:提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作。即用spark操作hive,和上面的用hive操作spark引擎正好相反。
? Spark Streaming:对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据。 在kafka的基础上进行一些算子运算。
? MLlib:一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。GraphX:控制图、并行图操作和计算的一组算法和工具的集合。
? GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作

 

集群组件说明:

Cluster Manager:集群管理器。在Standalone模式中即为Master主节点,控制整个集群,监控Worker。在YARN模式中为Resourcemanager
? Worker节点:从节点,负责控制计算节点,启动Executor或者Driver。在Standalone模式中指的是通过slave文件配置的Worker节点,在Spark on Yarn模式下就是NoteManager节点
? Driver:运行Application的主函数, java的入口函数main,如上面例子中的org.apache.spark.examples.JavaSparkPi
? Executor:执行器,是为某个Application运行在worker node上的一个进程。其进程名称为CoarseGrainedExecutorBackend。一个CoarseGrainedExecutorBackend有且仅有一个Executor对象, 负责将Task包装成taskRunner,并从线程池中抽取一个空闲线程运行Task, 这个每一个CoarseGrainedExecutorBackend能并行运行Task的数量取决于分配给它的cpu个数

 

三种模式对比:

技术图片

 

以上是关于spark原理的主要内容,如果未能解决你的问题,请参考以下文章

Spark核心技术原理透视一(Spark运行原理)

Spark核心原理之Executor原理

Spark之SortShuffle原理参考

Spark 以及 spark streaming 核心原理及实践

Spark的工作原理

[第二章] spark-yarn原理分析