《Spark大数据分析实战》——1.1节初识Spark

1.1 初识Spark
Spark是基于内存计算的大数据并行计算框架,因为它基于内存计算,所以提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。
1.?Spark执行的特点
Hadoop中包含计算框架MapReduce和分布式文件系统HDFS。
Spark是MapReduce的替代方案,而且兼容HDFS、Hive等分布式存储层,融入Hadoop的生态系统,并弥补MapReduce的不足。
(1)中间结果输出
Spark将执行工作流抽象为通用的有向无环图执行计划(DAG),可以将多Stage的任务串联或者并行执行,而无需将Stage的中间结果输出到HDFS中,类似的引擎包括Flink、Dryad、Tez。
(2)数据格式和内存布局
Spark抽象出分布式内存存储结构弹性分布式数据集RDD,可以理解为利用分布式的数组来进行数据的存储。RDD能支持粗粒度写操作,但对于读取操作,它可以精确到每条记录。Spark的特性是能够控制数据在不同节点上的分区,用户可以自定义分区策略。
(3)执行策略
Spark执行过程中不同Stage之间需要进行Shuff?le。Shuff?le是连接有依赖的Stage的桥梁,上游Stage输出到下游Stage中必须经过Shuff?le这个环节,通过Shuff?le将相同的分组数据拆分后聚合到同一个节点再处理。Spark Shuff?le支持基于Hash或基于排序的分布式聚合机制。
(4)任务调度的开销
Spark采用了事件驱动的类库AKKA来启动任务,通过线程池的复用线程来避免系统启动和切换开销。
2.?Spark的优势
Spark的一站式解决方案有很多的优势,分别如下所述。
(1)打造全栈多计算范式的高效数据流水线
支持复杂查询与数据分析任务。在简单的“Map”及“Reduce”操作之外,Spark还支持SQL查询、流式计算、机器学习和图算法。同时,用户可以在同一个工作流中无缝搭配这些计算范式。
(2)轻量级快速处理
Spark代码量较小,这得益于Scala语言的简洁和丰富表达力,以及Spark通过External DataSource API充分利用和集成Hadoop等其他第三方组件的能力。同时Spark基于内存计算,可通过中间结果缓存在内存来减少磁盘I/O以达到性能的提升。
(3)易于使用,支持多语言
Spark支持通过Scala、Java和Python编写程序,这允许开发者在自己熟悉的语言环境下进行工作。它自带了80多个算子,同时允许在Shell中进行交互式计算。用户可以利用Spark像书写单机程序一样书写分布式程序,轻松利用Spark搭建大数据内存计算平台并充分利用内存计算,实现海量数据的实时处理。
(4)与External Data Source多数据源支持
Spark可以独立运行,除了可以运行在当下的Yarn集群管理之外,它还可以读取已有的任何Hadoop数据。它可以运行多种数据源,比如Parquet、Hive、HBase、HDFS等。这个特性让用户可以轻易迁移已有的持久化层数据。
(5)社区活跃度高
Spark起源于2009年,当下已有超过600多位工程师贡献过代码。开源系统的发展不应只看一时之快,更重要的是一个活跃的社区和强大的生态系统的支持。
同时也应该看到Spark并不是完美的,RDD模型适合的是粗粒度的全局数据并行计算;不适合细粒度的、需要异步更新的计算。对于一些计算需求,如果要针对特定工作负载达到最优性能,还需要使用一些其他的大数据系统。例如,图计算领域的GraphLab在特定计算负载性能上优于GraphX,流计算中的Storm在实时性要求很高的场合要更胜Spark Streaming一筹。

时间: 2024-08-03 05:36:37

《Spark大数据分析实战》——1.1节初识Spark的相关文章

《Spark大数据分析实战》——第1章Spark简介

第1章Spark简介本章主要介绍Spark框架的概念.生态系统.架构及RDD等,并围绕Spark的BDAS 项目及其子项目进行了简要介绍.目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL.Spark Streaming.GraphX.MLlib等子项目,本章只进行简要介绍,后续章节会有详细阐述.

《Spark大数据分析实战》——第2章Spark开发与环境配置

第2章Spark开发与环境配置用户进行Spark应用程序开发,一般在用户本地进行单机开发调试,之后再将作业提交到集群生产环境中运行.下面将介绍Spark开发环境的配置,如何编译和进行源码阅读环境的配置.用户可以在官网上下载最新的AS软件包,网址为:http://spark.apache.org/.

