Spark---大数据分析引擎

一、Spark简介

1.Spark是一个基于内存的快速、通用、可扩展的大数据分析引擎。
2.Spark在2009年诞生于美国加州大学伯克利分校的AMP实验室,项目采用Scala编写;2013年6月成为Apache的孵化项目;2014年2月打破了Hadoop保持的基准排序记录,成为Apache的顶级项目,广受欢迎,如今已成为Apache软件基金会最重要的三大分布式计算系统开源项目之一(Hadoop、Spark、Storm)。

二、Spark的特点

1.运行速度快

Spark使用先进的DAG(有向无环图)执行引擎,以支持循环数据流与内存计算,基于内存的执行速度比Hadoop快上百倍,基于磁盘的执行速度也要快上10倍。
Hadoop和Spark中的逻辑回归

2.容易使用(易用)

Spark支持使用Scala、java、Python和R语言进行编程,还支持超过80种高级算法,简介的API设计有助于用户轻松构建并行程序,并且可以通过Spark Shell进行交互式编程。

3.通用性

Spark提供了完整而强大的技术栈,包括SQL查询(Spark SQL)流式计算(Spark Streaming)机器学习(MLlib)、**图计算(GraphX)**组件,这些组件可以无缝整合在同一个应用中,减少开发和维护的人力成本,和部署平台的物力成本。

4.运行模式多样(兼容性)

Spark可以非常方便的和其他开源产品进行融合。Spark可运行于独立的集群模式,或者运行于hadoop中,也可以运行于Amazon EC2等云环境,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源。

三、Spark生态中的组件

1. Spark Core

Spark Core包含Spark的基本功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等,主要面对批数据处理。Spark建立在统一的抽象RDD(弹性分布式数据集)上,使其可以以基本一致的方式应对不同的大数据处理场景。

2. Spark SQL

Spark SQL允许开发人员直接处理RDD,同时也可查询Hive、HBase等外部数据源。Spark SQL的一个重要特点是其能够统一处理关系表和RDD,使得开发人员不需要自己编写Spark应用程序,开发人员可以轻松地使用SQL命令进行查询,并进行更复杂的数据分析。

3. Spark Streaming

Spark Streaming支持高吞吐量、可容错处理的实时流数据处理,其核心思路是将流数据分解成一系列短小的批处理作业,每个短小的批处理作业都可以使用Spark Core进行快速处理。Spark Streaming支持多种数据输入源,如Kafka,Flume和TCP套接字等。

4. MLlib(机器学习)

MLlib提供了常用机器学习算法的实现,包括聚类、分类、回归、协同过滤等,降低了机器学习的门槛,开发人员只要具备一定的理论知识就能进行机器学习的工作。

5. GraphX(图计算)

GraphX 是Spark中用于图计算的API,可认为是Pregel在Spark上的重写及优化,GraphX性能良好,拥有丰富的功能和运算符,能在海量数据上自如地进行复杂的图算法。

注意:无论是Spark SQL、Spark Streaming、MLlib还是GraphX,都可以使用Spark Core的API处理问题,它们的方法几乎是互通的,处理的数据也可以共享,不同应用之间的数据可以无缝集成。

四、Spark运行架构

1.基本概念

(1)RDD:是弹性分布式数据集(Resilient Distributed DataSet)的英文缩写,是分布在内存的一个抽象概念,提供了一种高度受限的共享内存模型。
(2)DAG:是Directed Acyclic Graph(有向无环图)的英文缩写,反应RDD之间的依赖关系。
(3)Executor:是运行在工作节点(Worke Node)上的一个进程,负责运行任务,并为应用程序存储数据。
(4)应用:用户编写的Spark应用程序。
(5)任务:运行在Executor上的工作单元。
(6)作业:一个作业包含多个RDD及作用于相应RDD上的各种操作。
(7)阶段:是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”,,或者也被称为“任务集”。

2.架构设计


如图所示:包括集群资源管理器(Cluster Manager)运行作业任务的工作节点(Worker Node)每个应用的任务控制节点(Driver)和每个工作节点上负责具体任务的执行进程(Executor)。其中,集群资源管理器可以是Spark自带的资源管理器,也可以是YARN或Mesos等资源管理框架。

在Spark中,一个应用(Application)由一个任务控制节点(Driver)和若干个作业(Job)构成,一个作业由多个阶段(Stage)构成,一个阶段由多个任务(Task)组成

3.Spark运行基本流程


