Spark
Apache Spark 是一个快如闪电的统一分析引擎(并没有提供数据存储的方案)Lightning-fast unified analytics engine
快如闪电(相比于传统的大数据处理方案MapReduce):
- Spark将一个复杂的计算任务Job拆分为多个细粒度的Stage,每一个Stage都可以分布式并行计算;对于MapReduce初代的计算引擎,它将任务拆分了粗粒度的MapTask和ReduceTask,对于特别复杂的计算任务,我们需要将多个MapReduce Job串联起来;
- Spark内存式的计算引擎;对于MapReduce基于磁盘的计算引擎;
- Spark中间计算结果支持缓存的,极大提高计算效率,这种缓存可以应用于结果复用和故障恢复;对于MapReduce中间结果需要溢写在磁盘;
统一(提供了大数据处理的所有主流方案):
- 批处理(Batch Processing): Spark RDD,代替了Hadoop MapReduce
- 流处理(Streams Processing):Spark Streaming和Spark Structured Streaming,代替了Kafka Streams、Storm
- 交互式查询(SQL):Spark SQL,代替了Hive
- 机器学习(Machine Learning): Spark MLLib,代替了Mahout
- 图形计算(Graph):Spark Graphx,基于图形存储的NoSQL数据库的计算支持(Neo4J)
- Spark生态库: 解决其它大数据处理问题
特点
- 高效:实现高性能的批和流计算支持,使用了非常先进的DAG Scheduler(有向无环图调度器)是一种查询优化和物理执行引擎
- 易用:提供了超过80个高阶函数简化了分布式并行应用的开发,并且支持多种编程语言(Java、Python、Scala、R)
- 通用:集成了多种数据处理方案,如SQL、Batch、Streaming、ML、Graph;
- 运行环境:支持多种资源管理调度系统,如YARN、Apache Mesos、K8S、Standalone等;