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

第1章 Spark 简 介

本章主要介绍Spark大数据计算框架、架构、计算模型和数据管理策略及Spark在工业界的应用。围绕Spark的BDAS 项目及其子项目进行了简要介绍。目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子项目,本章只进行简要

1.1 Spark是什么

介绍,后续章节再详细阐述。
Spark是基于内存计算的大数据并行计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark 部署在大量廉价硬件之上,形成集群。
Spark于2009年诞生于加州大学伯克利分校AMPLab。目前,已经成为Apache软件基金会旗下的顶级开源项目。下面是Spark的发展历程。
1.Spark的历史与发展

  • 2009年:Spark诞生于AMPLab。
  • 2010年:开源。
  • 2013年6月:Apache孵化器项目。
  • 2014年2月:Apache顶级项目。
  • 2014年2月:大数据公司Cloudera宣称加大Spark框架的投入来取代MapReduce。
  • 2014年4月:大数据公司MapR投入Spark阵营,Apache Mahout放弃MapReduce,将使用Spark作为计算引擎。
  • 2014年5月:Pivotal Hadoop集成Spark全栈。
  • 2014年5月30日:Spark 1.0.0发布。
  • 2014年6月:Spark 2014 峰会在旧金山召开。
  • 2014年7月:Hive on Spark项目启动。

目前AMPLab和Databricks负责整个项目的开发维护,很多公司,如Yahoo!、Intel等参与到Spark的开发中,同时很多开源爱好者积极参与Spark的更新与维护。
AMPLab开发以Spark为核心的BDAS时提出的目标是:one stack to rule them all,也就是说在一套软件栈内完成各种大数据分析任务。相对于MapReduce上的批量计算、迭代型计算以及基于Hive的SQL查询,Spark可以带来上百倍的性能提升。目前Spark的生态系统日趋完善,Spark SQL的发布、Hive on Spark项目的启动以及大量大数据公司对Spark全栈的支持,让Spark的数据分析范式更加丰富。
2.Spark之于Hadoop
更准确地说,Spark是一个计算框架,而Hadoop中包含计算框架MapReduce和分布式文件系统HDFS,Hadoop更广泛地说还包括在其生态系统上的其他系统,如Hbase、
Hive等。
Spark是MapReduce的替代方案,而且兼容HDFS、Hive等分布式存储层,可融入Hadoop的生态系统,以弥补缺失MapReduce的不足。
Spark相比Hadoop MapReduce的优势如下。
(1)中间结果输出
基于MapReduce的计算引擎通常会将中间结果输出到磁盘上,进行存储和容错。出于任务管道承接的考虑,当一些查询翻译到MapReduce任务时,往往会产生多个Stage,而这些串联的Stage又依赖于底层文件系统(如HDFS)来存储每一个Stage的输出结果。
Spark将执行模型抽象为通用的有向无环图执行计划(DAG),这可以将多Stage的任务串联或者并行执行,而无须将Stage中间结果输出到HDFS中。类似的引擎包括Dryad、Tez。
(2)数据格式和内存布局
由于MapReduce Schema on Read处理方式会引起较大的处理开销。Spark抽象出分布式内存存储结构弹性分布式数据集RDD,进行数据的存储。RDD能支持粗粒度写操作,但对于读取操作,RDD可以精确到每条记录,这使得RDD可以用来作为分布式索引。Spark的特性是能够控制数据在不同节点上的分区,用户可以自定义分区策略,如Hash分区等。Shark和Spark SQL在Spark的基础之上实现了列存储和列存储压缩。
(3)执行策略
MapReduce在数据Shuffle之前花费了大量的时间来排序,Spark则可减轻上述问题带来的开销。因为Spark任务在Shuffle中不是所有情景都需要排序,所以支持基于Hash的分布式聚合,调度中采用更为通用的任务执行计划图(DAG),每一轮次的输出结果在内存缓存。
(4)任务调度的开销
传统的MapReduce系统,如Hadoop,是为了运行长达数小时的批量作业而设计的,在某些极端情况下,提交一个任务的延迟非常高。
Spark采用了事件驱动的类库AKKA来启动任务,通过线程池复用线程来避免进程或线程启动和切换开销。
3.Spark能带来什么
Spark的一站式解决方案有很多的优势,具体如下。
(1)打造全栈多计算范式的高效数据流水线
Spark支持复杂查询。在简单的“map”及“reduce”操作之外,Spark还支持SQL查询、流式计算、机器学习和图算法。同时,用户可以在同一个工作流中无缝搭配这些计算范式。
(2)轻量级快速处理
Spark 1.0核心代码只有4万行。这是由于Scala语言的简洁和丰富的表达力,以及Spark充分利用和集成Hadoop等其他第三方组件,同时着眼于大数据处理,数据处理速度是至关重要的,Spark通过将中间结果缓存在内存减少磁盘I/O来达到性能的提升。
(3)易于使用,Spark支持多语言
Spark支持通过Scala、Java及Python编写程序,这允许开发者在自己熟悉的语言环境下进行工作。它自带了80多个算子,同时允许在Shell中进行交互式计算。用户可以利用Spark像书写单机程序一样书写分布式程序,轻松利用Spark搭建大数据内存计算平台并充分利用内存计算,实现海量数据的实时处理。
(4)与HDFS等存储层兼容
Spark可以独立运行,除了可以运行在当下的YARN等集群管理系统之外,它还可以读取已有的任何Hadoop数据。这是个非常大的优势,它可以运行在任何Hadoop数据源上,如Hive、HBase、HDFS等。这个特性让用户可以轻易迁移已有的持久化层数据。
(5)社区活跃度高
Spark起源于2009年,当下已有超过50个机构、260个工程师贡献过代码。开源系统的发展不应只看一时之快,更重要的是支持一个活跃的社区和强大的生态系统。
同时我们也应该看到Spark并不是完美的,RDD模型适合的是粗粒度的全局数据并行计算。不适合细粒度的、需要异步更新的计算。对于一些计算需求,如果要针对特定工作负载达到最优性能,还是需要使用一些其他的大数据系统。例如,图计算领域的GraphLab在特定计算负载性能上优于GraphX,流计算中的Storm在实时性要求很高的场合要比Spark Streaming更胜一筹。
随着Spark发展势头日趋迅猛,它已被广泛应用于Yahoo!、Twitter、阿里巴巴、百度、网易、英特尔等各大公司的生产环境中。

