Apache Spark
Apache Spark是一个开源的分布式通用计算框架,具有(大部分)内存数据处理引擎,可以对大量的数据静态或者动态地进行ETL,分析,机器学习和图形处理,并为各种编程语言提供丰富简洁的高级APIs: Scala, Python, Java, R 以及SQL。
The Spark Platform你可以将Spark看做一个分布式的数据处理引擎,用于批量和流式模式,包括SQL查询,图形处理和机器学习。
和Hadoop基于磁盘的两阶段MapReduce计算引擎相比,Spark的多阶段内存计算引擎运行在内存中运行大部分计算,因此在大多数情况下能为某些应用程序提供更好的性能,例如迭代算法和交互式数据挖掘。
Spark也经常被称作集群计算引擎,或者简单地称作执行引擎。
Spark可用于执行复杂的多阶段应用程序,如机器学习算法和交互式即席查询。Spark为内存集群计算提供了一个高效的数据抽象,称作弹性分布式数据集(Resilient Distributed Dataset, RDD)
Spark主要用Scala编写,但它为开发者提供其他语言的API,如Java, Python和R。
如果你需要在低延迟的条件下处理大量的数据(传统的MR程序无法满足),那么Spark是一个可行的选择。
- 从任何数据源访问任何数据类型
- 巨大的存储和数据处理需求
Spark可以以本地集群的形式,在本机或者云端运行。它运行在Hadoop YARN, Apache Mesos, 独立部署模式或者云端部署(Amazon EC2或IBM Bluemix)之上。
在高层次上,Spark应用程序利用输入数据来创建RDDs, 将它们通过延迟转换函数(lazy transformations)转换为其他形式,最后执行操作(Actions)来收集或者存储数据,不难吧?
程序员使用指定语言的API以及转换和操作在RDD上工作,数据工程师使用更高级别的数据抽象如DataFrame,Pipelines APIs或者外部工具(连接到Spark)来工作,最后由管理员调节集群参数以部署Spark应用程序。
Spark的目标以更快的计算速度,更易于使用,更好的扩展性以及交互式分析等,成为一个通用的计算平台,让各种专门的应用程序框架运行在其之上。
为什么用Spark
- 易于上手
- 可用于多种类型的工作
- 利用最好的分布式批量数据处理(Hadoop)
- RDD - 分布式并行Scala数据集合
- 丰富的标准库
- 统一的开发和部署环境
- 交互式探索/探索性分析(Spark-Shell)
- 又称为即席查询(Ad-hoc queris)
- 数据集成工具,支持丰富的数据源
- 底层优化
- Spark's lazy evaluation gives plenty of opportunities to include low-level optimizations (so users have to know less to do more)
- 适用于低延迟交互式工作(low latency)
- ETL实现更简单
- 统一简洁的高层次API
- 近乎零磁盘使用以获得更好的性能
- 容错
网友评论