Spark Learn 3 BDAS Brief Introduction

1045 查看

8 BDAS Brief Introduction

AMPLab Spark Team created a big data company Databricks, 提供 Spark 的产品化支持.

One Framework to Rule Them All 利用 Spark 一站式构建自己的 数据分析流水线

8.1 SQL on Spark

AMPLab Big data 分析负载 分为三大类型 :

  1. 批量数据处理

  2. 交互式查询

  3. 实时流处理

大数据分析栈 中 需要满足用户 ad-hoc、reporting、iterative 等类型的查询需求。

Spark SQL and Shark 是 轻量级 Hive SQL 在 Spark 上的实现。

开源分布式大数据查询引擎

  1. Spark SQL

  2. Shark

Hive 社区 启动了 Hive on Spark 项目, 将 Spark 作为 Hive 除 MapReduce 和 Tez 之外的新执行引擎。

Hive on Spark 帮助现有 Hive 用户 迁移到 Spark

8.1.1 Spark SQL 产生原因

由于 MapReuce 是进程级并行
例如: Hive 在不同的进程空间会使用一些 static 变量, 当在同一进程空间并行执行多线程时, 多线程同时写同名称 static 变量,会产生一致性问题。

AMPLab 和 Databricks 利用 Catalyst 开发了 Spark SQL。 在 Spark 1.0 发布 Spark SQL

8.1.2 Spark SQL 架构分析

DBMS : 查询优化器 + 执行器

Spark SQL : 查询优化 Catalyst + Spark执行引擎


使用 Spark SQL

8.1.3 Hive on Spark

Hive on Spark 会全面支持现有的 Hive, Hive 生态系统的组件 可以过渡到 Spark 作为执行引擎。

Hive on Spark 设计方向和潜在的问题如下 :

  1. 数据表以 RDD 方式存储

  2. Shuffle 和 Join

    Spark 的 Shuffle 不进行分组排序

  3. 线程安全问题

    Spark 执行任务 和 分区 是在一个 JVM 空间执行多线程,传统的 Hive 的 Map 端操作树将任务的每个线程分在不同的 JVM, Hive 操作中有静态变量,引发线程安全的问题

  4. Java API

    Hive on Spark 需要社区提供 Job监控 和 RDD 扩展的 API。

8.1.4 未来展望

Spark SQL 提供了对 RDD 的 SQL 支持, 同时支持其他数据源。 如 : Parquet 文件 和 Hive table。

Databricks 和 AMPLab 会继续投资 Spark SQL, SQL on Spark 发展具有想象空间。

8.2 Spark Streaming

Spark Streaming 是一个批处理的流式计算框架, 执行引擎是 Spark, 适合处理实时数据与历史数据混合的场景, 并保证容错性。

8.3 GraphX

GraphX 是 Spark 一个重要的子项目, 它利用 Spark 为计算引擎,实现了大规模图计算和功能,并提供了累死 Pregel 的编程接口。

8.4 MLlib

MLlib 常用的机器学习算法 和 库 在 Spark 平台上的实现, 是 AMPLab 在研发机器学习项目 MLBase 的底层组件。

  1. MLBase 是一个机器学习平台

  2. MLI 是一个接口层

  3. MLlib 是底层算法实现层.

Mllib 在 Spark1.0 中包含 分类、回归、聚类、协同过滤、数据降维 组件 以及 底层的优化库

MLlib 充分利用 Spark 内存计算 和 适合迭代 的特性, 使分布式系统与并行机器学习算法 完美结合。