Spark核⼼技术基础系列学习笔记——Spark简介,特点及其应
⽤场景
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⼤数据处理框架
最底层:分布式存储系统
资源管理:Mesos,YARN等集资源管理模式 或 Spark⾃带的独⽴运⾏模式 以及本地运⾏模式。
Spark:为上层多种应⽤提供服务。
如:Spark SQL:提供SQL查询服务,性能⽐Hive-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 数据源读取数据。
开源项目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 解决了许多⽣产问题,包括以下计算场景:基于度分布的
中枢节点发现、基于最⼤连通图的社区发现、基于三⾓形计数的关系衡量、基于随机
游⾛的⽤户属性传播等。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论