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

简介:

本节书摘来自华章计算机《Spark大数据处理:技术、应用与性能优化》一书中的第1章,第1.1节,作者:高彦杰 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第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、阿里巴巴、百度、网易、英特尔等各大公司的生产环境中。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
3天前
|
SQL 机器学习/深度学习 分布式计算
Spark【基础知识 01】【简介】(部分图片来源于网络)
【2月更文挑战第12天】Spark【基础知识 01】【简介】(部分图片来源于网络)
28 2
|
3天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
3天前
|
分布式计算 算法 调度
DAG(有向无环图)在Spark中的应用
DAG(有向无环图)在Spark中的应用
6 0
|
3天前
|
消息中间件 分布式计算 大数据
大数据组件之storm简介
大数据组件之storm简介
23 2
|
3天前
|
监控 大数据 数据处理
大数据组件之Storm简介
【5月更文挑战第2天】Apache Storm是用于实时大数据处理的分布式系统,提供容错和高可用的实时计算。核心概念包括Topology(由Spouts和Bolts构成的DAG)、Spouts(数据源)和Bolts(数据处理器)。Storm通过acker机制确保数据完整性。常见问题包括数据丢失、性能瓶颈和容错理解不足。避免这些问题的方法包括深入学习架构、监控日志、性能调优和编写健壮逻辑。示例展示了实现单词计数的简单Topology。进阶话题涵盖数据延迟、倾斜的处理,以及Trident状态管理和高级实践,强调调试、性能优化和数据安全性。
23 4
|
3天前
|
分布式计算 DataWorks 大数据
MaxCompute操作报错合集之大数据计算的MaxCompute Spark引擎无法读取到表,是什么原因
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
MaxCompute操作报错合集之大数据计算的MaxCompute Spark引擎无法读取到表,是什么原因
|
3天前
|
分布式计算 大数据 数据处理
[AIGC大数据基础] Spark 入门
[AIGC大数据基础] Spark 入门
143 0
|
3天前
|
分布式计算 Spark
Spark【Spark学习大纲】简介+生态+RDD+安装+使用(xmind分享)
【2月更文挑战第14天】Spark【Spark学习大纲】简介+生态+RDD+安装+使用(xmind分享)
35 1
|
3天前
|
机器学习/深度学习 分布式计算 监控
典型的Spark应用实例
典型的Spark应用实例
50 1
|
3天前
|
分布式计算 大数据 Java
Spark 大数据实战:基于 RDD 的大数据处理分析
Spark 大数据实战:基于 RDD 的大数据处理分析
140 0

热门文章

最新文章