Spark简介

1.   什么是Spark

提到大数据首先会想到开源项目Hadoop,Hadoop解决了大多数批处理工作负载问题。但是存在一些限制:

比如:

  • 缺少对迭代的支持
  • 中间数据需要输出到硬盘存储,产生了较高的延迟。

总结:MapReduce比较适合处理离线数据,在实时查询和迭代计算上存在较大的不足,而随着业务的发展,对实时查询和迭代计算有更多的需求。

 

什么是Spark?

Apache顶级的开源项目,是一个快速通用的大规模数据处理引擎,和Hadoop的MapReduce计算框架类似,但是相对于MapReduce,Spark凭借其可伸缩,基于内存计算等特点,以及可以直接读写Hadoop上任何格式数据的优势,进行批处理时更加高效,更低的延时。

 

 

 

1.1  概述

随 着 互 联 网 的 高 速 发 展, 以 大 数 据 为 核 心 的 计 算 框 架 不 断 出 现, 从 支 持 离 线 的
MapReduce 席卷全球,到支持在线处理的 Storm 异军突起,支持迭代计算的 Spark 攻城拔
寨,支持高性能数据挖掘的 MPI 深耕细作。

各个框架各有优缺点,根据不同业务,同时被使用。比如:

模型训练和数据处理——————>MapReduce

实时性要求aging的线上业务————>Storm

日志处理及个性化推荐———————>Spark

 

 

 

1.2   Spark大数据处理框架

 

apache spark 开发 apache spark使用场景_apache spark 开发

 

  • 最底层:分布式存储系统
  • 资源管理:Mesos,YARN等集群资源管理模式 或 Spark自带的独立运行模式 以及本地运行模式。
  • Spark:为上层多种应用提供服务。

                     如:Spark SQL:提供SQL查询服务,性能比Hive快3-50倍。

                            MLlib:提供机器学习服务

                            GraphX:提供图计算服务

                            Spark Streaming将流式计算分解为一系列短小的批处理计算,并且提高可靠和吞吐量服务。

 

其中,基于Hadoop的资源管理器YARN实际上是一个弹性计算平台,作为统一的计算资源管理框架,不仅仅服务于MapReduce计算框架,而且已经实现了多种计算框架进行统一管理。这种共享集群资源的模式带来了很多好处。

  • 资源利用率高

多种框架共享资源的模式有效解决了由于应用程序数量的不均衡性导

致的高峰时段任务比较拥挤,空闲时段任务比较空闲的问题;同时均衡了内存和 CPU

等资源的利用。

  • 实现了数据共享

随着数据量的增加,数据移动成本越来越高,网络带宽、磁盘空

间、磁盘 IO 都会成为瓶颈,在分散数据的情况下,会造成任务执行的成本提高,获

得结果的周期变长,而数据共享模式可以让多种框架共享数据和硬件资源,大幅度减

少数据分散带来的成本。

  • 有效降低运维和管理成本

相比较一种计算框架需要一批维护人员,而运维人员较多

又会带来的管理成本的上升;共享模式只需要少数的运维人员和管理人员即可完成多

个框架的统一运维管理,便于运维优化和运维管理策略统一执行。

 

 

总之, Spark 凭借其良好的伸缩性、快速的在线处理速度、具有 Hadoop 基因等一系列优

势,迅速成为大数据处理领域的佼佼者。 Apache Spark 已经成为整合以下大数据应用的标准

平台:

  • 交互式查询,包括 SQL;
  • 实时流处理;
  • 复杂的分析,包括机器学习、图计算;
  • 批处理

1.3  Spark的特点

  • 快速。 Spark 有先进的 DAG 执行引擎,支持循环数据流和内存计算; Spark 程序在

内存中的运行速度是 Hadoop MapReduce 运行速度的 100 倍,在磁盘上的运行速度是

Hadoop MapReduce 运行速度的 10 倍,如图 1-2 所示。

  • 易用。 Spark 支持使用 Java、 Scala、 Python 语言快速编写应用,提供超过 80 个高级

运算符,使得编写并行应用程序变得容易。

  • 通用。 Spark 可以与 SQL、 Streaming 以及复杂的分析良好结合。基于 Spark,有一系

列高级工具,包括 Spark SQL、 MLlib(机器学习库)、 GraphX 和 Spark Streaming,支

持在一个应用中同时使用这些架构,如图 1-3 所示。

  • 有效集成 Hadoop。 Spark 可以指定 Hadoop, YARN 的版本来编译出合适的发行版

本, Spark 也能够很容易地运行在 EC2、 Mesos 上,或以 Standalone 模式运行,并从

HDFS、 HBase、 Cassandra 和其他 Hadoop 数据源读取数据。

apache spark 开发 apache spark使用场景_Hadoop_02

 

 

apache spark 开发 apache spark使用场景_mapreduce_03

 

1.4 Spark应用场景

Spark 使用了内存分布式数据集,除了能够提供交互式查询外,还优化了迭代工作负载,

在 Spark SQL、 Spark Streaming、 MLlib、 GraphX 都有自己的子项目。在互联网领域, Spark

在快速查询、实时日志采集处理、业务推荐、定制广告、用户图计算等方面都有相应的应

用。国内的一些大公司,比如阿里巴巴、腾讯、 Intel、网易、科大讯飞、百分点科技等都有

实际业务运行在 Spark 平台上。下面简要说明 Spark 在各个领域中的用途。

 

  • 快速查询系统,基于日志数据的快速查询系统业务构建于 Spark 之上,利用其快速查

询以及内存表等优势,能够承担大部分日志数据的即时查询工作;在性能方面,普遍

比 Hive 快 2 ~ 10 倍,如果使用内存表的功能,性能将会比 Hive 快百倍。

  • 实时日志采集处理,通过 Spark Streaming 实时进行业务日志采集,快速迭代处理,

并进行综合分析,能够满足线上系统分析要求。

  • 业务推荐系统,使用 Spark 将业务推荐系统的小时和天级别的模型训练转变为分钟级

别的模型训练,有效优化相关排名、个性化推荐以及热点点击分析等。

  • 定制广告系统,在定制广告业务方面需要大数据做应用分析、效果分析、定向优化

等,借助 Spark 快速迭代的优势,实现了在“数据实时采集、算法实时训练、系统实

时预测”的全流程实时并行高维算法,支持上亿的请求量处理;模拟广告投放计算效

率高、延迟小,同 MapReduce 相比延迟至少降低一个数量级。

  • 用户图计算。利用 GraphX 解决了许多生产问题,包括以下计算场景:基于度分布的

中枢节点发现、基于最大连通图的社区发现、基于三角形计数的关系衡量、基于随机

游走的用户属性传播等。