《Spark与Hadoop大数据分析》——2.2 Apache Spark概述

简介: 本节书摘来自华章计算机《Spark与Hadoop大数据分析》一书中的第2章,第2.2节,作者 [美]文卡特·安卡姆(Venkat Ankam),译 吴今朝,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.2 Apache Spark概述

Hadoop和MR已有10年历史,已经被证明是高性能处理海量数据的最佳解决方案。然而,MR在迭代计算中性能不足,在这种情况下,多个MR作业之间的输出必须被写入 HDFS。在单个MR作业中,它的性能不足则是因为MR框架存在的一些缺点所致。

让我们来看看计算趋势的发展历史,以便了解计算的格局在过去20年中的变化。

这个趋势是当网络成本更低时(1990年代)对URI索引(Reference),当存储成本更低时(2000 年代)进行复制(Replicate),以及当内存成本更低时(2010 年代)进行再计算(Recompute),如图2-5 所示:

image

image

让我们来了解一下,为什么基于内存的计算很重要,以及它如何能产生显著的性能优势。

图2-6显示了从各种介质到CPU的数据传输速率。磁盘到CPU的传输速率为100 MB/s,SSD到CPU为600 MB/s,通过网络到CPU为1 MB到1 GB/s。然而,RAM到CPU的传输速度惊人地快,达到了10 GB/s。所以,理想的思路是把所有或部分数据缓存到内存里,以便实现更高的性能:

2.2.1 Spark 的发展历史

Spark 始于 2009 年,起初是作为加州大学伯克利分校 RAD 实验室的一个研究项目,该实验室就是 AMPLab 的前身。该实验室的研究人员以前一直在使用 Hadoop MapReduce,并观察到 MR 对于迭代和交互式计算工作是低效率的。因此,从一开始,Spark 被设计为快速进行交互式查询和迭代的算法,采用了支持内存存储和高效故障恢复等一些思路。

image

在2011年,AMPLab开始在Spark上开发更高级的组件,如Shark和Spark Streaming。这些组件有时被称为Berkeley数据分析框架(Berkeley Data Analytics Stack,BDAS)。

Spark于2010年3月首次开源,并于2013年6月被转移到Apache软件基金会。

到2014年2月,它成为了Apache软件基金会的一个顶级项目。Spark已经成为大数据领域最大的开源社区之一。现在,有超过50个组织里的超过250位贡献者正在为Spark开发做出贡献。它的用户群增长迅猛,包括了从小型公司到财富500强公司。图2-7显示了 Apache Spark的发展历史:

image

2.2.2 Apache Spark 是什么

让我们来了解一下Apache Spark 是什么,以及是什么使之成为大数据分析的利器:

image
image

2.2.3 Apache Spark 不是什么

Hadoop 提供了用于存储的 HDFS 和用于计算的 MR。但是,Spark 不提供任何特定的存储介质。Spark 主要是一个计算引擎,但你可以把数据存储在内存里或 Tachyon 上进行处理。

Spark 具有从存储在 HDFS 或 Hadoop API 支持的其他存储系统(包括你的本地文件系统、Amazon S3、Cassandra、Hive、HBase、Elasticsearch 等)中的任何文件创建分布式数据集的能力。

重要的是要注意 Spark 不是 Hadoop,也不需要 Hadoop 来运行它。它只是为那些实现了 Hadoop API 的存储系统提供支持而已。Spark 支持文本文件、序列文件、Avro、Parquet 和其他任何 Hadoop 输入格式。

image

2.2.4 MapReduce 的问题

在性能和把业务问题转换为 MR 问题方面,MR 开发人员都面临着一些挑战。让我们来了解这些与 MR 相关的问题。以及如何在 Apache Spark 中解决这些问题:

image

MR速度缓慢是因为 MR 作业中的每个作业都把数据存储在磁盘上。对同一数据集的多个查询会分别读取数据,产生大量的磁盘读写,如图2-8 所示:

image

Spark 将 MR 的概念提升到更高水平,将中间数据存储在内存中,并根据需要多次重复使用。这样就在内存速度下提供了高性能,如图2-8 所示。

image

总而言之,MR 和 Spark 之间的区别如下:

image

2.2.5 Spark 的架构

Spark 的架构组件有 Spark Core、Spark SQL、Dataset和DataFrame、Spark Streaming、Structured Streaming、MLlib、GraphX 以及 SparkR,如图2-9所示:

image

下面是 Spark 组件与 Hadoop Ecosystem 组件的比较:

image

为了从更高的层次理解 Spark 框架,让我们来看看 Spark 的这些核心组件以及它们的集成:

image
image

Spark 生态系统是一个统一的技术架构,它为你提供了在一个程序中结合 SQL、流和机器学习的强大功能。这种统一性的优点如下:

image

这种统一性的一个示例如图2-10 所示:

image

相关文章
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
695 0
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
1251 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
789 79
|
SQL 机器学习/深度学习 分布式计算
Spark快速上手:揭秘大数据处理的高效秘密,让你轻松应对海量数据
【10月更文挑战第25天】本文全面介绍了大数据处理框架 Spark,涵盖其基本概念、安装配置、编程模型及实际应用。Spark 是一个高效的分布式计算平台,支持批处理、实时流处理、SQL 查询和机器学习等任务。通过详细的技术综述和示例代码,帮助读者快速掌握 Spark 的核心技能。
782 6
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
771 2
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
702 1
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
596 1
|
分布式计算 大数据 Apache
利用.NET进行大数据处理:Apache Spark与.NET for Apache Spark
【10月更文挑战第15天】随着大数据成为企业决策和技术创新的关键驱动力,Apache Spark作为高效的大数据处理引擎,广受青睐。然而,.NET开发者面临使用Spark的门槛。本文介绍.NET for Apache Spark,展示如何通过C#和F#等.NET语言,结合Spark的强大功能进行大数据处理,简化开发流程并提升效率。示例代码演示了读取CSV文件及统计分析的基本操作,突显了.NET for Apache Spark的易用性和强大功能。
546 1
|
消息中间件 分布式计算 Kafka
大数据平台的毕业设计02:Spark与实时计算
大数据平台的毕业设计02:Spark与实时计算
419 0

推荐镜像

更多