Apache Spark是用于大数据处理的统一分析引擎。
1.Spark的优势
a)速度
跟hadoop的mapreduce相比,他的速度是mapreduce的100倍以上。
Spark通过使用最先进的DAG调度器、查询优化器和物理执行引擎实现了在批处理和流式计算两方面
的高性能。
b)易用性
能使用Java、Scala、Python、R和SQL脚本等语言快速编写出应用程序
spark提供了80个以上的高级运算方法来帮助更方便快捷的构建应用程序,可以从Scala、Python、R和SQL shell交互式地使用他们。
c)通用型
结合了SQL、流式计算和复杂计算
Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些可以在同一个应用中无缝使用。
d)高兼容性
Spark可以基于Hadoop,Apache Mesos运行,也可以独立在云上运行。它可以访问不同的数据源。
Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,Spark也可以不依赖于第三方的资源管理和调度器,它实现了Standalone作为其内置的资源管理和调度框架。并且Spark可以从HDFS、HBase和Cassandra(一款NoSQL数据库)以及上百个其他数据源中读取数据。
2.Spark的组件
a)Spark SQL:Spark SQL是Apache spark用来处理结构化数据的模块。sparksql允许你使用SQL或者DataFrame的API在spark中查询结构化的数据,适用于scala、java、python或者R语言。
b)Spark Streaming:Spark Streaming用于处理流式计算问题。能够和Spark的其他模块无缝集成。
c)MLlib(machine learning):MLlib是Spark的机器学习(ML)库。旨在简化机器学习的工程实践工作,并方便扩展到更大规模。MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。
d)GraphX(graph):Spark GraphX是一个分布式图处理框架,它是基于Spark平台提供对图计算和图挖掘简洁易用的而丰富的接口,极大的方便了对分布式图处理的需求。
众所周知·,社交网络中人与人之间有很多关系链,例如Twitter、Facebook、微博和微信等,这些都是大数据产生的地方都需要图计算,现在的图处理基本都是分布式的图处理,而并非单机处理。Spark GraphX由于底层是基于Spark来处理的,所以天然就是一个分布式的图处理系统。
e)Third-Party Projects:其他的第三方集成组件