2026-02-04 07:48:13
Apache Spark是一种快速的集群计算技术,专为快速计算而设计,它扩展了Hadoop MapReduce模型,支持多种计算类型,具有高效、灵活、易扩展等特点。
简介
起源与定位:Spark由Apache Software Foundation引入,旨在加速Hadoop计算软件过程,但它并非Hadoop的修改版本,不严格依赖Hadoop,拥有自己的集群管理能力,Hadoop只是其实现方式之一,Spark主要用Hadoop进行存储。
设计基础与目标:基于Hadoop MapReduce并扩展该模型,使其更有效用于交互式查询和流处理等多种计算类型。旨在涵盖批处理应用程序、迭代算法、交互式查询和流式处理等各种工作负载,减少维护单独工具的管理负担。
演变历程:2009年在加州大学伯克利分校的Matei Zaharia的AMPLab作为Hadoop子项目开发,2010年根据BSD许可开放,2013年捐赠给Apache软件基金会,2014年2月成为顶级Apache项目。
特性
速度
性能提升表现:在Hadoop集群中运行应用程序时,内存计算速度比Hadoop MapReduce快100倍,磁盘计算速度快10倍。
实现方式:通过减少磁盘读/写操作数量,将中间处理数据存储在内存中来实现性能提升。
支持多种语言
API提供情况:在Java、Scala或Python中提供内置API,方便用户使用不同语言编写应用程序。
交互式查询支持:提供80个高级操作符用于交互式查询。
高级分析
计算类型支持:不仅支持“Map”和“reduce”,还支持SQL查询、流数据、机器学习(ML)和图算法。
部署方式多样
Standalone:Spark独立部署在HDFS顶部,明确为HDFS分配空间,Spark和MapReduce并行运行以覆盖集群上所有Spark作业。
Hadoop Yarn:Spark运行在Yarn上,无需预安装或根访问,有助于将Spark集成到Hadoop生态系统或堆栈中,允许其他组件在堆栈顶部运行。
Spark in MapReduce (SIMR):用于在独立部署之外启动Spark作业,用户可启动Spark并使用其shell而无需管理访问。
组件
Apache Spark Core
地位与功能:是Spark平台的基础通用执行引擎,所有其他功能都基于此,在外部存储系统中提供内存计算和引用数据集。
Spark SQL
组件特点:是Spark Core之上的组件,引入SchemaRDD新数据抽象,为结构化和半结构化数据提供支持。
Spark Streaming
工作原理:利用Spark Core的快速调度功能执行流式分析,以小批量获取数据并对这些小批量数据执行RDD转换。
MLlib (Machine Learning Library)
框架性质与性能:是Spark之上的分布式机器学习框架,基于分布式内存的Spark架构。根据基准,针对交替最小二乘法(ALS)实现,比基于Hadoop磁盘的Apache Mahout版本快9倍(在Mahout获得Spark接口之前)。
GraphX
框架功能:是Spark上的分布式图形处理框架,提供用于表达图形计算的API,可通过Pregel抽象API为用户定义的图形建模,还为该抽象提供优化运行时。

