spark总结

1.Spark的特点:

  • 高可伸缩性
  • 高容错
  • 基于内存计算
  • 支持多种语言:java,scala,python,R
  • 高质量的算法,比MapReduce快100倍
  • 多种调度引擎:可以运行于YARN,Mesos,standalone 等。

2.spark的提供的功能 以及应用场景

spark功能模块

应用场景

RDD

离线数据处理

Spark SQL, DataFrames and Datasets

结构化的关系数据运算

Structured Streaming

结构化流:统一批处理与流处理计算的工具

Spark Streaming

流数据实时计算

Machine Learning (MLlib)

机器学习

GraphX

图数据计算

SparkR

R on Spark

3.spark重大版本更新


spark2.3.0的重大更新:

1、支持第四种调度引擎 Kubernetes clusters。
2、Structured Streaming 引入了低延迟的连续处理(continuous processing);

spark2.0.0的重大更新:

1、SparkSession:这是一个新入口,取代了原本的SQLContext与HiveContext
2、基于DataFrame的机器学习API将作为主ML API出现;基于RDD的API进入维护模式。
3、spark 自己的标准SQL(Ansi-sql sql-2003标准)解析引擎,同时兼容hive-SQL. 
4、数据框(DataFrame)/Dataset (数据集)API的统一。

spark1.6.X的重大更新:

1. 新增Dataset API
2. 使用堆外内存执行SQL,避免GC造成的瓶颈
3. 支持对非标准JSON文件的读操作
4. 支持基于文件的SQL查询。

4. spark-streaming,storm,Flink对比

  • 技术特性上的对比

对比项

** spark-streaming**

** storm**

flink

流模式

微批处理

行处理 / 或者微批处理

行处理/或者微批处理

可靠性

Exactly-Once

At-Least-Once

Exactly-Once

延迟

秒级

毫秒级

毫秒级

吞吐量

比较高

非常高

非常高

容错机制

Recourd ACKs机制

基于RDD的 CheckPoint

CheckPoint

是否有状态




支持SQL

支持

不支持

支持

与Hadoop兼容性

支持HDFS、HBase等数据源

不支持

支持HDFS、HBase等数据源

storm 的任务编程组件是: Topology任务,由spout,bolt组成的DAG 拓扑结构。
spark-streaming任务变成组件:DStream 数据流的个各种处理方法。

spark-streaming 和 Flink 是将Flink Job 转换成 JobGraph -> ExecutionGraph.

  • 平台架构上的对比

对比项

spark-streaming

storm

flink

系统角色

driver,executor

Numbius,supervisor,worker

Client,JobManager,Taskmanager

应用名称

application

Topology

application

组件接口

DataStream

DStream

spout,bolt

部署方式

YARN,standalone

numbius-supervisor

YARN, standalone

结论:

  1. 由于spark 和Flink都可以基于YARN的方式部署,共用了hadoop生态的HDFS,YARN组件,降低了基础平台的运维工作量。同时Flink的毫秒级延迟实时计算能力和spark秒级延迟实时计算能力是一种相互补充。Flink和spark形成互补且竞争关系。
  2. Flink 在 Mlib,SQL 支持方面都有支持,功能方面和spark竞争关系,都是朝着生态方向发展。不过都可以基于相同的底层平台,大家切换和相互替换的成本都不高。
  3. 虽然storm的也可以基于yarn部署,但这不是其主流使用场景,所以在大数据基础平台方案中Flink可以最终替换的storm平台。