Spark概述及特点
Apache Spark™是一个统一的分析引擎进行大规模数据处理
- 快速
更快地运行工作负载100倍。
Apache Spark使用最先进的DAG调度器、查询优化器和物理执行引擎,实现了批处理和流数据的高性能。 - 易用
用Java、Scala、Python、R和SQL快速编写应用程序。
Spark提供了超过80个高级操作符,使得构建并行应用程序变得容易。可以在Scala、Python、R和SQL shell中交互式地使用它。 - 通用
结合SQL、流和复杂分析。
Spark支持一系列库,包括SQL和DataFrames、用于机器学习的MLlib、GraphX和Spark流。您可以在同一个应用程序中无缝地组合这些库。 - 到处运行
Spark运行在Hadoop、Apache Mesos、Kubernetes、独立或云中。它可以访问不同的数据源。
您可以使用Spark的独立集群模式在EC2上、Hadoop YARN上、Mesos上或Kubernetes上运行。访问HDFS、Alluxio、Apache Cassandra、Apache HBase、Apache Hive和其他数百个数据源中的数据。
Spark产生背景
MapReduce的局限性:
- 代码繁琐;
- 只能够支持map和reduce方法;
- 执行效率低下;
- 不适合迭代多次、交互式、流式的处理;
框架多样化:
- 批处理(离线):MapReduce、Hive、Pig
- 流式处理(实时): Storm、JStorm
- 交互式计算:Impala
Spark发展历史
Spark官网详细历史:
http://spark.apache.org/news/index.html
Spark对比Hadoop
Hadoop生态系统
Spark生态系统 BDAS(BDAS:Berkeley Data Analytics Stack)
Hadoop和Spark生态圈对比:
表格解读:
用例 | 其他 | Spark生态圈 |
---|---|---|
批处理 | Hadoop中的MapRdeuce(Java操作MR,Pig,Hive) | Spark RDDs(java/scala/python调用相关api即可) |
SQL查询 | Hadoop中的Hive | Spark SQL |
流处理/实时处理 | Storm,Kafka | Spark Streaming |
机器学习 | Mahout(已停止更新) | Spark ML Lib |
实时查询 | NoSQL(Hbase,Cassandra等等) | 无相关spark组件;但是Spark可以在NoSQL存储中查询数据(api调用即可) |
Hadoop对比Spark:
表格解读: