Spark 基础概述

1、什么是Spark?

Spark 是一个快速(基于内存), 通用, 可扩展的集群计算引擎

并且Spark 目前已经成为 Apache 最活跃的开源项目, 有超过 1000 个活跃的贡献者.

1.1 Spark发展历史

2009年,Spark 诞生于 UC Berkeley(加州大学伯克利分校, CAL) 的 AMP 实验室, 项目采用 Scala 编程语言编写.

2010年, Spark 正式对外开源

2013年 6 月, 进入 Apache 孵化器

2014年, 成为 Apache 的顶级项目.

目前最新的版本是2.4.0

参考: http://spark.apache.org/history.html

2、Spark特点

2.1 快速

与Hadoop的 MapReduce 相比, Spark 基于内存的运算是 MapReduce 的 100 倍.基于硬盘的运算也要快 10 倍以上.

Spark实现了高效的 DAG 执行引擎, 可以通过基于内存来高效处理数据流


2.2 易用

Spark支持 Scala, Java, Python, R 和 SQL 脚本, 并提供了超过 80 种高性能的算法, 非常容易创建并行 App

而且Spark支持交互式的 Python 和 Scala 的 shell, 这意味着可以非常方便地在这些 shell 中使用 Spark 集群来验证解决问题的方法, 而不是像以前一样 需要打包, 上传集群, 验证等. 这对于原型开发非常重要.


2.3 通用

Spark 结合了SQL, Streaming和复杂分析.

Spark 提供了大量的类库, 包括 SQL 和 DataFrames, 机器学习(MLlib), 图计算(GraphicX), 实时流处理(Spark Streaming) .

可以把这些类库无缝的柔和在一个App 中.

减少了开发和维护的人力成本以及部署平台的物力成本.


2.4 可融合性

Spark 可以非常方便的与其他开源产品进行融合.

比如, Spark 可以使用 Hadoop 的 YARN 和 Appache Mesos 作为它的资源管理和调度器, 并且可以处理所有 Hadoop 支持的数据, 包括 HDFS, HBase等.

3、内置模块介绍


3.1 集群管理器

Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算。

为了实现这样的要求,同时获得最大灵活性,Spark 支持在各种集群管理器(Cluster Manager)上运行,目前 Spark 支持 3 种集群管理器:

Hadoop YARN(在国内使用最广泛)

Apache Mesos(国内使用较少, 国外使用较多)

Standalone(Spark自带的资源调度器, 需要在集群中的每台节点上配置 Spark)

3.2 SparkCore

实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。SparkCore中还包含了对弹性分布式数据集(Resilient Distributed DataSet 简称 RDD)的API定义。

3.3 Spark SQL

是Spark用来操作结构化数据的程序包。通过SparkSql,我们可以使用SQL或者Apache Hive版本的SQL方言(HQL)来查询数据。Spark SQL支持多种数据源。比如Hive表,Parquet以及JSON等。

3.4 Spark Streaming

是Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数据流的API,并且与 Spark Core 中的 RDD API 高度对应。

3.5 Spark MLlib

提供常见的机器学习(ML) 功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。

Spark得到了众多大数据公司的支持,这些公司包括 Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆。

当前百度的Spark已应用于大搜索、直达号、百度大数据等业务;

阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;

腾讯Spark集群达到 8000 台的规模,是当前已知的世界上最大的 Spark 集群。

你可能感兴趣的:(Spark 基础概述)