Spark简介
Spark是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。git
主要特色
- 运行速度快:DAG(Directed Acyclic Graph,有向无环图)执行引擎
- 容易使用:多语言编程支持;提供简洁的API;Spark shell实时交互式编程反馈
- 通用性:技术栈完整,包括SQL查询、流式计算、机器学习和图算法组件
- 运行模式多样:可运行在Hadoop、独立的集群模式、云环境中,并可访问HDFS、Cassandra、HBase、Hive等多种数据源
对比Hadoop
Hadoop的MapReduce计算模型延迟太高,磁盘IO开销大,没法胜任实时快速计算的需求,于是只适用于离线批处理的应用场景。
相比于MapReduce,Spark主要具备以下优势:github
- Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操做,还提供了多种数据集操做类型,编程模型比MapReduce更灵活;
- Spark提供了内存计算,中间结果直接放到内存中,带来了更高的迭代运算效率,减小了IO开销;
- Spark基于DAG的任务调度执行机制,要优于MapReduce的迭代执行机制。
但Spark并不能彻底替代Hadoop,主要用于替代Hadoop中的MapReduce计算模型。
Hadoop可使用廉价的、异构的机器来作分布式存储与计算,而Spark对内存与CPU有必定的要求。
Spark能够借助于YARN实现资源调度管理,借助于HDFS实现分布式存储。算法
Spark生态系统
在实际应用中,大数据处理主要包括如下三个类型:shell
- 复杂的批量数据处理:时间跨度一般在数十分钟到数小时之间;--- Hadoop MapReduce
- 基于历史数据的交互式查询:时间跨度一般在数十秒到数分钟之间;--- Impala、Hive
- 基于实时数据流的数据处理:时间跨度一般在数百毫秒到数秒之间。--- 流计算框架Storm
Spark知足不一样应用场景:apache
- Spark能够部署在资源管理器YARN之上,同时支持批处理、交互式查询和流数据处理。
- Spark生态系统兼容Hadoop生态系统,现有Hadoop应用程序能够容易地迁移到Spark系统中。
Spark生态系统主要组件