spark概述
什么是spark
大数据时代的计算引擎
在大数据时代中,程序需要处理的数据量可以多达TB
(1024GB
)甚至PB
维度(1024TB
),这么大的数据量使用单台服务器无法处理,一是单台服务器内存空间有限,二是单台服务器处理时间过长。所以需要将数据分布式的送入多台服务器处理,而如何管理多台服务器,如何拿到运算结果,就是大数据计算引擎需要处理的事情,Spark
就是一种大数据计算引擎。
Spark的历史
Spark
诞生于美国加州大学伯克利分校AMP
实验室,是一种类Hadoop
的计算引擎。不同的是,Hadoop
的中间运算结果需要存储HDFS
(一种文件系统中),因此有大量的磁盘IO
开销,会导致运算速度变慢。而Spark
会将中间结果存储于内存中。内存的存取速度是明显快于磁盘的。
Spark
目前时Apache
软件基金会旗下的项目,其官方地址是:Spark官网
Spark
本身是用Scala
进行开发的,这是一种面向对象的语言。我们在使用Spark
开发的时候,可以选择的语言是Java
、Python
和Scala
,一般推荐Scala
,开发效率和运行效率都比较高。
Spark的特点
-
运算速度比
Hadoop
快很多:得益于使用了DAG
(有向无环图)来控制运算流程,Spark
的运算速度比Hadoop
快很多。 -
使用简答,
Spark
提供了80
多种高阶操作,而且支持Python
、Java
、Scala
、R
和Shell
等多种编程语言。 -
提供了多种工具,
Spark
包含了Spark SQL
、Spark Streaming
、Maching Learning Library
、GraphX
等适用于不同领域的框架。
Spark的架构
知道Spark
是干什么的之后,我们还得知道它是如何实现这些功能的。
中间的Cluster Manager
是集群资源管理器,一般来说,运行Spark
程序需要多台服务器,它们被称为一个集群。集群计算管理器就是负责分配、调遣集群中的设备资源,包括内存、CPU
等。
Worker Node
是工作节点,可以简单的理解为一个服务器(当然实际情况比这个复杂),其中的Executor
负责程序的具体执行,Cache
是缓存,用于加快计算;Task
值具体的任务。
HDFS、HBase
是存储系统,HDFS
是分布式文件存储系统,HBase
是一种分布式的数据库。
Driver Program
是应用的任务控制节点,SparkContext
是运行过程中的上下文。