Spark简介
spark 一个通用的计算引擎,专门为大规模数据处理而设计,与 mapreduce 类似,不同的是,mapreduce 把中间结果 写入 hdfs,而 spark 直接写入 内存,这使得它能够实现实时计算。
spark 由 scala 语言开发,他能够和 scala 完美结合,同时实现了 java、python、R 等接口。
Spark搭建
spark 有 3 种搭建模式
Local 模式: 即单机模式,这种安装加压即可,具体安装方法穿插在 Standalone 模式
Standalone 模式: 即搭建多台服务器组成spark 集群,但不与其他框架集成,如 yarn,此时 spark 运行在集群中
-
在Client模式下时 :task与driver都在client端,client与executor通讯。在driver将任务分解后由executor在从节点上执行。
-
在Cluster模式下 : task与driver都在master节点中,master与executor进行通讯,driver将任务进行分解通知executor进行执行
基于 yarn 的 spark 集群部署: yarn 集群 + spark 集群,此时 spark 运行在 yarn 中
spark on yarn client模式
spark on yarn cluster模式
local 和 standalone 模式必须启动 spark,yarn 模式无需启动 spark。
Spark模块组成
Spark Core: 包含 Spark 的基本功能;尤其是定义 RDD(弹性数据分布集:Spark定义的数据结构) 的 API、操作以及这两者上的动作。其他 Spark 的库都是构建在 RDD 和 Spark Core 之上的。可以做数据的清洗与格式的转换,替换MR
Spark SQL: 提供结构化数据查询语言。提供通过 Apache Hive 的 SQL 变体 Hive 查询语言(HiveQL)与 Spark 进行交互的 API。每个数据库表被当做一个 RDD,Spark SQL 查询被转换为 Spark 操作。对熟悉 Hive 和 HiveQL 的人,Spark可以拿来就用。
Spark Streaming: 允许对实时数据流进行处理和控制。很多实时数据库(如Apache Store)可以处理实时数据。Spark Streaming 允许程序能够像普通 RDD 一样处理实时数据。
MLlib: 一个常用机器学习算法库,算法被实现为对 RDD 的 Spark 操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。之前可选的大数据机器学习库 Mahout,将会转到 Spark,并在未来实现。
GraphX: 控制图、并行图操作和计算的一组算法和工具的集合。GraphX 扩展了 RDD API,包含控制图、创建子图、访问路径上所有顶点的操作。
任务资源调度平台:自带的任务调度器。
主要架构
master: 主节点,主要用于集群的管理,任务资源的分配,以及客户端提交的任务。
worker: 从节点进程,主要是负责执行任务,一个worker最多可以使用与CPU核数相等的
executor: 启动task来执行任务,在worker节点中作为进程存在。
task: 线程,任务执行的最小粒度单位。
-
在Client模式下时 :task与driver都在client端,client与executor通讯。在driver将任务分解后由executor在从节点上执行。
-
在Cluster模式下 : task与driver都在master节点中,master与executor进行通讯,driver将任务进行分解通知executor进行执行
application: 向spark进行提交的程序,包含了多个job。
job: 单一的任务
driver: 驱动程序,主要是负责DAG划分,stage划分,以及task的分解等。