目录
什么是Spark?
Apache Spark是一种多语言引擎,用于单节点机器或集群上执行数据工程,数据科学和机器学习。
简单来说:spark是一种大数据计算框架,是一种基于内存快速处理计算大数据的引擎。支持多种语言的API接口,可以单节点和集群部署,其又提供了用于数据分析,机器学习的库。
Spark和Hadoop什么关系
Hadoop只是一套工具的总称,也可以说是一个大数据生态。它包含HDFS,YARN,MapReduce三部分,分别表示分布式文件存储系统(用于存储海量数据),资源调度(资源管理系统),计算(并行处理框架,实现任务分解和调度)。
早期的大数据处理方案:用YARN调度资源,读取HDFS内存储的文件内容进行MapReduce计算。(需要用java实现,比较麻烦)。
MapReduce简单来说就是分开处理再合并统计,需要频繁读写文件,导致运行速度很慢,这时基于内存的Spark出现了,它是Hadoop的替代品,目的就是为了提高运行速度。
Spark的优点
spark适合做什么?
Spark是数据计算处理的王者,支持PB级的处理,支持实时场景和离线场景。如:
- 日志文件,传感器数据的流处理。
- 机器学习。
- 数据分析师做交互式分析。
- 各系统间的数据集成和清洗。
Spark的核心模块
- Spark Core
提供了Spark最基础和最核心的功能,是其他功能拓展的基础。
- Spark SQL
可以使用SQL操作结构化数据的组件。
- Spark Streaming
Spark平台上针对实时数据进行流式计算的组件,提供了丰富的数据处理流的API。
- Spark MLlib
Spark提供的一个机器学习算法库,提供了模型评估,数据导入等额外的功能,还提供了一些更底层的机器学习原语,学起来较困难。
Spark GraphX
Spark面向图计算提供的框架与算法库。
Spark的系统架构
Spark架构采用了分布式计算中的Master-Slave模型。Master是对应集群中含有Master进程的节点(主节点),Slave是集群中含有Worker进程的节点。如图:
- Cluster Manager:在Standalone模式中即为Master(主节点),控制整个集群,监控Worker。在YARN模式中为资源管理器。
- Worker:从节点(子节点),负责控制计算节点,启动Executor或Driver。在YARN模式中为NodeManager,负责计算节点的控制。
- Driver:运行Appplication的main()函数并创建SparkContext.
- Executor:执行器,在worker node 上执行任务的组件,用于启动线程池运行任务。每个Application拥有独立的一组Executors.
- SparkContext:整个应用的上下文,控制应用的生命周期。