收藏 分销(赏)

为什么Spark能成为最火的大数据计算引擎.docx

上传人:二*** 文档编号:4565725 上传时间:2024-09-30 格式:DOCX 页数:8 大小:462.94KB
下载 相关 举报
为什么Spark能成为最火的大数据计算引擎.docx_第1页
第1页 / 共8页
本文档共8页,全文阅读请下载到手机保存,查看更方便
资源描述
为什么Spark能成为最火的大数据计算引擎?它是怎 样工作的? 导读:零基础入门Spark必读。 ^hadoopVS. APACHSSporK 01概述十年前我们只有Hadoop ,大家首先通过HDFS实现海量数据的共享存储,然后使用 MapReduce以批处理的方式处理这些海量数据,这一切看起来似乎十分完美。 但众口难调啊,有人觉得M叩Reduce的编程模型太难使用了,为什么不能使用SQL 来分析数据呢?我们数据库领域已经有非常成熟的数据仓库模型了,为何不实现一个大 数据技术的数据仓库呢?于是Hive类的框架便诞生了,人们开始使用Hive类的框架 来构建大数据技术的数据仓库,使用SQL查询数据。 接着人们又开始诟病MapReduce的执行效率太慢,因为它本质上是面向批处理场景的, 难以支撑一些实时性要求很高的场景,我们需要一种能够支撑流计算的架构,于是 Storm类的框架诞生了。人们开始使用Storm这类框架处理流计算场景。 接着伴随垃圾邮件分析、商品推荐、金融风控这类应用场景需求的出现,又迫使我们需 要在大数据场景下具备机器学习的能力,于是乎Mahout类的框架出现了,人们使用 它们来进行大数据下的机器学习。 随着越来越多来自应用领域的细分需求,人们从最初Hadoop的HDFS和M叩Reduce 开始,一步步地构造出了各种细分领域的技术框架。有专攻处理批处理场景的,有专攻 数据仓库场景的,有处理流计算场景的,也有专职机器学习的。 在我看来这有点像在给Hadoop打补丁,因为Hadoop在设计之初根本没有考虑过这 么多的场景,它只是为了支撑离线批处理。但是需求摆在这里,为了实现目标只得另起 炉灶通过设计一个全新的系统满足需求。这种现状造成了很多问题。 重复工作:不同的系统之间都需要解决一些相同的共性问题,比方分布式执行 和容错性。例如M叩Reduce、SQL查询引擎和机器学习系统都会涉及聚合操作。 组合:不同系统之间的组合使用非常"昂贵",因为不同系统之间无法有效的 功效数。为了组合使用我们需要将数据在不同的系统之间频繁的导出导入,数据用来移 动的时间可能都会超过计算的时间。 维护本钱:虽然这些系统从每个个体的角度来看都十分优秀,但是它们都是在 不同时期由不同的团队设计实现的,其设计思路和实现方式也各不相同。这导致平台在 部署运维这些系统的时候十分痛苦,因为它们差异太大了。 学习本钱:系统之间巨大的差异性对于开发人员来讲更是如此,这些技术框架 拥有不同的逻辑对象、专业术语、API和编程模型,每种框架都需要重新学习一遍才能 使用。 Spark意识到了这个问题,作为一个后起之秀它拥有天然的优势。Spark诞生于2012 年,那个时候Hadoop生态已经经过了 6个年头的开展,其生态格局已经成型。Spark 已经能够看清大数据有哪些细分领域,同时MapReduce、Hive、Storm等开源组件也 已经开展多年,Spark也能够了解到它们的长处和缺乏。 于是Spark横空出世,成为目前开源社区最为火爆的一款分布式内存计算引擎。Spark 使用DAG (有向无环图)模型作为其执行模型,并且主要使用内存计算的方式进行任 务计算。 Spark基于一套统一的数据模型(RDD )和编程模型(Trans-foration/Action )之上, 构建出了 Spark SQL、Spark Streaming. Spark MLibs等多个分支,其功能涵盖了大 数据的多个领域,如图1所示。 Spark SQL .『.. MLlib . GraphX.Streaming .. Apache Spark▲图1 Spark涵盖的领域 Spark通过统一的数据模型和编程模型,构造出了 SQL查询、流计算、机器学习和图 计算等多个分支库。 02数据模型RDD是弹性分布式数据第Resilient Distributed Datasets力勺缩写,它是MapReduce 模型的扩展和延伸。Spark之所以能够同时支撑大数据的多个领域,在很大程度上是依 靠了 RDD的能力。 虽然批处理、流计算、图计算和机器学习这些计算场景之间初看起来风马牛不相及,但 是它们都存在一个共同的需求,那就是在并行计算阶段能够高效的共享数据。 RDD的设计者们洞穿了这一现象,于是通过高效的数据共享概念和类似MapReduce 的操作设计了 RDD ,使得它能模拟迭代式算法、关系查询、M叩Reduce和流式处理 等多种编程模型。 同时它也是一个可容错的、可并行的数据结构,可以让用户指定将数据存储到磁盘和内 存中,并能控制数据的分区。同时它还提供了一些高效的编程接口操作数据集。 03编程模型和作业调度Spark将RDD的操作分为两类:转换(transformation )与行动(action )。 转换操作是一种惰性操作,它只会定义新的RDD ,而不会立即执行。而行动操作那么是 立即执行计算,它要么返回结果给Driver进程,或是将结果输出到外部存储。常见转 换操作如map、flatM叩、filter等,常见行动操作如count、collect等。 当用户对一个RDD执行了行动操作之后,调度器会根据RDD的依赖关系生成一个 DAG (有向无环图)图来执行程序。DAG由假设干个stage组成,每个stage内都包含 多个连续的窄依赖。而各个stage之间那么是宽依赖。如图2所示,实线方框代表的是 RDD。方框内的矩形代表分区,假设分区已在内存中保存那么用黑色表示。 Spark任务拆分示意 ▲图2 04依赖 RDD作为数据结构本质上是一个只读的分区记录集合。一个RDD可以包含多个分区, 每个分区是一个数据片段。 RDD可以相互依赖。如果父RDD的每个分区最多被一个子RDD的分区使用,那么称之 为窄依赖;假设多个子RDD分区依赖一个父RDD的分区,那么称之为竟依赖。不同的操 作依据其特性,可能会产生不同的依赖。例如m叩操作会产生窄依赖,而join操作那么 产生宽依赖。 Spark之所以将依赖分为两种,基于两点原因。首先,窄依赖支持在同单个集群上以管 道的形式式执,例如在执行了 m叩后,紧接着执行filtero相反,宽依赖需要所有的父 RDD数据都可用并通过shuffle动作才可继续执行。 其次,窄依赖的失败恢复更加高效,因为它只需要重新计算丧失的父分区,并且这些计算可以并行的在不同节点同时进行。与此相反,在宽依赖的继承关系中,单个失败的节 点可能导致一个RDD的所有先祖RDD中的一些分区丧失,导致计算的重新执行。如 图3所示,说明了窄依赖与宽依赖之间的区别。 Narrow Dependencies: Wide Dependencies: union join with inputs not co-partitioncd ▲图3 SparkRDD宽依赖和窄依赖示意05容错 传统分布式系统的容错方案有据复制和恢复日志两种方案。对于以数据为中心的系统而 言,这两种方式都非常昂贵,因为它需要跨集群网络复制大量数据,而网络带宽的速度 远远低于内存访问的速度。 RDD天生是支持容错的。首先,它自身是一个不变的数据集,其次,Spark使用DAG 作为其执行模型所以它能够通过RDD的依赖特性记住一系列操作生成一张DAG图。 因此当执行的任务失败时,Spark只需根据DAG图进行重新计算即可实现容错机制。 由于无须采用复制的方式支持容错,Spark很好地降低了跨网络的数据传输本钱。 06集群模式Spark的应用以一组独立进程的形式运行在一个集群之上,由主程序中的 SparkContext对象进行协调(也被称为driver程序)o Spark目前支持三种集群运行 方式。 具体来说,Spark既可以通过standlone模式独立运行,也可以运行在Mesos或者 YARN之上。 如图4所示,一旦SparkContext连接到集群,Spark首先会从集群的节点中获得一些 executor进程,这些进程会用来执行我们程序中的计算和存储逻辑,接着它会通过jar 包的形式分发我们的程序代码到各个executor进程。最后,SparkContext会分派任 ▲图4 Spark任务进程示意 每个应用都拥有自己的executor进程,这些进程会在整个应用生命周期内持续运行并 以多线程的方式执行具体的任务。这种设计的好处是将各个应用之间的资源消耗进行了 隔离,每个应用都运行在它们各自的JVM中。但是这也意味着不同应用之间的SparkContext无法共享数据,除非借助扩展的存储媒介。 Spark对底层集群管理不可知。只要能够获取到executor进行,并且这些进程之间可 以通信,它就能比拟容易的运行在其他通用集群资源调度框架之上如Mesos和YARN。 07使用场景Spark借助其RDD的出色设计,做到了横跨多个领域的支撑。这意味着我们在一套程 序逻辑之中可以集成多种操作。 例如使用SQL查询过滤数据,然后进行机器学习或是通过SQL的方式操作流数据。在 提升便利的同时也降低了开发人员的学习曲线,基于Spark ,只需要学习一套编程模型 即可处理多个领域。 所以将Spark作为平台的一站式计算解决方案是再合适不过了。 -END -
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服