Spark:大数据的“电光石火”

Spark已正式申请加入Apache孵化器,从灵机一闪的实验室“电火花”成长为大数据技术平台中异军突起的新锐。本文主要讲述Spark的设计思想。Spark如其名,展现了大数据不常见的“电光石火”。具体特点概括为“轻、快、灵和巧”。

轻:Spark 0.6核心代码有2万行,Hadoop 1.0为9万行,2.0为22万行。一方面,感谢Scala语言的简洁和丰富表达力;另一方面,Spark很好地利用了Hadoop和Mesos(伯克利 另一个进入孵化器的项目,主攻集群的动态资源管理)的基础设施。虽然很轻,但在容错设计上不打折扣。主创人Matei声称:“不把错误当特例处理。”言下 之意,容错是基础设施的一部分。

快:Spark对小数据集能达到亚秒级的延迟,这对于Hadoop MapReduce(以下简称MapReduce)是无法想象的(由于“心跳”间隔机制,仅任务启动就有数秒的延迟)。就大数据集而言,对典型的迭代机器 学习、即席查询(ad-hoc query)、图计算等应用,Spark版本比基于MapReduce、Hive和Pregel的实现快上十倍到百倍。其中内存计算、数据本地性 (locality)和传输优化、调度优化等该居首功,也与设计伊始即秉持的轻量理念不无关系。

灵:Spark提供了不同层面的灵活性。在实现层,它完美演绎了Scala trait动态混入(mixin)策略(如可更换的集群调度器、序列化库);在原语(Primitive)层,它允许扩展新的数据算子 (operator)、新的数据源(如HDFS之外支持DynamoDB)、新的language bindings(Java和Python);在范式(Paradigm)层,Spark支持内存计算、多迭代批量处理、即席查询、流处理和图计算等多种 范式。

巧:巧在借势和借力。Spark借Hadoop之势,与Hadoop无缝结合;接着Shark(Spark上的数据仓库实现)借了Hive的势;图计算借 用Pregel和PowerGraph的API以及PowerGraph的点分割思想。一切的一切,都借助了Scala(被广泛誉为Java的未来取代 者)之势:Spark编程的Look'n'Feel就是原汁原味的Scala,无论是语法还是API。在实现上,又能灵巧借力。为支持交互式编 程,Spark只需对Scala的Shell小做修改(相比之下,微软为支持JavaScript Console对MapReduce交互式编程,不仅要跨越Java和JavaScript的思维屏障,在实现上还要大动干戈)。

说了一大堆好处,还是要指出Spark未臻完美。它有先天的限制,不能很好地支持细粒度、异步的数据处理;也有后天的原因,即使有很棒的基因,毕竟还刚刚起步,在性能、稳定性和范式的可扩展性上还有很大的空间。

计算范式和抽象

Spark首先是一种粗粒度数据并行(data parallel)的计算范式。

数据并行跟任务并行(task parallel)的区别体现在以下两方面。

计算的主体是数据集合,而非个别数据。集合的长度视实现而定,如SIMD(单指令多数据)向量指令一般是4到64,GPU的SIMT(单指令多线程)一般 是32,SPMD(单程序多数据)可以更宽。Spark处理的是大数据,因此采用了粒度很粗的集合,叫做Resilient Distributed Datasets(RDD)。

集合内的所有数据都经过同样的算子序列。数据并行可编程性好,易于获得高并行性(与数据规模相关,而非与程序逻辑的并行性相关),也易于高效地映射到底层 的并行或分布式硬件上。传统的array/vector编程语言、SSE/AVX intrinsics、CUDA/OpenCL、Ct(C++ for throughput),都属于此类。不同点在于,Spark的视野是整个集群,而非单个节点或并行处理器。

数据并行的范式决定了 Spark无法完美支持细粒度、异步更新的操作。图计算就有此类操作,所以此时Spark不如GraphLab(一个大规模图计算框架);还有一些应用,    需要细粒度的日志更新和数据检查点,它也不如RAMCloud(斯坦福的内存存储和计算研究项目)和Percolator(Google增量计算技术)。    反过来,这也使Spark能够精心耕耘它擅长的应用领域,试图粗细通吃的Dryad(微软早期的大数据平台)反而不甚成功。

Spark的RDD,采用了Scala集合类型的编程风格。它同样采用了函数式语义(functional semantics):一是闭包,二是RDD的不可修改性。逻辑上,每一个RDD算子都生成新的RDD,没有副作用,所以算子又被称为是确定性的;由于所有算子都是幂等的,出现错误时只需把算子序列重新执行即可。

Spark的计算抽象是数据流,而且是带有工作集(working set)的数据流。流处理是一种数据流模型,MapReduce也是,区别在于MapReduce需要在多次迭代中维护工作集。工作集的抽象很普遍,如多    迭代机器学习、交互式数据挖掘和图计算。为保证容错,MapReduce采用了稳定存储(如HDFS)来承载工作集,代价是速度慢。HaLoop采用循环    敏感的调度器,保证前次迭代的Reduce输出和本次迭代的Map输入数据集在同一台物理机上,这样可以减少网络开销,但无法避免磁盘I/O的瓶颈。

Spark的突破在于,在保证容错的前提下,用内存来承载工作集。内存的存取速度快于磁盘多个数量级,从而可以极大提升性能。关键是实现容错,传统上有两种方法:日    志和检查点。考虑到检查点有数据冗余和网络通信的开销,Spark采用日志数据更新。细粒度的日志更新并不便宜,而且前面讲过,Spark也不擅长。    Spark记录的是粗粒度的RDD更新,这样开销可以忽略不计。鉴于Spark的函数式语义和幂等特性,通过重放日志更新来容错,也不会有副作用。

时间: 2024-11-02 07:22:49