《Spark大数据分析实战》——3.1节SQL on Spark

3.1 SQL on Spark AMPLab将大数据分析负载分为三大类型:批量数据处理.交互式查询.实时流处理.而其中很重要的一环便是交互式查询.大数据分析栈中需要满足用户ad-hoc.reporting.iterative等类型的查询需求,也需要提供SQL接口来兼容原有数据库用户的使用习惯,同时也需要SQL能够进行关系模式的重组.完成这些重要的SQL任务的便是Spark SQL和Shark这两个开源分布式大数据查询引擎,它们可以理解为轻量级Hive SQL在Spark上的实现,业界将该类技术

《Spark大数据分析实战》——1.4节弹性分布式数据集

1.4 弹性分布式数据集 本节将介绍弹性分布式数据集RDD.Spark是一个分布式计算框架,而RDD是其对分布式内存数据的抽象,可以认为RDD就是Spark分布式算法的数据结构,而RDD之上的操作是Spark分布式算法的核心原语,由数据结构和原语设计上层算法.Spark最终会将算法(RDD上的一连串操作)翻译为DAG形式的工作流进行调度,并进行分布式任务的分发.1.4.1 RDD简介 在集群背后,有一个非常重要的分布式数据架构,即弹性分布式数据集(Resilient Distributed Da

《Spark大数据分析实战》——3.3节GraphX

3.3 GraphX GraphX是Spark中的一个重要子项目,它利用Spark作为计算引擎,实现了大规模图计算的功能,并提供了类似Pregel的编程接口.GraphX的出现,将Spark生态系统变得更加完善和丰富:同时以其与Spark生态系统其他组件很好的融合,以及强大的图数据处理能力,在工业界得到了广泛的应用.本章主要介绍GraphX的架构.原理和使用方式.3.3.1 GraphX简介 GraphX是常用图算法在Spark上的并行化实现,同时提供了丰富的API接口.图算法是很多复杂机器学习

《Spark大数据分析实战》——1.2节Spark生态系统BDAS

1.2 Spark生态系统BDAS 目前,Spark已经发展成为包含众多子项目的大数据计算平台.BDAS是伯克利大学提出的基于Spark的数据分析栈(BDAS).其核心框架是Spark,同时涵盖支持结构化数据SQL查询与分析的查询引擎Spark SQL,提供机器学习功能的系统MLBase及底层的分布式机器学习库MLlib,并行图计算框架GraphX,流计算框架Spark Streaming,近似查询引擎BlinkDB,内存分布式文件系统Tachyon,资源管理框架Mesos等子项目.这些子项目在

《Spark大数据分析实战》——第3章BDAS简介

第3章 BDAS简介 提到Spark不得不说伯克利大学AMPLab开发的BDAS(Berkeley Data Analytics Stack)数据分析的软件栈,如图3-1所示是其中的Spark生态系统.其中用内存分布式大数据计算引擎Spark替代原有的MapReduce,上层通过Spark SQL替代Hive等SQL on Hadoop系统,Spark Streaming替换Storm等流式计算框架,GraphX替换GraphLab等大规模图计算框架,MLlib替换Mahout等机器学习框架等,

《Spark大数据分析实战》——3.5节本章小结

3.5 本章小结本章主要介绍了BDAS中广泛应用的几个数据分析组件.SQL on Spark提供在Spark上的SQL查询功能.让用户可以基于内存计算和SQL进行大数据分析.通过Spark Streaming,用户可以构建实时流处理应用,其高吞吐量,以及适合历史和实时数据混合分析的特性使其在流数据处理框架中突出重围.GraphX充当Spark生态系统中图计算的角色,其简洁的API让图处理算法的书写更加便捷.最后介绍了MLlib--Spark上的机器学习库,它充分利用Spark内存计算和适合迭代的

《Spark大数据分析实战》——1.5节本章小结

1.5 本章小结本章首先介绍了Spark分布式计算平台的基本概念.原理以及Spark生态系统BDAS之上的典型组件.Spark为用户提供了系统底层细节透明.编程接口简洁的分布式计算平台.Spark具有内存计算.实时性高.容错性好等突出特点.同时本章介绍了Spark的计算模型,Spark会将应用程序整体翻译为一个有向无环图进行调度和执行.相比MapReduce,Spark提供了更加优化和复杂的执行流.读者还可以深入了解Spark的运行机制与Spark算子,这样能更加直观地了解API的使用.Spar