Apache Spark 概述
2019-03-18
Spark 是一个统一计算引擎,也是一系列可以在计算机集群上并行处理数据的类库。
Spark 设计哲学
Spark 的重点目标在于提供了一个编写大数据应用的统一平台。统一在于,Spark 被设计用于支持大规模数据集的分析,通过同一个计算引擎执行。
Spark 的应用
Spark 应用由 一个 driver process 和一系列 executor process 组成。
driver process 在集群的 node 节点运行主函数,指责主要有三件事:
- 提供 Spark 应用的信息。
- 对用户程序的输入作出响应。
- 分析、分配和安排 executor 之间的工作。driver process 是 Spark Application 的核心,在应用的生命周期内提供所有的相关信息。
executor 负责执行 driver 分配给它们的工作,每个 executor 负责两件事:
- 执行由 driver 分配的代码。
- 从 executor 向 driver node 报告计算的状态。
下图阐释了cluster manager 怎么控制物理机器、怎么分配资源给 Spark Application。它可以是三个核心集群管理器之一:Spark standalone cluster manager、YARN 或者 Mesos。这意味着一个集群上可以运行多个 Spark Application。
图中移除掉了 cluster nodes 的概念。用户可以通过配置制定每个 node 上有多少个executor 。
注:Spark 也有 local mode。driver 和 executor 只是简单的执行器,这就意味着他们可以运行在同一个机器上也可以运行在不同的机器上。local mode时,driver 和 executor 运行(如线程)在你的独立电脑而不是集群上。
- Spark 使用一个集群管理器跟踪可用资源。
- driver process 负责跨 executor 执行 driver 程序的命令完成指定任务。
Spark 的 APIs
用户可以使用 Spark Session 对象,它是 Spark 代码运行的入口。当从 Python 和 R 使用 Spark 时,不需要编写明确的 JVM 指令,Python 或 R 代码会被 Spark 翻译成可被 executor JVM 执行的指令。
Spark 有两种基本的 APIs:低级的”无结构化”APIs,高级的结构化APIs。
Spark Session
当运行 Spark 交互命令时,会自动创建一个 Spark Session 对象来控制 Spark Application。Spark Session 实例是 Spark 集群应用执行用户操作的方式,同时 Spark Session 实例与 Spark Application 是一一对应的。
最后
我不想写了。还有几个重要的部分,我把它们列出来:
- DataFrame
- Partition
- Transformation
- Action
把这些搞个七七八八清楚,入门就够了。