一.spark是什么
Spark是一个用来实现快速而通用的集群计算平台,一个围绕速度、易用性和复杂分析构建的大数据处理框架。可以理解spark是用来替代Hadoop中MapReduce而不是替代整个Hadoop,实际上在大部分应用中Spark运行在Hadoop的HDFS文件系统当中。但是Spark比MapReduce更高效。它可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍。
Spark让开发者可以快速的用Java、Scala或Python编写程序。它本身自带了一个超过80个高阶操作符集合。而且还可以用它在shell中以交互式地查询数据。
Spark设计为可以高效地在一个计算节点到数千个节点之间伸缩计算,为了满足这种灵活性,Spark支持在各个集群管理器上运行,包括Handoop YARN、Apache Mesos,以及Spark自带的一个简易调度器。
二.spark生态系统
Spark生态系统包含多个紧密集成的组件。Spark的核心是一个对由很多计算任务组成的、运行在多个工作机器或者是一个计算集群上的应用进行调度、分发以及监控的计算引擎。
- Spark Core
Spark Core实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(resilient distributed dataset,简称RDD)的API定义。RDD表示分布在多个计算节点上可以并行操作的元素集合,是Spark主要的编程对象。
- Spark SQL
Spark SQL是Spark用来操作结构化数据的程序包。Spark SQL可以通过JDBC API将Spark数据集暴露出去,而且还可以用传统的BI和可视化工具在Spark数据上执行类似SQL的查询。用户还可以用Spark SQL对不同格式的数据(如JSON,Parquet以及数据库等)执行ETL,将其转化,然后暴露给特定的查询。
- Spark Streaming
Spark Streaming是Spark提供的对实时数据进行流式计算的组件。比如生产环境中的网页服务器日志,或是网络服务中用户提交的状态更新组成的消息队列,都是数据流
- MLlib
Spark中提供常见的机器学习(ML)功能的程序库
- GraphX
GraphX是用于图计算和并行图计算的新的(alpha)Spark API。通过引入弹性分布式属性图(Resilient Distributed Property Graph),一种顶点和边都带有属性的有向多
重图,扩展了Spark RDD。为了支持图计算,GraphX暴露了一个基础操作符集合(如subgraph,joinVertices和aggregateMessages)和一个经过优化的Pregel API变体。此外,
GraphX还包括一个持续增长的用于简化图分析任务的图算法和构建器集合。
参考:
用Apache Spark进行大数据处理