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 分析负载 分为三大类型 :
批量数据处理
交互式查询
实时流处理
大数据分析栈 中 需要满足用户 ad-hoc、reporting、iterative 等类型的查询需求。
Spark SQL and Shark 是 轻量级 Hive SQL 在 Spark 上的实现。
开源分布式大数据查询引擎
Spark SQL
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 设计方向和潜在的问题如下 :
数据表以 RDD 方式存储
-
Shuffle 和 Join
Spark 的 Shuffle 不进行分组排序
-
线程安全问题 :
Spark 执行任务 和 分区 是在一个 JVM 空间执行多线程,传统的 Hive 的 Map 端操作树将任务的每个线程分在不同的 JVM, Hive 操作中有静态变量,引发线程安全的问题
-
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 的底层组件。
MLBase 是一个机器学习平台
MLI 是一个接口层
MLlib 是底层算法实现层.
Mllib 在 Spark1.0 中包含 分类、回归、聚类、协同过滤、数据降维 组件 以及 底层的优化库
MLlib 充分利用 Spark 内存计算 和 适合迭代 的特性, 使分布式系统与并行机器学习算法 完美结合。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。