欢迎关注「数人之道」公众号
获取更多数据知识、干货、资讯!
延伸阅读:
Spark 是 UC Berkeley AMP Lab 开源的通用分布式并行计算框架,目前已成为 Apache 软件基金会的顶级开源项目。
基于以下原因,Spark 已经成为数据行业从业者(尤其是大数据领域)绕不开的必学技术栈中的一员:
- Spark 已经成为大数据领域中必备的计算引擎框架
- Spark 已经基本替代了传统的 MapReduce 离线计算框架和 Storm 流式实时计算框架
- Spark 正在数据科学、机器学习及 AI 等热门技术方向持续发力
下面对 Spark 的特性、对比 Hadoop 的优势、组成模块及运行原理等基础知识进行学习。
1.Spark 的特性
图1:Apache 官网描述的 Spark 特性
Apache 在改版后的 Spark 官网中用了四个单词描述 Spark 的特性:Simple. Fast. Scalable. Unified.
1.1.Simple(简单易用)
Spark 提供了丰富的高级运算操作,支持丰富的算子,并支持 Java、Python、Scala、R、SQL 等语言的 API,使用户可以快速构建不同的应用。
开发人员只需调用 Spark 封装好的 API 来实现即可,无需关注 Spark 的底层架构。
1.2.Fast(高效快速)
Spark 将处理的每个任务都构造成一个DAG(Directed Acyclic Graph, 有向无环图)来执行,实现原理是基于RDD(Resilient Distributed Dataset, 弹性分布式数据集)在内存中对数据进行迭代计算,以实现批量和流式数据的高性能快速计算处理。
之前的官方数据表明:如果计算数据是从磁盘中读取,Spark 计算速度是 MapReduce 的 10 倍以上;如果计算数据是从内存中读取,Spark 计算速度则是 MapReduce 的 100 倍以上。
目前的官网已经撤下这一数据,估计是统计的场景和数据存在偏颇,不够全面。但这也从侧面说明,Spark 拥有出色的计算性能已经是深入人心的不争事实,无需再用数据来佐证。
1.3.Scalable(可融合性)
Spark 可以非常方便地与其他的开源产品进行融合。比如:Spark 可以使用 Hadoop 的 YARN 和 Apache Mesos 作为它的资源管理和调度器;可以处理所有 Hadoop 支持的数据,包括 HDFS、HBase 和 Cassandra 等。
这对于已经部署 Hadoop 集群的用户特别重要,因为不需要做任何数据迁移就可以使用 Spark 强大的计算处理能力。
Spark 也可以不依赖于第三方的资源管理和调度器,它实现了 Standalone 作为其内置的资源管理和调度框架,这样进一步降低了 Spark 的使用门槛。
用户可以根据现有的大数据平台灵活地选择运行模式,使得所有人都可以非常容易地部署和使用 Spark。
Spark 还提供了在 EC2 上部署 Standalone 的 Spark 集群的工具。
此外,由于 Spark 是使用 Scala 这种函数式编程语言开发的,因此 Spark 也继承了 Scala 的可扩展性,可对类型数据结构、控制体结构等进行自定义的扩展。
1.4.Unified(统一通用)
大数据处理的传统方案需要维护多个平台,比如,离线任务是放在 Hadoop MapRedue 上运行,实时流计算任务是放在 Storm 上运行。
而Spark 提供了一站式的统一解决方案,可用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)等。这些不同类型的处理都可以在同一个应用中无缝组合使用。
Spark 统一的解决方案非常具有吸引力,毕竟任何公司都想用统一的平台去处理遇到的问题,减少开发和维护的人力成本和部署平台的物理成本。
2.Spark 的优势
这里说的 Spark 的优势,是对比 Hadoop 的 MapReduce 而言,因此,我们需要先看看 M