时间: 2024-09-20 14:50:05

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

Spark大数据处理系列之Machine Learning

本文是<Spark大数据处理>系列的第四篇,其他三篇:Spark介绍. Saprk SQL和 Spark Streaming . 最近几年,机器学习.预测分析和数据科学主题得到了广泛的关注.Spark的机器学习库(Spark MLlib),包括各种机器学习算法:协同过滤算法.聚类算法.分类算法和其他算法. 在前面的<Spark大数据处理>系列文章,介绍Apache Spark框架,介绍如何使用Spark SQL库的SQL接口去访问数据,使用Spark Streaming进行实时流式

运用大数据处理技术 做好国有企业思想政治工作

在全面深化企业改革和互联网全面普及的新形势下,国有企业思想政治工作面临着许多新情况,国有企业要勇于挑战自我.求新达变,积极推进思想政治工作理念创新.手段创新,要善于运用计算机大数据处理技术,积极构建大数据思想政治工作管控体系,确保职工队伍稳定,使企业思想政治工作焕发出勃勃生机,为企业改革发展提供强有力的思想保障. 运用大数据搭建思想政治工作新平台 针对思想政治工作面临的新情况,国有企业要勇于创新,积极确立"用数据链筑牢生命线"的新理念新思路,立足企业内部网络,运用大数据处理技术,创新做

为什么我们说海量大数据处理技术会火

大数据处理技术正在改变目前计算机的运行模式.我们已经从中获得了大量收益,因为正是大数据处理技术给我们带来了搜索引擎 Google.然而故事才刚刚开始,基于以下几个原因,我们说大数据处理技术正在改变着这个世界:* 它能处理几乎各种类型的海量数据,无论是微博.文章.电子邮件.文档.音频.视频,还是其它形态的数据. * 它工作的速度非常快速:实际上几乎实时. * 它具有普及性:因为它所用的都是最普通低成本的硬件 大数据为以下这些公司提供了解决方案:eBay.Facebook.LinkedIn.Netf

