Apache Spark™是用于大规模数据处理的统一分析引擎
Apache Spark是一个开源的、强大的分布式查询和处理引擎。它提供MapReduce的灵活性和可扩展性,但速度明显更高:官方介绍,当数据存储在内存中时,它比Apache Hadoop快100倍,访问磁盘时高达10倍。
Apache Spark允许用户读取、转换、聚合数据,还可以轻松地训练和部署复杂的统计模型。Java、Scala、Python、R和SQL都可以访问 Spark API。
一、架构及生态
1、生态系统主要组件:
注:包括SQL和DataFrames,MLlib机器学习, GraphX和Streaming。sparkcore可以用来做离线处理,sparksql可以用来交互式查询,sparkstreaming用来进行实时处理,MLib用来进行机器学习,GraphX进行图计算。您可以在同一应用程序中无缝组合这些库。
(1)Spark Core:
包含Spark的基本功能(任务调度、内存管理、故障恢复以及存储系统的交互);尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的。
(2)Spark SQL:
提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作。 用于分布式结构化数据的SQL查询与分析。
(3)Spark Streaming:
对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据。 用于处理流数据的分布式流处理框架,严格意义上说是一个准实时处理系统。可以面向海量数据实现高吞吐量、高容错的实时计算。
(