大数据分析平台解析:什么是Apache Spark?

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

Apache Spark是一款快速、灵活且对开发者友好的工具,也是大型SQL、批处理、流处理和机器学习的领先平台。

2009年,Apache Spark从美国U.C. Berkeley的 AMPLab为起步,现在已经成为世界上主要的大数据分布式处理框架之一。Spark可以以各种方式进行部署,为Java、Scala、Python和R编程语言提供本地绑定,并支持SQL、流数据、机器学习和图形处理。已经被银行、电信公司、游戏公司、政府以及苹果、Facebook、IBM和微软等领域的企业和科技巨头所使用。

Spark开箱即用,可以在独立的集群模式中运行,只需要在集群中的每台计算机上使用Apache Spark框架和JVM即可。然而,用户更希望利用资源或集群管理系统负责分配需求到员工手中。在企业中,这通常都是在Hadoop YARN上运行(这是Cloudera和Hortonworks发行版运行Spark作业的方式),但Apache Spark也可以在Apache Mesos上运行。同时,其在为Kubernetes添加本地支持方面也取得了进展。

 

大数据分析平台解析 啥是Apache Spark

 

如果正在处理一个托管解决方案,那么可以在Amazon EMR,Google Cloud Dataproc和Microsoft Azure HDInsight中找到Apache Spark。拥有Apache Spark创始人的Databricks公司,也提供Databricks统一分析平台。这是一个全面的托管服务,提供Apache Spark集群、流支持、集成的基于Web的notebook开发,以及在标准Apache Spark发行版中优化的云I / O性能.

Spark VS Hadoop

目前,大多数Hadoop发行版中都包含了Spark。但是由于Spark本身的两大优势,使Spark在处理大数据时已经成为首选框架,超越了Hadoop 引入MapReduce范例。

第一个优势是速度。Spark的内存数据引擎在某些情况下,可以执行比MapReduce快一百倍的任务,特别是与需要在stage之间将状态写回到磁盘的多级作业相比。即使Apache Spark的作业数据不能完全包含在内存中,但也比MapReduce快10倍左右。

第二个优势是交互友好的Spark API。与Spark加速一样重要的是,用户认为Spark API的友好性更为重要。

Spark核心

与MapReduce和其他Apache Hadoop组件相比,Apache Spark API对开发人员非常友好,在简单的方法调用后,隐藏了分布式处理引擎的许多复杂性。典型的例子是,几乎50行MapReduce代码在文档中计算单词的数量在可以减少到只有几行代码(这里显示在Scala中):

 

大数据分析平台解析 啥是Apache Spark

 

通过提供与Python和R等数据分析流行语言的绑定,以及对企业更友好的Java和Scala的绑定,Apache Spark使应用程序开发人员和数据科学家以可访问的方式利用其可扩展性和速度。

Spark RDD

Apache Spark的核心是弹性分布式数据集(Resilient Distributed Dataset,RDD),是一中抽象编程,它是跨计算集群拆分的不可变对象的集合。在RDD上的操作也可以跨集群进行,并在并行处理过程中执行,从而实现快速可扩展的并行处理。

RDD可以通过简单的文本文件、SQL数据库、NoSQL存储(如Cassandra和MongoDB)以及Amazon S3存储等来创建。Spark Core API的大部分构建在RDD概念之上,支持传统的映射,还为连接数据集、过滤、采样和聚合提供了内置支持。

Spark通过结合驱动程序核心进程,以分布式方式运行,该进程将Spark应用程序分解成任务,并将其分发到工作的执行程序进程中,这些执行程序可以根据应用程序的需要进行扩展和缩减。

Spark SQL

Spark SQL最初被称为“Shark”,现在对Apache Spark项目变得越来越重要。它可能是当今开发人员在创建应用程序时最常用的界面,Spark SQL专注于结构化数据处理,使用从R和Python(在Pandas中)借用的数据框架方法。正如它的名字,Spark SQL还提供了一个SQL2003兼容接口来查询数据,将Apache Spark的强大功能带给分析师和开发人员。

除了标准的SQL支持,Spark SQL还提供了一个标准接口,用于读取和写入其他数据存储,包括JSON、HDFS、Apache Hive、JDBC、Apache ORC和Apache Parquet,所有这些都支持开箱即用。例如Apache Cassandra、MongoDB、Apache HBase以及其他许多受欢迎的数据库,可以通过从Spark Packages生态系统中提取单独的连接器来使用。

从dataframe中选择列:

 

大数据分析平台解析 啥是Apache Spark

 

使用SQL接口,将dataframe注册为临时表,之后对它发出SQL查询:

 

大数据分析平台解析 啥是Apache Spark

 