用好大数据处理技术

由于一些技术问题,我国的http://www.aliyun.com/zixun/aggregation/4194.html">社会信用体系还不完善.用好大数据处理技术,是建设诚信体系的一个重要选择. 在建设诚信体系过程中,如何使信用信息公开共享成为主要难点.大数据技术能够将隐藏于海量数据中的信息和知识挖掘出来,为社会经济活动提供依据,从而提高各个领域的运行效率,大大提高整个社会经济的集约化程度.用好大数据技术,发挥大数据的优势,当信用信息可以查询匹配,市场主体的信用状况可以识别,才能让失信

中国获得大数据处理技术话语权的机会有多大?

中国能否在未来3-5年内真正获得大数据处理技术的部分话语权,或许需要考虑以下几个方面的因素: (1)从原始基础发明专利技术入手,控制大数据处理技术的源头. 数据处理技术本质上是人的智力活动的结果,专利技术和方法是人设计的数学规则.计算机是在数学规则约束下的逻辑运行载体.对于一个逻辑运行载体来说,必定存在一个起始入口,而起始入口的数学规则就是原始基础发明方法,后续的应用发明方法必定受原始基础发明方法的约束.比如目前的计算机采用二进制规则以及图灵机模式规则,后续的任何方法都受这两个基础方法的约束.

浅谈大数据处理技术架构的演进

浅谈大数据处理技术架构的演进 任桂禾 王晶 新兴应用对大数据处理技术架构的实时性要求不断提高,这对传统的大数据处理技术架构提出严峻的挑战.必须转变架构满足大数据相关业务的实时性要求.文章介绍Hadoop离线处理架构的瓶颈以及Storm实时处理架构的优点,同时,结合实际项目中变更大数据处理技术架构的经验,阐述在实施架构变更过程中的关键技术,实验结果证明使用变更后的技术架构可以满足业务的实时性要求. 浅谈大数据处理技术架构的演进

盘点九大热门开源大数据处理技术

随着全球企业和个人数据的爆炸式增长,数据本身正在取代软件和硬件成为驱动信息技术行业和全球经济的下一个大"油田". 与PC.web等断层式信息技术革命相比,大数据的最大的不同是,这是一场由"开源软件"驱动的革命.从IBM.Oracle等巨头到雨后春笋般的大数据创业公司,开源软件与大数据的结合迸发出惊人的产业颠覆性力量,甚至VMware这样的过去完全依赖专有软件的厂商都开始拥抱开源大数据工具. 下面,我们就列举九大最热门的大数据开源技术供大家参考. 一.Hadoop A

《Spark大数据处理》—— 读后总结

前几章 工作机制 本文转自博客园xingoo的博客,原文链接:<Spark大数据处理>-- 读后总结,如需转载请自行联系原博主.

Java 程序性能优化《第一章》Java性能调优概述 1.2性能调优的层次

Java 程序性能优化<第一章>1.2性能调优的层次 为了提升系统性能,开发人员开始从系统各个角度和层次对系统进行优化.除了最常见的代码优化外,在软件架构上.JVM虚拟机层.数据库以及操作系统层面都可以通过各种手段进行优化,从而在整体上提升系统的性能. 1.2.1 设计调优 设计调优处于所有调优手段的上层,它往往需要在软件开发之前进行.在软件开发之处,软件架构师就应该评估系统可能存在的各种潜在问题,并给出合理的设计方案.由于软件设计和架构对整体质量有决定性的影响,所以,设计调优对系统性能的影响

Java 程序性能优化《第一章》Java性能调优概述 1.4小结

Java 程序性能优化<第一章>1.4小结 通过本章的学习,读者应该了解性能的基本概念及其常用的参考指标.此外,本章还较为详细的介绍了与性能调优相关的两个重要理论--木桶原理以及Amdahl定律. 根据木桶原理,系统的最终性能总是由系统中性能最差的组件决定的.因此,改善该组件的性能对提升系统整体性能有重要的作用.而根据Amdahl定律,可以知道只是增加处理器数量对提升系统性能并没有太大的实际意义,必须同时提高程序的并行化比重. 本章还简要的介绍了在软件开发和维护过程中可以进行性能优化的各个阶段