(1)当一个Spark应用被提交时,首先需要为这个应用构建起基本的运行环境。即由任务控制节点(Driver)创建一个SparkContext,由SparkContext负责和资源管理器(Cluster Manager)的通信以及进行资源的申请、任务的分配和监控等。SparkContext 会向资源管理器注册并申请运行Executor的资源。
(2)资源管理器为Executor分配资源,并启动Executor进程,Executor运行情况将随着“心跳”发送到资源管理器上。
(3)SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAG任务调度器(DAGScheduler)进行解析,将DAG图分解成多个“阶段”(每个阶段都是一个任务集),并且计算出各个阶段之间的依赖关系,然后把一个个“任务集”提交给底层的任务调度器(TaskScheduler)进行处理;Executor向SparkContext申请任务,任务调度器将任务分发给Executor运行,同时SparkContext将应用程序代码发送给Executor。
(4)任务在Executor运行,把执行结果反馈给任务调度器,然后反馈给DAG调度器,运行完毕后写入数据并释放所以资源。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark是一个开源的大数据处理框架,可以处理大规模的数据集。而Spark SQL是Spark中的一个模块,用于处理结构化数据,支持SQL查询和DataFrame API。Spark SQL可以将结构化数据存储在分布式的列式存储系统中,并提供了高效的查询引擎,可以在大规模数据集上进行快速的查询和分析。Spark SQL还支持多种数据源,包括Hive、JSON、Parquet等。 ### 回答2: Spark是一个开源的大数据处理工具,它主要的特点是速度快、易于扩展和支持多种语言。Spark可以用于批处理、实时处理、机器学习、图处理、流处理等多个领域,并且可以在大多数基础设施上运行,如Hadoop、Mesos、Kubernetes等,为企业提供了更加便利灵活的大数据处理方案。 Spark SQL是Spark中的一个模块,它提供了一个基于SQL的接口以及齐全的支持,让用户可以方便地在Spark上进行结构化数据处理,如数据查询、聚合、过滤等。Spark SQL的优势在于其性能优异,它可以在不同的数据源上运行,包括Hive、Avro、Parquet等。 Spark SQL模块的核心组件为Catalyst,它是一个基于规则的优化器,可以自动优化查询计划,提高整体查询速度Spark SQL支持多种查询API,包括SQL、DataFrame API和DataSet API,用户可以根据自己的需求选择不同的API来处理数据。 另外,Spark SQL支持数据格式的灵活转换,可以将不同数据源中的数据转换为DataFrame或DataSet格式,并且提供了丰富的数据源集成插件,如JDBC、MongoDB、Cassandra等。 总之,Spark以其快速、灵活、易于扩展的特性帮助企业更好地管理和处理大规模结构化数据,而Spark SQL则是Spark的重要组成部分,它提供SQL接口和优化器,让用户可以更加方便地处理和分析结构化数据。 ### 回答3: Spark是一个开源分布式数据处理框架,可以快速处理大规模数据集,支持多种数据源和数据处理方式,具有高效的计算能力和可扩展性。Spark SQL是Spark中的一个子项目,提供了一种基于SQL的接口,可以将结构化数据集集成到Spark中,支持SQL查询、数据聚合、连接和过滤等操作。Spark SQL支持多种数据源,包括Hive表、JSON、Parquet和CSV格式等,同时也支持DataFrame和Dataset等高级数据结构。Spark SQL还提供了Java、Scala和Python等多种编程语言接口,以便各种开发人员利用Spark SQL进行数据处理和分析。 Spark SQL的一个重要特性是DataFrame,它是一个分布式的数据集合,类似于关系型数据库中的表格,但是可以横向扩展到大规模数据集。DataFrame提供了Schema(数据结构)的定义和数据类型的推导,可以简化代码编写和数据处理过程。在Spark SQL中,DataFrame可以通过API进行操作,也可以通过SQL查询进行操作。Spark SQL还支持多种数据格式之间的转换,例如从JSON格式转换为Parquet格式,从CSV格式转换为Hive表格等。 Spark SQL的一个优势是可以与其他Spark组件集成,例如Spark Streaming、MLlib和GraphX等,使得数据处理和分析更加高效和简洁。Spark Streaming可以将实时数据处理与批处理数据处理相结合,使得数据处理和分析更加完整和有力。MLlib提供了机器学习算法的实现,可以快速进行数据挖掘和模型训练。GraphX提供了图形计算的能力,可以进行大规模的网络分析和数据可视化。 总之,Spark SQL是一个强大的数据处理框架,可以快速处理各种结构化数据集,并且可以与其他组件集成,实现高效的数据分析和挖掘。随着大数据时代的到来,Spark SQL将成为数据科学和工程师的必备工具之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值