Spark介绍

Spark是2009年诞生,2014年成为Apache项目,2016年发布了Spark2.0,2019年10月Spark3.0预览版,2020年6月18日Spark3.0正式版发布

Spark是一个大数据领域的统一分析引擎。

Spark使用Scala语言进行实现,它是一种面向函数式编程语言,能够像操作本地集合一样轻松的操作分布式数据集。

Spark具有运行速度快、易用性好、通用性强和随处运行的特点。

Spark运行模式

Spark应用程序可以运行在本地模式(Local Mode)、集群模式(Cluster Mode)和云服务(Cloud),方便开发测试和生产部署。

核心模块

SparkCore-Spark核心

SparkCore中提供了Spark最基础与最核心的功能,Spark其他功能如:Spark SQL,Spark Streaming, GraphX,MLlib都是在Spark Core的基础上进行扩展的

Spark SQL-SQL处理

Spark SQL是Spark用来操作结构化数据的组件。通过Spark SQL,用户可以使用SQL或者Apache Hive版本的SQL方言(HQL)来查询数据。

Spark Streaming-流式处理

Spark Streaming是Spark平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的API。

Spark MLlib-机器学习

MLlib是Spark提供的一个机器学习算法库。MLlib不仅提供了模型评估、数据导入等额外的功能,还提供了一些更底层的机器学习原语。

Spark GraphX-图计算

GraphX是Spark面向图计算提供的框架与算法库。

Spark3.0对比Spark2.x的优化

  1. 动态分区裁剪(Dynamic Partition Pruning)
  2. 自适应查询执行(Adaptive Query Execution)
  3. 加速度感知调度(Acclerator-aware Scheduling)
  4. 更好的API扩展(Better-API-Extensions-DataSourceV2)
  5. 更好的ANSI-SQL兼容(ANSI SQL Compatible)
  6. SparkR向量化读写(Vectorization)

Spark与Hadoop-MapReduce的对比

Hadoop-MapReduce Spark
数据结构 磁盘HDFS文件 内存构建弹性分布式数据集RDD对数据进行运算和cache
编程范式 Map+Reduce DAG:Transformation+Action
数据读写性能 计算中间结果落到磁盘,IO及序列化、反序列化代价大 计算中间结果在内存中,维护存取速度比磁盘高几个数量级
任务执行方式 Task以进程的方式维护,需要数秒时间才能启动任务 Task以线程的方式维护,对于小数据集读取能够达到亚秒级的延迟

注意:
1Spark不能完全替代Hadoop,Spark主要用于替代Hadoop中的MapReduce计算模型。存储依然可以使用HDFS,但是中间结果可以存放在内存中;调度可以使用Spark内置的,也可以使用Hadoop中的调度系统YARN
Hadoop可以使用廉价的、异构的机器来做分布式存储与计算,但是Spark对硬件的要求稍高一些,对内存与CPU有一定的要求。

你可能感兴趣的:(Spark介绍)