Apache Spark

来自站长百科
跳转至: 导航、​ 搜索

Apache Spark 是一个开源大数据处理框架,旨在提供快速、通用和易用的数据处理功能。Spark 是一种与Apache Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

概述[ ]

Apache Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。

功能特点[ ]

1、速度快:Apache Spark支持内存计算,并且通过有向无环图(DAG)执行引擎支持无环数据流,据官方称,其在内存中的运算速度比Hadoop的MapReduce快100倍,在硬盘中要快10倍。与MapReduce相比,Spark处理数据时具有两个显著不同之处:首先,它能够将中间处理结果数据存储到内存中;其次,Spark提供了丰富的算子(API),使得复杂任务可以在一个Spark程序中完成。

2、易用性好:截至2023年4月13日,Spark的版本已更新至3.4.0,支持Java、Scala、Python、R和SQL等多种语言。为了满足Spark 2.x企业级应用场景的需求,Spark仍持续更新Spark 2.x版本。

3、通用性强:除了核心功能外,Spark还提供了诸如Spark SQL、Spark Streaming、MLlib和GraphX等多个工具库,用户可以在一个应用中无缝地使用这些工具库。

4、随处运行:Spark支持多种运行方式,包括在YARN和Mesos上支持独立集群运行模式,同时也能够运行在云环境中,如Kubernetes(Spark 2.3开始支持)。

5、批处理/流数据:用户可以使用首选语言(Python、SQL、Scala、Java或R)以批处理和实时流的方式统一进行数据处理。

6、SQL分析:Spark能够执行快速、分布式的ANSI SQL查询,可用于仪表板和即席报告,其运行速度比大多数数据仓库更快。

7、大规模数据科学:用户可以对PB级数据执行探索性数据分析(EDA),而无需进行缩减采样。

8、机器学习:用户可以在笔记本电脑上训练机器学习算法,并使用相同的代码扩展到数千台计算机的容错群集。

生态结构[ ]

  • Spark Core:这是Spark的基础组件,包含了Spark的基本功能,如任务调度、内存管理、容错机制等。Spark Core内部采用了弹性分布式数据集(RDD)作为数据抽象,并提供丰富的API来创建和操作这些RDD。
  • Spark SQL:这是一个用于处理结构化数据的组件,允许用户直接查询Hive、HBase等多种外部数据源中的数据。Spark SQL可以统一处理关系表,使开发人员能够使用SQL命令来完成复杂的数据查询操作,而无需编写MapReduce程序。
  • Spark Streaming:这是Spark提供的流式计算框架,支持高吞吐量、可容错的实时流式数据处理。它的核心原理是将流式数据分解成一系列微小的批处理作业,然后使用Spark Core进行快速处理。
  • MLlib:这是Spark提供的机器学习库,包括了多种常用的机器学习算法,如分类、回归、聚类、协同过滤等。它还提供了模型评估、数据导入等功能,使得开发人员只需具备一定的机器学习知识就能进行相关开发。
  • GraphX:这是Spark提供的分布式图处理框架,它具有丰富的图计算和图挖掘算法的API接口以及功能和运算符,极大地方便了对分布式图的处理,使得可以在海量数据上运行复杂的图算法。

部署模式[ ]

  • 本地模式(单机模式):通过一个独立的进程和多个内部线程模拟整个Spark运行时环境。本地模式主要用于本地程序开发和代码验证,不适合用于生产环境。
  • 独立集群模式(集群模式):各个Spark角色以独立进程形式存在,组成Spark集群环境。在这种模式下,Spark独立地管理集群的资源。
  • Spark on YARN模式(集群模式):各个Spark角色在YARN的容器内运行,组成Spark集群环境。在这种模式下,Spark不再管理集群资源,而是由YARN进行资源管理。
  • Kubernetes模式(容器集群):各个Spark角色在Kubernetes的容器内运行,形成Spark集群环境。
  • 云服务模式(运行在云平台上):商业版本的Databricks运行在谷歌云、微软云和亚马逊云等云平台上,提供云端的Spark服务。

相关条目[ ]