概念
Spark是一个大数据领域统一数据分析框架, 速度快,使用简单,通用性,可以运行任何地方。
架构
Apache Spark Core:
Spark Core提供了Spark最基础与核心的功能。
Spark SQL:
Spark SQL是Spark操作结构化数据的组件。通过Spark SQL,用户可以使用SQL或者Apache HiveSQL来查询数据。
Spark Streaming:
Spark Streaming是Spark平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据的API。
Spark MLlib:
Spark MLlib是Spark提供的一个机器学习算法库。MLlib不仅提供了模型评估,数据导入等额外的功能,还提供了一些更底层的机器学习源语。
Spark GraphX:
Spark GraphX是面向图计算的框架与算法库。
Spark的核心组件
Driver
Spark驱动节点,用于执行Spark任务中的main方法,负责实际代码的执行工作。 简单理解Driver就是驱使整个应用起来的程序。
1)将用户程序转换成作业(job)
2)在Executor之间调度任务(task)
3)跟踪Executor的执行情况
4)通过UI展示查询运行情况
Executor
Spark Executor是集群中工作节点(worker)中的一个JVM进程,负责Spark作业中运行具体任务(Task),任务彼此之间相互独立。Spark应用启动时,Executor节点被同时启动,并且始终伴随着整个Spark应用的生命周期而存在。如果Executor节点发生了故障或者崩溃,Spark应用也可以继续执行。它的核心功能是:
1)负责运行组成Spark应用的任务,并将结果返回给驱动器程序;
2)通过自身的块管理器(Block Manager),位应用程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在Executor进程中的。
Spark的运行模式
1)本地运行模式(Local)
不需要其它任何节点资源就可以在本地执行Spark代码的环境,一般用于教学,调试,演示等。和在IDEAIntellij Eclipse中开发代码是不一样的。
Spark还支持Windows系统下自动本地集群。
2)独立运行模式(Standalone)
独立运行模式指的是,只使用Spark自身节点运行的集群模式,即独立部署模式。
可以根据需要配置高可用(HA)。
3)Yarn运行模式(Yarn)
Spark主要是计算框架,不是资源调度框架。因此为了和其它系统更好的工作,可以配置yarn模式。
Spark应用程序提交到Yarn环境中执行的时候,一般有两种部署执行方式,client和cluster。两种模式的主要区别是Driver程序的运行节点的位置。
Client模式,是将监控和调度的Driver模块在客户端执行,一般用于测试。这种模式下Driver在任务提交的本地机器上执行。
Cluster模式,将Driver在yarn服务器上执行。
4)容器运行模式
容器化技术是目前业界流行的一项技术,基于Docker镜像运行能够让用户更加方便地对应用进行管理和运维。容器管理工具中最为流行的就是K8S。Spark最新版本支持K8S部署模式。
5)EC2运行模式
6)Mesos模式
Spark封装了三大数据结构
1)RDD(Resistant Distributed Data),弹性分布式数据集;
2)累加器,分布式共享只写变量;
3)广播变量,分布式共享只读变量。