What Is Apache Spark?

  • 速度方面:Spark扩展了MapReduce模型,可以更高效地提供多种类型的计算,包括交互式查询和流处理。Spark为speed所提供的最大能力就是内存计算
  • 通用性方面:Spark被设计以支持多种工作负载,包括批应用,迭代算法,交互式查询和流。

A Unified Stack

  • Spark项目包含很多紧密集成的组件

Spark Core

  • 包含Spark的基础功能,包括任务调度、内存管理、容错、与存储系统交互等组件
  • 定义了Spark的主要编程抽象--RDD

Spark SQL

  • Spark‘s package for working with structured data --> 用于处理结构化数据
  • 允许通过SQL、HQL查询数据,支出多种数据源:Hive tables、Parquet以及JSON
  • Spark SQL通过RDD操作可以允许开发者将SQL查询与可编程的数据操作混合

Spark Streaming

  • enables processing of live streams of data
  • 数据流的例子有:web server产生的logfiles、web service产生的查询信息等 

MLib

  • a library containing common machine learning functionality
  • 提供了多种机器学习算法,包括分类、回归、聚类、协同过滤以及模型验证和数据导入等等

GraphX

  • a library for manipulating graphs and performing graph-parallel computations
  • 其API提供了创建带有任意属性的有向图的功能,以及对图的多种操作

Cluster Managers

  • Spark被设计为可以高效地扩展到上千台计算节点
  • 为了实现这种可扩展性并且最大化灵活性,Spark可以允许在很多种cluster managers之上,包括Hadoop YARN, Apache Mesos以及Spark内包含的Standalone Scheduler