分布式系统详解--框架(Spark-简介)

一、定义

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎,Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架。

二、优势特点

Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

2.1 速度--以更快的速度运行工作负载

python spark分布式环境搭建 分布式框架spark_Hadoop

Apache Spark使用最先进的DAG调度程序,查询优化器和物理执行引擎,实现批处理和流数据的高性能。

2.2 便于使用--Java、Scala、Python、R、SQL

python spark分布式环境搭建 分布式框架spark_spark简介_02

Spark提供80多个高级操作员,可以轻松构建并行应用程序。您可以 从Scala,Python,R和SQL shell中以交互方式使用它。

2.3 集合sql、流媒体和复杂的分析

python spark分布式环境搭建 分布式框架spark_python spark分布式环境搭建_03

Spark支持一堆库,包括SQL和DataFrames,用于机器学习的MLlib,GraphX和Spark Streaming。 您可以在同一个应用程序中无缝地组合这些库。

2.4 随处运行

python spark分布式环境搭建 分布式框架spark_分布式_04

Spark运行在Hadoop,Apache Mesos,Kubernetes,独立或云端。 它可以访问各种数据源。

您可以使用其独立群集模式,在EC2上,在Hadoop YARN上,在Mesos上或在Kubernetes上运行Spark。 访问HDFS,Alluxio,Apache Cassandra,Apache HBase,Apache Hive和数百个其他数据源中的数据。

三、Spark的组件

3.1 Spark Core:

包含Spark 的基本功能,包含任务调度、内存管理、容错机制。

内部定义了RDDs(弹性分布式数据集)。

提供了很多APIs来创建和操作这些RDDs。

应用场景,为其他组件提供底层的服务。

3.2 Spark SQL:

这是Spark 处理结构化数据的库,如同Hive SQL,Mysql一般。

应用场景,企业中用来做报表统计。

3.3 Spark Streaming

实时数据流处理组件,类似于Storm。

它提供了API来操作实时流数据。

应用场景,企业中用来从Kafka接收数据做实时统计。

3.4 Mlib:

一个包含通用机器学习的功能的包,Machine learning lib。

包含分类、聚类、回归等,还包括模型评估,和数据导入。

Mlib提供的所有方法,均支持集群中的横向扩展。

应用场景:机器学习

3.5 Graphx:

处理图的库(例如:社交网络图),并进行图的并行计算。

像Spark Streaming,Spark SQL一样,它继承了RDD API。

它提供了各种图的操作,和常用的图算法,例如PangeRank算法。

应用场景:图计算。

3.6 Cluster Managers:

集群管理,Spark 自带一个集群管理是单独调度器。

常见的集群管理包括Hadoop Yarn,Apache Mesos。

python spark分布式环境搭建 分布式框架spark_分布式_05