Spark学习笔记0——简单了解和技术架构

Spark学习笔记0——简单了解和技术架构

笔记摘抄自 [美] Holden Karau 等著的《Spark快速大数据分析》sql

什么是Spark

Spark 是一个用来实现快速而通用的集群计算的平台。编程

  • 扩展了普遍使用的MapReduce 计算模型
  • 可以在内存中进行计算
  • 一个统一的框架简单而低耗地整合各类处理流程
  • 接口很是丰富

技术架构和软件栈

Spark 的核心是一个对由不少计算任务组成的、运行在多个工做机器或者是一个计算集群上的应用进行调度、分发以及监控的计算引擎服务器

Spark 项目还包含多个紧密集成的组件,这些组件关系密切而且能够相互调用网络

Spark软件栈.jpg

各组件间密切结合的设计原理的优势:架构

  • 软件栈中全部的程序库和高级组件均可以从下层的改进中获益
  • 只须要一套软件系统,运行整个软件栈的代价变小了
  • 可以构建出无缝整合不一样处理模型的应用(例如机器学习和数据分析同时进行)

Spark Core

  • Spark Core 实现了Spark 的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块
  • Spark Core 中包含了对 RDD1 的 API 定义

Spark SQL

Spark 用来操做结构化数据的程序包框架

  • 可使用 SQL 和 Apache Hive 版本的SQL 方言(HQL)来查询数据
  • 支持多种数据源(好比Hive 表、Parquet 以及JSON 等)
  • 支持开发者将SQL 和传统的 RDD 编程的数据操做方式相结合,使用 Python、Java 或 Scala 在单个应用中同时使用 SQL 和复杂的数据分析

Spark Streaming

Spark Streaming 是Spark 提供的对实时数据进行流2式计算的组件机器学习

  • Spark Streaming 提供了用来操做数据流的API,而且与Spark Core 中的RDD API 高度对应
  • 从底层设计来看,Spark Streaming 支持与 Spark Core 同级别的容错性、吞吐量以及可伸缩性

MLlib

一个提供常见的机器学习(ML)功能的程序库分布式

  • MLlib 提供了不少种机器学习算法
  • 提供了一些更底层的机器学习原语(包括一个通用的梯度降低优化算法)

P.s. 全部这些方法都被设计为能够在集群上轻松伸缩的架构oop

GraphX

GraphX 是用来操做图(好比社交网络的朋友关系图)的程序库

  • 能够进行并行的图计算
  • 扩展了Spark 的RDD API,能用来建立一个顶点和边都包含任意属性的有向图
  • 支持针对图的各类操做以及一些经常使用图算法

集群管理器

  • Spark 支持在各类集群管理器(cluster manager)上运行,包括Hadoop YARN、Apache Mesos
  • Spark 自带的一个简易调度器,叫做独立调度器

受众

  • 数据科学家——数据科学应用
  • 工程师——数据处理应用

起源和发展

Spark历史.png



  1. 弹性分布式数据集(resilient distributed dataset,简称RDD)。RDD 表示分布在多个计算节点上能够并行操做的元素集合,是Spark 主要的编程抽象。

  2. 例如网页服务器日志、消息队列

相关文章
相关标签/搜索