在后台,Apache Spark使用名为Catalyst的查询优化器来检查数据和查询,以便为数据局部性和计算提供高效的查询计划,在整个集群中执行所需的计算。在Apache Spark 2.x中,dataframes和datasets的Spark SQL接口(实质上是一个类型化的数据框,可以在编译时检查正确性,并在运行时利用进一步的内存和计算优化)是推荐的开发方法。RDD接口仍然可用,但只有在无法在Spark SQL范例中封装的情况下才推荐使用。

Spark MLlib

Apache Spark还捆绑了一些用于将机器学习和图形分析技术应用于数据的库。Spark MLlib包含一个用于创建机器学习管道的框架,允许在任何结构化数据集上轻松实现特征提取、选择和转换。MLLib采用分布式实现的集群和分类算法,如k均值聚类和随机森林,可轻松地在自定义管道中交换。模型可以由Apache Spark的数据科学家使用R或Python进行培训,MLLib保存,然后导入到基于Java或Scala的管道中供生产使用。

虽然Spark MLlib涵盖了基本的机器学习,包括分类、回归、聚类和过滤,但它不包含建模和训练深度神经网络的功能。

Spark GraphX

Spark GraphX提供了一系列用于处理图形结构的分布式算法,包括Google的PageRank的实现。这些算法使用Spark Core的RDD方法来建模数据; GraphFrames包允许在dataframe上做图形操作,包括利用Catalyst优化器进行图查询。

Spark Streaming

Spark Streaming是Apache Spark的早期添加物,它帮助在需要实时或接近实时处理的环境中获得牵引力。以前,Apache Hadoop领域的批处理和流处理是分开的。可以为批处理需求编写MapReduce代码,并使用像Apache Storm这样的实时流媒体。这显然导致不同的代码库需要保持同步的应用程序域,尽管是基于完全不同的框架,需要不同的资源。

Spark Streaming将Apache Spark的批处理概念扩展到流,通过将流分解为连续的一系列微格式,然后使用Apache Spark API进行操作。通过这种方式,批处理和流操作中的代码可以共享(大部分)相同的代码,运行在同一个框架上,从而减少开发人员和操作员的开销。

对Spark Streaming方法的一个批评是:在需要对传入数据进行低延迟响应的情况下,microbatching可能无法与Apache Storm、Apache Flink和Apache Apex等其他支持流的框架的性能相匹配,所有这些都使用纯粹的流媒体方法而不是微型媒体。

结构化流媒体

结构化流式处理(在Spark 2.x中添加)将影响Spark SQL对Spark API进行Spark流式处理,结果将是更高级别的API,更易于编写应用程序。在结构化流的情况下,高级API本质上允许开发人员创建无限流式数据框和数据集。它还解决了用户在早期框架中遇到的一些非常真实的痛点,尤其是在处理事件时间聚合和延迟传递消息方面。结构化流的所有查询都通过Catalyst查询优化器,甚至可以交互方式运行,允许用户对实时流数据执行SQL查询。

结构化数据流在Apache Spark中仍然是一个新部分,在Spark 2.2发行版中已经被标记为生产就绪。但是,结构化流是面向平台的流媒体应用程序的未来,因此如果要构建新的流式传输应用程序,应该使用结构化流式处理。传统的Spark Streaming API将继续得到支持,但是该项目建议移植到结构化流式处理,因为新方法使得编写和维护流代码更容易。

Apache Spark的下一步是什么?

尽管结构化流式传输为Spark Streaming提供了高级改进,但它目前依赖于处理流式数据的相同的微处理方案。Apache Spark团队正在努力为平台带来连续的流媒体处理,这应该能够解决许多处理低延迟响应的问题(声称大约1ms,这将会非常令人印象深刻)。

除此之外,Apache Spark还将通过深度学习管道增加对深度学习的支持。使用MLlib的现有管道结构,将能够在几行代码中构建分类器,并自定义Tensorflow图形或Keras模型应用于传入数据。这些图表和模型甚至可以注册为自定义的Spark SQL UDF(用户定义的函数),以便深度学习模型可以作为SQL语句的一部分应用于数据。


本文转自d1net(转载)

