Spark大数据分析实战【1.0】

张开发
2026/4/20 10:55:41 15 分钟阅读
Spark大数据分析实战【1.0】
第1章 Spark简介本章主要介绍Spark框架的概念、生态系统、架构及RDD等,并围绕Spark的BDAS项目及其子项目进行了简要介绍。目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子项目,本章只进行简要介绍,后续章节会有详细阐述。1.1 初识SparkSpark是基于内存计算的大数据并行计算框架,因为它基于内存计算,所以提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将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之间需要进行Shuffle。Shuffle是连接有依赖的Stage的桥梁,上游Stage输出到下游Stage中必须经过Shuffle这个环节,通过Shuffle将相同的分组数据拆分后聚合到同一个节点再处理。Spark Shuffle支持基于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搭建大数据内存计算平台并充分利用内存计算,实现海量

更多文章