Spark:大数据的“电光石火”的相关文章

Hadoop+Spark 大数据开发项目最佳实践

随着IT技术的飞速发展,各行各业都已在广泛尝试使用大数据技术提供更稳健和优质的服务.目前,医疗IT系统收集了大量极具价值的数据,但这些历史医疗数据并没有发挥出其应有的价值.为此 ,本文拟利用医院现有的历史数据,挖掘出有价值的基于统计学的医学规则.知识,并 基于这些信息构建专业的临床知识库,提供诊断.处方.用药推荐功能,基于强大的关联推荐能力,极大地提高医疗服务质量,减轻医疗人员的工作强度. 二.Hadoop&Spark 目前大数据处理领域的框架有很多. 从计算的角度上看,主要有MapReduce

如何低成本、高效率搭建Hadoop/Spark大数据处理平台

随着人们逐渐认识到 "大数据"的价值,互联网.电商到金融业.政企等各行业开始处理海量数据.如何低成本.敏捷高效地搭建大数据处理平台,成为影响大数据创新效率的关键. 为了让用户以最简便地方式享用阿里云全球资源,在云端构建敏捷弹性.高可靠和高性价比的大数据平台,近日,阿里云在成都云栖大会上发布了一款Hadoop/Spark场景专用的ECS存储优化型实例D1规格族,单实例提供最高56核CPU,224GB内存,168TB本地盘容量,5GB/S总吞吐,PPS达120万+.这对Hadoop/Spa

DockOne微信分享(九十九):海航生态科技舆情大数据平台容器化改造

本文讲的是DockOne微信分享(九十九):海航生态科技舆情大数据平台容器化改造[编者的话]海航舆情监控系统能够为海航集团内部提供监控网络舆情信息,对负面信息.重大舆情及时预警,研判具体舆情或者某一舆情专题事件的发展变化趋势,生成图标报告和各种统计数据,提高舆情工作效率和辅助领导决策.然而,随着项目的持续运行,许多问题逐渐暴露出来,为了解决这些难题,对整个项目重新规划设计,迁移到Hadoop.Spark大数据平台,引进持续化Docker容器部署和发布,开发和运营效率得到显著提升. 一. 舆情平台

《Spark大数据处理:技术、应用与性能优化》——第1章 Spark 简 介1.1 Spark是什么

第1章 Spark 简 介 本章主要介绍Spark大数据计算框架.架构.计算模型和数据管理策略及Spark在工业界的应用.围绕Spark的BDAS 项目及其子项目进行了简要介绍.目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL.Spark Streaming.GraphX.MLlib等子项目,本章只进行简要 1.1 Spark是什么 介绍,后续章节再详细阐述.Spark是基于内存计算的大数据并行计算框架.Spark基于内存计算,提高了在大数据环境下数据处理的

产品经理如何了解高深莫测的大数据?

去年下半年,我开始负责公司的用户画像工作,经历了公司用户画像从0到1的搭建过程.从一个大数据小白,开始慢慢了解神秘的大数据是,与数据同事通力合作进行画像标签的清洗输出,设计用户画像分析工具和可视化产品. 本文不是对大数据千篇一律的感悟,而是我一年内工作积累的干货,希望对各位产品经理有帮助. 一.大数据是什么? 大数据,big data,<大数据>一书对大数据这么定义,大数据是指不能用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理. 这句话至少传递两种信息: 1.大数据是海量的数据

海航生态科技舆情大数据平台容器化改造

文章介绍了海航生态科技舆情大数据平台的容器化改造经验,包括初期技术架构.应用容器化.架构迁移.持续发布与部署. 海航舆情监控系统能够为海航集团内部提供监控网络舆情信息,对负面信息.重大舆情及时预警,研判具体舆情或者某一舆情专题事件的发展变化趋势,生成图标报告和各种统计数据,提高舆情工作效率和辅助领导决策.然而,随着项目的持续运行,许多问题逐渐暴露出来,为了解决这些难题,对整个项目重新规划设计,迁移到Hadoop.Spark大数据平台,引进持续化Docker容器部署和发布,开发和运营效率得到显著提

【资料下载】中国云计算与大数据官网群在南京线下聚会活动

10月25日上,2014中国云计算与大数据论坛南京线下交流会,在南京市云计算创新基地召开.刘鹏教授亲自莅临,并发表开幕致辞.刘鹏教授在致辞中指出,云计算大数据产业已经汇聚成一股势不可挡的发展潮流,唯有顺势而为.追赶潮流才能创造跨越式发展的美好明天.南京论坛召集人罗相伟先生首先做了主题演讲--现代IT与传统IT的区别及未来趋势. 在交流论坛上,来自南京.合肥.扬州等国内外知名企业的朋友们,共同探讨了云计算大数据的技术交流和场景应用.主题演讲为以下内容: Vcloud VSAN技术介绍--VMwar

Spark:大数据时代的电光火石

Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台.它立足于内存计算,从多迭代批量处理出发,兼收并蓄数据仓库.流处理和图计算等多种计算范式,是罕见的全能选手. Spark已正式申请加入Apache孵化器,从灵机一闪的实验室"电火花"成长为大数据技术平台中异军突起的新锐.本文主要讲述Spark的设计思想.Spark如其名,展现了大数据不常见的"电光石火".具体特点概括为"轻.快.灵和巧". 轻:Spark 0.6核心代码有2万行,H

大数据基础知识问答----spark篇,大数据生态圈

Spark相关知识点 1.Spark基础知识 1.Spark是什么? UCBerkeley AMPlab所开源的类HadoopMapReduce的通用的并行计算框架 dfsSpark基于mapreduce算法实现的分布式计算,拥有HadoopMapReduce所具有的优点:但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法. 2.Spark与Hadoop的对比(Spar