Spark简介

来源:互联网 发布:机地手机维修淘宝 编辑:程序博客网 时间:2024/06/01 15:13

1.1 Spark简介与发展

   大部分企业习惯用Hadoop去分析数据集,选择Hadoop框架的原因是由于它的编程基于MapReduce编程模型,于此同时,它提供了一个scalable(扩展性)、flexible(兼容性) 、fault-tolerant(容错性) 、cost effective(经济有效)的计算解决方案。就查询和运行之间的等待时间而言,当前考虑的主要问题是去维护处理大数据集的速度。   Spark是由Apache软件基金会推出,Spark出现时为了提高Hadoop处理大数据的速度。但与传统概念相反的是,Spark不是Hadoop的改进版,它不依赖Hadoop,因为spark有自己的群管理器。Hadoop仅仅是Spark实现的一种方法。   Spark使用Hadoop有以下两种方式:存储(storage)和处理(processing)。由于Spark有自己的集群计算管理器,因此它用Hadoop的目的仅仅是为了存储。   Spark是一个轻量级的集群计算基数,设计它的目的是为了更快的计算。它基于Hadoop的MapReduce而且扩展了MapReduce的模型,为了将MapReduce更有效地用于多种类型的计算,其包括交互式查询和流处理。   Spark设计的目的是为了覆盖更大的工作负载范围,例如批处理应用程序、迭代算法、交互查询和流媒体。除了支持所在各自的系统中的工作负载,它还减轻了维护单独的工具的管理负担。   Spark是在2009年在加州大学伯克利分校的AMPLab由马太·扎哈里亚开发Hadoop子项目之一。2010年在BSD许可下,它是开源的。在2013年,它被捐赠给Apache Software Foundation,现在的Apache Spark已经成为一个顶级Apache项目。

1.2 Spark特点

● 处理速度
Spark有助于提高应用程序在Hadoop集群运行速度,在内存中的运行速度是之前的100倍,在硬盘上的运行速度是之前的10倍。通过减少对硬盘读写操作的次数,来提升处理速度。Spark把中间数据存储在内存中。
● 支持多种开发语言
Spark提供了Java、Scala、Python的API。因此,可以用不同的开发语言来开发应用程序。Spark为交互查询配备了80个high-level操作符。
● 超强的分析能力
Spark不但支持Map和Reduce,而且支持SQL查询、流数据、机器学习(ML)和图形算法。

1.3 Spark与Hadoop集成

下面流程图显示了Spark与Hadoop的三种集成方式:
Spark部署的三种方式详细介绍如下:

● 独立安装(standalone)
Spark独立部署意味着Spark占据HDFS的顶部(Hadoop分布式文件系统)与此同时为HDFS分配空间。在这里,Spark和MapReduce将并排运行来覆盖Spark集群中的所有工作。
● Spark与Hadoop资源管理器 (YARN)
Hadoop Yarn部署意味着,Spark仅仅运行在Yarn且不带任何pre-installation或者root权限请求。它有助于把Spark集成进Hadoop生态系统或Hadoop堆栈中。它运行其他组件在堆栈顶部运行。
● Spark与MapReduce
SIMR习惯用来启动单独部署的spark job。用SIMR,用户启动并使用spark的shell, 不需要任何管理员权限。
1.4 Spark组件
● Spark Core
Spark Core是Spark平台(包含所有其他功能函数)的底层一般执行引擎。它提供了 内存计算和外部存储系统引用的数据集。
● Spark SQL
Spark SQL是Spark Core顶部的一个组件,它引入了一种名为SchemaRDD新的 数据抽象,它提供了结构化和半结构化数据的支持。
● Spark Streaming
Spark Streaming利用Spark Core快速的调度能力来执行流的分析。它获取小批量数, 然后在这些小批量数据上进行RDD转换。
● MLlib (Machine Learning Library)
MLlib是Spark上的一个分布式的机器学习框架。Spark是基于内存的分布式架构。根据基准,它是由对交替最小二乘(ALS)实现的MLlib开发完成的。Spark MLlib 是Apache Mahout中的基于磁盘的Hadoop版本的9倍快。
● GraphX
GraphX是一个在Spark顶部的布式图形处理框架。它提供了用于描述图形计算的 API,它用Pregel 抽象的API建立用户定义的图形模型。为该抽象提供了一个优化 的运行时间。