Apache Spark是一个通用的大规模数据快速处理引擎,可以简单理解为Spark是一个大数据分布式处理框架。

Spark扩展了MapReduce计算模型,而且高效支持更多计算模式,包括交互式查询和流处理。

Spark适用于各种各样原先需要各种不同分布式平台的场景,包括批处理、迭代运算、交互式查询、流处理。

Spark提供的基于RDD的一体化解决方案,将MapReduce、Streaming、SQL、Machine Learning、Graph Processing等模型统一到一个平台,并以一致的API公开且提供相同的部署方案。

除了提供基于Python、Java、Scala和SQL简单易用的API以及内建的丰富程序库,Spark能和其他大数据工具配合使用。

例如,Spark可以运行在Hadoop集群,访问包括Cassandra在内的任意Hadoop数据源。

Spark软件栈

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

Spark Core实现Spark的基本功能,包括任务调度、内存管理、错误恢复、与存储系统交互等模块。

Spark Core包含对RDD的API定义,RDD表示分布在多个计算节点的可以并行操作的元素集合,是Spark的主要编程抽象。

Spark SQL

Spark SQL是Spark用来操作结构化数据的程序包,通过Spark SQL,我们可以使用SQL或Apache Hive版本的SQL(HQL)查询数据。

Spark SQL支持多种数据源,比如Hive表、Parquet以及JSON等。

不论是使用Python、Java还是Scala,开发者都可以在单个的应用中同时使用SQL和复杂的数据分析。

Spark Streaming

Spark Streaming是Spark提供的对实时数据进行流式计算的组件。

比如,生产环境中,网页服务器日志,或者是用户提交的状态更新组成的消息队列,都是数据流。

MLlib

Spark中包含提供常见机器学习功能的程序库,叫做MLlib。

MLlib提供很多机器学习算法,包括分类、回归、聚类、协同过滤等,还提供模型评估、数据导入等额外的支持功能。

GraphX

GraphX是用来操作图(比如社交网络的朋友关系图)程序库,可以进行并行的图计算。

与Spark Streaming和Spark SQL类似,GraphX也扩展了Spark的RDD API.

集群管理器

Spark支持在各种集群管理器上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的简易调度器,叫作独立调度器。

Spark的存储层次

Spark可以将任何Hadoop的分布式文件系统上的文件读取为分布式数据集。

Spark还可以支持本地文件、亚马逊S3、Cassandra、Hive、HBase等。

Hadoop并非Spark的必要条件,Spark支持任何实现Hadoop接口的存储系统。

Spark支持的Hadoop输入格式包括文本文件、SequenceFile、Avro、Parquet等。

Spark集群

Spark集群分为Master和Worker节点,相当于Hadoop的Master和Slave节点

Master节点常驻Master守护进程,负责管理全部的Worker节点。

Worker节点常驻Worker守护进程,负责与Master节点通信并管理executors

Driver程序

如果driver program在Master上运行

./bin/run-example SparkPi 10

则SparkPi就是Master上的Driver.如果是以YARM模式运行,Driver将被调度到worker节点

Driver程序也可以在本地执行,而去连接Spark集群

val sc=new SparkContext("spark://maser:7077","AppName")

results matching ""

    No results matching ""