什么是 Spark
Spark 是一种基于内存的快速、通用、可扩展的大数据分析引擎
发展历史
- 2009年诞生,采用
Scala
编写 - 2010年开源
- 2013年6月成为 Apache 孵化项目
- 2014年2月成为 Apache 顶级项目
Spark特点
快
比 MapReduce 相比要快 百倍以上
,实现了 DAG执行引擎,通过内存高效处理数据流
易用
Spark 支持 Java、Python、Scala、R 等API,还支持超过80种
高级算法,使用户可以快速构建
不同的应用。还支持 Python 和 Scala 的交互式Shell
。
通用
Spark 提供了一套统一的解决方案。Spark 可以用于 批处理
、交互式查询(Spark SQL)
、实时处理(Spakr Streaming)
、机器学习(Spark MLlib)
、图计算(GraphX)
,这些不同类型
的处理都可以无缝使用
。
兼容性
Spark 可以十分方便
的与其他开源产品进行融合
,比如:可以使用 HAdoop 的 Yarn
和 Apache 的 Mesos
作为资源管理和调度器,并且可处理所有支持Hadoop的数据
,包括 HDFS 、HBase,这样可以使得已经使用过 Hadoop 集群的用户非常友好,不需要做任何的数据迁移就可以使用 Spark 强大的处理能力。
Spark 的内置模块
Spark Core:
实现了Spark的基本功能,包含任务调度
、内存管理
、错误恢复
、与存储系统
交互等模块。Spark Core中还包含了对弹性分布式数据集
(Resilient Distributed DataSet,简称RDD)的API定义。
Spark SQL:
是Spark用来操作结构化数据
的程序包。通过Spark SQL,我们可以使用SQL
或者Apache Hive
版本的SQL方言(HQL)来查询数据。Spark SQL支持多种数据源
,比如Hive表、Parquet以及JSON等。
Spark Streaming:
是Spark提供的对实时数据
进行流式计算
的组件。提供了用来操作数据流的API,并且与Spark Core中的 RDD API高度对应。
Spark MLlib:
提供常见的机器学习
(ML)功能的程序库。包括分类
、回归
、聚类
、协同过滤
等,还提供了模型评估、数据导入等额外的支持功能。
集群管理器:
Spark 设计为可以高效地在一个计算节点到数千个计算节点
之间伸缩计算。为了实现这样的要求,同时获得最大灵活性,Spark支持
在各种集群管理器
(Cluster Manager)上运行,包括Hadoop YARN
、Apache Mesos
,以及Spark自带
的一个简易调度器,叫作独立调度器
。