跳至主要內容

Spark系列: 初识Spark

shilinlee2019年1月18日大约 8 分钟大数据spark入门

Spark具有如下几个主要特点:

Spark简介

Spark具有如下几个主要特点

Scala简介

Spark与Hadoop的对比

Spark生态系统

Spark的设计遵循“一个软件栈满足不同应用场景”的理念,逐渐形成了一套完整的生态系统,既能够提供内存计算框架,也可以支持SQL即席查询、实时流式计算、机器学习和图计算等。Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决方案。因此,Spark所提供的生态系统足以应对上述三种场景,即同时支持批处理、交互式查询和流数据处理。

Spark的生态系统主要包含了Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX 等组件。

Spark生态系统组件的应用场景:

应用场景时间跨度其他框架Spark生态系统中的组件
复杂的批量数据处理小时级MapReduce、HiveSpark
基于历史数据的交互式查询分钟级、秒级Impala、Dremel、DrillSpark SQL
基于实时数据流的数据处理毫秒、秒级Storm、S4Spark Streaming
基于历史数据的数据挖掘-MahoutMLlib
图结构数据的处理-Pregel、HamaGraphX

Spark运行架构

基本概念

架构设计

image
image
image
image

Spark运行基本流程

RDD运行原理

RDD概念

RDD典型的执行过程如下:

这一系列处理称为一个Lineage(血缘关系),即DAG拓扑排序的结果。

优点:惰性调用、管道化、避免同步等待、不需要保存中间结果、每次操作变得简单

RDD特性

RDD的依赖关系

image
image

Stage的划分

Spark通过分析各个RDD的依赖关系生成了DAG,再通过分析各个RDD中的分区之间的依赖关系来决定如何划分Stage,具体划分方法是:

image
image

Spark SQL

Shark

Spark SQL设计

Spark SQL在Hive兼容层面仅依赖HiveQL解析、Hive元数据,也就是说,从HQL被解析成抽象语法树(AST)起,就全部由Spark SQL接管了。Spark SQL执行计划生成和优化都由Catalyst(函数式关系查询优化框架)负责。

Spark的部署和应用方式

Spark应用程序