本文为《大数据分析师入门课程》系列的第8篇,主要讲解大数据分析师必须了解的Spark基础知识,前7篇分别是JAVA基础、SCALA基础、SQL基础、SQL进阶、HIVE基础、HIVE进阶、HDFS&YARN基础。
依照惯例,首先,我们就以下三个问题进行简单说明。
为什么讲Spark?
本文的主要目标是什么?
本文的讲解思路是什么?
为什么讲Spark?
随着并行数据分析变得越来越流行,各行各业的使用者们迫切需要更好的数据分析工具,Spark 应运而生。作为MapReduce的继任者,Spark具备以下优势特性。
1.高效性
内存计算下,Spark 比 MapReduce 快100倍。Spark使用最先进的DAG调度程序、查询优化程序和物理执行引擎,实现批量和流式数据的高性能。
2.易用性
Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建多样的应用。
3.通用性
Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。
这些不同类型的处理都可以在同一个应用中无缝使用。这对于企业应用来说,就可使用一个平台来进行不同的工程实现,减少了人力开发和平台部署成本。
4.兼容性
Spark能够跟很多开源工程兼容使用。如Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,并且Spark可以读取多种数据源,如HDFS、HBase、MySQL等。
对于任何一家已经部署好Hadoop基础集群的企业来说,在不需要进行任何数据迁移和处理的情况下,就可以快速使用上Spark强大的数据处理和计算能力。
本文的主要目标是什么?
通过以上对Spark几大特性的介绍,可以看出Spark可支持开展多种大数据相关工作,比如大数据算法、大数据底层架构开发、数据分析等。
由于本文属于《大数据分析师入门课程》系列,故本文针对Spark的内容讲解主要是围绕数据分析工作中经常涉及到的核心概念和常用的操作等相关知识点。
学习完本文,你将会对如何使用Spark完成数据分析工作有一个更深入的理解。
本文的讲解思路是什么?
第1部分,主要讲解Spark相比MapReduce的优势。
第2部分,主要跟大家一起来看下Spark生态系统具体包括哪些组成部分。
第3部分,针对Spark的三种主要数据组织类型进行一一介绍、对其三者之间的异同点进行总结以及给出三者之间转化的方式。
第4部分,共享变量,包括广播变量和累加器。
第5部分,主要介绍Spark中使用YARN进行资源管理时,任务的提交流程和方式。
话不多说,让我们直接开始吧!
SPARK与MAPREDUCE比较
MapReduce作为Hadoop的两大重要组成部分之一,相信绝大部分从业者在大数据学习之初,都学习过这个分布式计算框架。
Spark继承了其分布式并行计算的优点,并改善了MapReduce的几个不足,具体表现为以下几个方面。
1.Spark可以把中间结果放在内存中,迭代运算效率高
MapReduce把中间计算结果放在磁盘上,这样势必会影响整体的运行速度,而Spark使用DAG分布式并行计算编程框架,缩短了中间处理环节,提高了处理效率。
2.Spark容错性高
Spark引进了弹性分布式数据集(Resilient Distribued Dataset,RDD)的概念,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,可以对它们进行重建。另外,RDD在计算时,可以通过CheckPoint来实现容错。
3.Spark更加易用
Spark提供了丰富的开箱即用的数据集操作算子,使处理和分析数据变得更加简单。
SPARK生态系统
前面对Spark的特性和优势介绍了很多,接下来让我们直接来看看Spark生态系统的全貌吧。
Spark已经发展成为包含众多子项目的大数据计算平台。
伯克利(Spark的创造者,加州大学伯克利分校)将Spark的整个生态系统称为伯克利数据分析栈(BDAS)。
以SparkCore为核心,能够读取本地文件(如文本文件)、HDFS、Amazon S3、Hbase和Alluxio等数据源,利用Standalone、EC2、MESOS、YARN等资源调度管理,完成应用程序对数据的分析与处理,这些应用程序来自Spark的不同组件,包括Spark Streaming实时流处理应用、SparkSQL的即席查询、采样近似查询引擎BlinkDB的权衡查询、MLBase/Mllib的机器学习、GraphX的图处理和SparkR的数据计算等。
其中,大数据分析工作涉及到的基础知识点有SparkCore中的RDD、SparkSQL(系列课程的下一篇文章将会单独讲解SparkSQL)、如何进行本地运行测试、如何定义和使用广播变量和累计器、如何在YARN上运行等相关知识点。
这里首先简单介绍下SparkCore。
SparkCore是整个BDAS生态系统的核心组件,是一个分布式大数据处理框架,SparkCore提供了多种资源调度管理,通过内存计算、有向无环图(DAG)等机制保证分布式计算的快速,并引入了RDD的