相关文章
|
12天前
|
分布式计算 Hadoop 大数据
Jupyter 在大数据分析中的角色
【8月更文第29天】Jupyter Notebook 提供了一个交互式的开发环境,它不仅适用于 Python 编程语言,还能够支持其他语言,包括 Scala 和 R 等。这种多语言的支持使得 Jupyter 成为大数据分析领域中非常有价值的工具,特别是在与 Apache Spark 和 Hadoop 等大数据框架集成方面。本文将探讨 Jupyter 如何支持这些大数据框架进行高效的数据处理和分析,并提供具体的代码示例。
21 0
|
5天前
|
存储 大数据 数据挖掘
【数据新纪元】Apache Doris:重塑实时分析性能,解锁大数据处理新速度,引爆数据价值潜能!
【9月更文挑战第5天】Apache Doris以其卓越的性能、灵活的架构和高效的数据处理能力,正在重塑实时分析的性能极限,解锁大数据处理的新速度,引爆数据价值的无限潜能。在未来的发展中,我们有理由相信Apache Doris将继续引领数据处理的潮流,为企业提供更快速、更准确、更智能的数据洞察和决策支持。让我们携手并进,共同探索数据新纪元的无限可能!
41 11
|
9天前
|
机器学习/深度学习 分布式计算 大数据
Spark 适合解决多种类型的大数据处理问题
【9月更文挑战第1天】Spark 适合解决多种类型的大数据处理问题
23 3
|
13天前
|
分布式计算 大数据 Apache
跨越界限:当.NET遇上Apache Spark,大数据世界的新篇章如何谱写?
【8月更文挑战第28天】随着信息时代的发展,大数据已成为推动企业决策、科研与技术创新的关键力量。Apache Spark凭借其卓越的分布式计算能力和多功能数据处理特性,在大数据领域占据重要地位。然而,对于.NET开发者而言,如何在Spark生态中发挥自身优势成为一个新课题。为此,微软与Apache Spark社区共同推出了.NET for Apache Spark,使开发者能用C#、F#等语言编写Spark应用,不仅保留了Spark的强大功能,还融合了.NET的强类型系统、丰富库支持及良好跨平台能力,极大地降低了学习门槛并拓展了.NET的应用范围。
31 3
|
13天前
|
分布式计算 数据可视化 大数据
Vaex :突破pandas,快速分析100GB大数据集
Vaex :突破pandas,快速分析100GB大数据集
|
12天前
|
大数据 机器人 数据挖掘
这个云ETL工具配合Python轻松实现大数据集分析,附案例
这个云ETL工具配合Python轻松实现大数据集分析,附案例
|
12天前
|
数据采集 人工智能 安全
AI大数据处理与分析实战--体育问卷分析
本文是关于使用AI进行大数据处理与分析的实战案例,详细记录了对深圳市义务教育阶段学校“每天一节体育课”网络问卷的分析过程,包括数据概览、交互Prompt、代码处理、年级和学校维度的深入分析,以及通过AI工具辅助得出的分析结果和结论。
|
10天前
|
Java Spring API
Spring框架与GraphQL的史诗级碰撞:颠覆传统,重塑API开发的未来传奇!
【8月更文挑战第31天】《Spring框架与GraphQL:构建现代API》介绍了如何结合Spring框架与GraphQL构建高效、灵活的API。首先通过引入`spring-boot-starter-data-graphql`等依赖支持GraphQL,然后定义查询和类型,利用`@GraphQLQuery`等注解实现具体功能。Spring的依赖注入和事务管理进一步增强了GraphQL服务的能力。示例展示了从查询到突变的具体实现,证明了Spring与GraphQL结合的强大潜力,适合现代API设计与开发。
24 0
|
10天前
|
存储 分布式计算 数据处理
MaxCompute 的成本效益分析与优化策略
【8月更文第31天】随着云计算技术的发展,越来越多的企业选择将数据处理和分析任务迁移到云端。阿里云的 MaxCompute 是一款专为海量数据设计的大规模数据仓库平台,它不仅提供了强大的数据处理能力,还简化了数据管理的工作流程。然而,在享受这些便利的同时,企业也需要考虑如何有效地控制成本,确保资源得到最优利用。本文将探讨如何评估 MaxCompute 的使用成本,并提出一些优化策略以降低费用,提高资源利用率。
12 0
|
2月前
|
机器学习/深度学习 分布式计算 算法
Spark快速大数据分析PDF下载读书分享推荐
《Spark快速大数据分析》适合初学者,聚焦Spark实用技巧,同时深入核心概念。作者团队来自Databricks,书中详述Spark 3.0新特性,结合机器学习展示大数据分析。Spark是大数据分析的首选工具,本书助你驾驭这一利器。[PDF下载链接][1]。 ![Spark Book Cover][2] [1]: https://zhangfeidezhu.com/?p=345 [2]: https://i-blog.csdnimg.cn/direct/6b851489ad1944548602766ea9d62136.png#pic_center
106 1
Spark快速大数据分析PDF下载读书分享推荐

热门文章

最新文章

推荐镜像

更多
下一篇
DDNS