当前位置:   article > 正文

【Spark】深入浅出理解Spark工作原理_深入浅出spark

深入浅出spark

一、Spark概述

Spark是UC Berkeley AMP Lab开源的通用分布式并行计算框架,目前已成为Apache软件基金会的顶级开源项目。Spark支持多种编程语言,包括Java、Python、R和Scala,同时Spark也支持Hadoop的底层存储系统HDFS,但Spark不依赖Hadoop。

1.1 Spark与Hadoop

Spark基于Hadoop MapReduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点,并且具有更高的运算速度。Spark能够比Hadoop运算更快,主要原因是:Hadoop在一次MapReduce运算之后,会将数据的运算结果从内存写入到磁盘中,第二次 MapReduce运算时在从磁盘中读取数据,两次对磁盘的操作,增加了多余的IO消耗;而Spark则是将数据一直缓存在内存中,运算时直接从内存读取数据,只有在必要时,才将部分数据写入到磁盘中。除此之外,Spark使用最先进的DAG(Directed Acyclic Graph, 有向无环图)调度程序、查询优化器和物理执行引擎,在处理批量处理以及处理流数据时具有较高的性能。按照Spark官网的说法,Spark相对于Hadoop而言,Spark能够达到100倍以上的运行负载。
在这里插入图片描述

1.2 Spark架构及生态

Spark除了Spark Core外,还有其它由多个组件组成,目前主要有四个组件:Spark SQL、Spark Streaming、MLlib、GraphX。这四个组件加上Spark Core组成了Spark的生态。通常,我们在编写一个Spark应用程序,需要用到Spark Core和其余4个组件中的至少一个。Spark的整体构架图如下图所示:
在这里插入图片描述
Spark Core:是Spark的核心,主要负责任务调度等管理功能。Spark Core的实现依赖于RDDs(Resilient Distributed Datasets, 弹性分布式数据集)的程序抽象概念。
Spark SQL:是Spark处理结构化数据的模块,该模块旨在将熟悉的SQL数据库查询与更复杂的基于算法的分析相结合,Spark SQL支持开源Hive项目及其类似SQL的HiveQL查询语法。Spark SQL还支持JDBC和ODBC连接,能够直接连接现有的数据库。
Spark Streaming:这个模块主要是对流数据的处理,支持流数据的可伸缩和容错处理,可以与Flume(针对数据日志进行优化的一个系统)和Kafka(针对分布式消息传递进行优化的流处理平台)等已建立的数据源集成。Spark Streaming的实现,也使用RDD抽象的概念,使得在为流数据(如批量历史日志数据)编写应用程序时,能够更灵活,也更容易实现。
MLlib:主要用于机器学习领域,它实现了一系列常用的机器学习和统计算法,如分类、回归、聚类、主成分分析等算法。
GraphX:这个模块主要支持数据图的分析和计算,并支持图形处理的Pregel API版本。GraphX包含了许多被广泛理解的图形算法,如PageRank。

1.3 Spark运行模式

Spark有多种运行模式,由图2中,可以看到Spark支持本地运行模式(Local模式)、独立运行模式(Standalone模式)、Mesos、YARN(Yet Another Resource Negotiator)、Kubernetes模式等。
本地运行模式是Spark中最简单的一种模式,也可称作伪分布式模式。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/772394
推荐阅读
相关标签
  

闽ICP备14008679号