《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

相关文章
|
1月前
|
分布式计算 大数据 数据处理
Apache Spark:提升大规模数据处理效率的秘籍
【4月更文挑战第7天】本文介绍了Apache Spark的大数据处理优势和核心特性,包括内存计算、RDD、一站式解决方案。分享了Spark实战技巧,如选择部署模式、优化作业执行流程、管理内存与磁盘、Spark SQL优化及监控调优工具的使用。通过这些秘籍,可以提升大规模数据处理效率,发挥Spark在实际项目中的潜力。
57 0
|
5天前
|
分布式计算 大数据 数据处理
Apache Spark在大数据处理中的应用
Apache Spark是大数据处理的热门工具,由AMPLab开发并捐赠给Apache软件基金会。它以内存计算和优化的执行引擎著称,提供比Hadoop更快的处理速度,支持批处理、交互式查询、流处理和机器学习。Spark架构包括Driver、Master、Worker Node和Executor,核心组件有RDD、DataFrame、Dataset、Spark SQL、Spark Streaming、MLlib和GraphX。文章通过代码示例展示了Spark在批处理、交互式查询和实时数据处理中的应用,并讨论了其优势(高性能、易用性、通用性和集成性)和挑战。【6月更文挑战第11天】
26 6
|
5天前
|
消息中间件 分布式计算 关系型数据库
使用Apache Spark从MySQL到Kafka再到HDFS的数据转移
使用Apache Spark从MySQL到Kafka再到HDFS的数据转移
|
14天前
|
存储 分布式计算 Hadoop
使用Apache Hadoop进行分布式计算的技术详解
【6月更文挑战第4天】Apache Hadoop是一个分布式系统框架,应对大数据处理需求。它包括HDFS(分布式文件系统)和MapReduce编程模型。Hadoop架构由HDFS、YARN(资源管理器)、MapReduce及通用库组成。通过环境搭建、编写MapReduce程序,可实现分布式计算。例如,WordCount程序用于统计单词频率。优化HDFS和MapReduce性能,结合Hadoop生态系统工具,能提升整体效率。随着技术发展,Hadoop在大数据领域将持续发挥关键作用。
|
15天前
|
分布式计算 Spark 大数据
深入探究Apache Spark在大数据处理中的实践应用
【6月更文挑战第2天】Apache Spark是流行的开源大数据处理框架,以其内存计算速度和低延迟脱颖而出。本文涵盖Spark概述、核心组件(包括Spark Core、SQL、Streaming和MLlib)及其在数据预处理、批处理分析、交互式查询、实时处理和机器学习中的应用。通过理解Spark内部机制和实践应用,可提升大数据处理效率,发挥其在各行业的潜力。
|
18天前
|
存储 数据采集 分布式计算
大数据技术生态系统概述
【5月更文挑战第30天】大数据技术生态系统涵盖数据采集(Flume, Logstash, FileBeat, Sqoop, Datax, Canaal, Maxwell)、存储(HDFS, HBase, Kudu, Kafka)、资源管理(YARN, Kubernetes, Mesos)、计算(MapReduce, Spark, Storm, Flink)、分析(Hive, Impala, Kylin, Clickhouse, Druid, Drois)、任务调度(Azkaban, Oozie, DolphinScheduler)及底层技术(Zookeeper)。
49 1
|
27天前
|
机器学习/深度学习 算法 数据挖掘
【大数据分析与挖掘技术】概述
【大数据分析与挖掘技术】概述
16 1
|
28天前
|
存储 分布式计算 大数据
大数据技术概述
大数据技术概述
51 3
|
1月前
|
分布式计算 资源调度 Hadoop
Apache Hadoop入门指南:搭建分布式大数据处理平台
【4月更文挑战第6天】本文介绍了Apache Hadoop在大数据处理中的关键作用,并引导初学者了解Hadoop的基本概念、核心组件(HDFS、YARN、MapReduce)及如何搭建分布式环境。通过配置Hadoop、格式化HDFS、启动服务和验证环境,学习者可掌握基本操作。此外,文章还提及了开发MapReduce程序、学习Hadoop生态系统和性能调优的重要性,旨在为读者提供Hadoop入门指导,助其踏入大数据处理的旅程。
487 0
|
1月前
|
资源调度 分布式计算 Hadoop
Apache Hadoop YARN基本架构
【2月更文挑战第24天】

推荐镜像

更多