品鉴三国

导航菜单



当前位置: 首页  /  人物  /  正文

超越时代的大数据技术——Spark

阅读:41

超越时代的大数据技术——Spark

Spark是UC Berkeley AMP LAB所开源的类MapReduce的通用并行框架, 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是一种与Hadoop MapReduce相似的开源集群计算环境,Spark拥有MapReduce所具有的优点,但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark的计算效率要比MapReduce快很多,同时Spark也能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

Spark的特点

计算速度快:由于Spark是基于内存的分布式计算引擎,因此其运算效率很快。根据官方数据统计,Spark基于内存运算效率是Hadoop的100被以上,基于硬盘的运算奥效率也要快10倍以上。

易用性:Spark编程支持Java、Scala、Python和R等编程语言,并且拥有了80余中算法。另外,Spark同样也支持SHELL命令行的交互模式。

通用性:Spark提供了适用于批处理、交互式查询的SparkSQL,实时流处理SparkStreaming,机器学习SparkMLlib和图计算GraphX,它们可以在同一个应用程序中无缝地结合使用,大大减少大数据开发和维护的人力成本和部署平台的物力成本。

兼容性:Spark可以运行在Hadoop模式、Mesos模式或Standalone独立模式,并且还可以访问各种数据源,包括本地文件系统、HDFS、HBase和Hive等。

Spark的技术架构

图 1 Spark技术架构

Spark主要包含Spark Core、Spark SQL、Spark Streaming、Spark MLib、GraphX等核心模块。各模块的作用介绍如下:

Spark Core:Spark Core包含了Spark的基本功能,包含任务调度、内存管理、错误恢复、存储系统交互等模块,以及对弹性分布式数据集RDD的API定义。

Spark SQL:Spark SQL是操作结构化数据的程序包,通过Spark SQL可以使用SQL来查询多种数据源,比如Hive表、Parquet以及JSON等。

Spark Streaming:Spark Streaming是实时流式数据计算的组件,它允许程序能够像普通RDD一样处理实时数据。

Spark MLlib:Spark MLib是机器学习功能的程序库,包含分类、回归、聚类、协同过滤等操作,同时还提供了模型评估、数据导入等额外的支持功能。

GraphX:GrahpX是控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作。

支持离线批处理和实时数据计算:Spark同时支持离线的批数据处理和实时流数据的处理。

Spark的部署模式

Spark不一定非要跑在Hadoop集群上,其支持多种运行模式,包括本地模式、独立运行模型、Spark On YARN、Spark On Mesos和Spark On Kubernetes等。各种部署模式介绍如下:

本地模式:本地模式即单机版部署模式,通常用于测试和个人学习,部署方便,仅需一台机器即可。

独立运行模式:独立运行模式即Standalone,是Spark自带资源调度框架的集群管理模式。Standalone是最简单最容易部署的一种集群模式,无需依赖任何其他资源管理系统,其主要的节点有Driver节点、Master节点和Worker节点。

Spark On YARN模式:Spark On YARN是运行在YARN框架上的模式,使用YARN为上层应用提供统一的资源管理和调度。目前Spark On YARN仅支持粗粒度模式(Coarse-grained Mode),即在YARN上的Container资源是不可以动态伸缩的,一旦Container启动之后,可使用的资源将不能进行调整。Spark On YARN包含Cluster和Client运行模式。Cluster适合生产,driver运行在集群子节点,具有容错功能,Client适合调试,dirver运行在客户端。

Spark On Mesos模式:Spark On Mesos是官方推荐的部署模式。Spark 运行在Mesos上会比运行在YARN上更加灵活,更加自然。Spark On Mesos同时支持粗粒度模式(Coarse-grained Mode)和细粒度模式(Fine-grained Mode)。

1)粗粒度模式:每个应用程序的运行环境由一个Dirver和若干个Executor 组成。其中,每个Executor占用若干资源,内部可运行多个Task。应用程序的各个任务正式运行之前,需要将运行环境中的资源全部申请好,且运行过程中要一直占用这些资源。即使不用,要到最后程序运行结束后才能回收这些资源。

2)细粒度模式:鉴于粗粒度模式会造成大量资源浪费,Spark On Mesos 还提供了另外一种调度模式:细粒度模式,这种模式类似于现在的云计算,思想是按需分配。

Spark On Kubernetes:Spark on Kubernetes于Spark 2.3版本引入开始,到 Spark 3.1以后基本上已经具备了在生产环境大规模使用的条件。

Spark的运行原理

图 2 Spark的运行原理

Client提交任务,构建Spark Application的运行环境,启动SparkContext;

SparkContext向资源管理器(Standalone、Mesos、YARN、K8S等模式)申请运行Executor资源;

Executor向SparkContext申请任务;

SparkContext构建成DAG图,将DAG图分解成Stage,并将任务集发送给任务调度器,最后由任务调度器将任务发送给Executor运行;

5.任务在资源执行器上运行后,资源管理器释放所有资源。

SparkContext:SparkContext是整个Spark应用程序最关键的一个对象,是Spark所有功能的主要入口点。客户端通过SparkContext与spark集群的连接,SparkContext能够用来在集群上创建RDD、累加器、广播变量等。每个JVM里只能存在一个处于激活状态的SparkContext,在创建新的SparkContext之前必须调用stop()来关闭之前的SparkContext。

RDD: RDD(Resilient Distributed Datasets)是弹性分布式数据集,是一种容错的、可以被并行操作的元素集合,是Spark对所有数据处理的一种基本抽象。可以通过一系列的算子对RDD进行操作,主要分为Transformation和Action两种操作。

‍‍‍‍‍Transformation:Transformation是对已有的RDD进行换行生成新的RDD,对于转换过程采用惰性计算机制,不会立即计算出结果。常用的方法有map,filter,flatmap等。

Action:Action对已有对RDD对数据执行计算产生结果,并将结果返回Driver或者写入到外部存储中。常用到方法有reduce,collect,saveAsTextFile等。

DAG:DAG是一个有向无环图。在Spark中,使用DAG来描述计算逻辑。DAG主要分为DAG Scheduler和Task Scheduler。

DAG Scheduler:DAG Scheduler是面向Stage的高层级的调度器,DAG Scheduler把DAG拆分为多个Task,每组Task都是一个Stage,解析时是以Shuffle为边界进行反向构建的,每当遇见一个Shuffle,Spark就会产生一个新的Stage,接着以TaskSet的形式提交给底层的调度器Task Scheduler,每个Stage封装成一个TaskSet。DAG Scheduler需要记录RDD被存入磁盘物化等动作,同时会需要Task寻找最优等调度逻辑,以及监控因Shuffle跨节点输出导致的失败。

Spark的应用场景

复杂的批数据处理及海量数据的能力;

基于历史数据的交互式查询,通常的时间在数十秒到数十分钟之间;

基于实时数据流的大数据处理,通常在数百毫秒到数秒之间;

大数据挖掘场景,基于Spark MKlib的能力实现大数据的机器学习和数据挖掘。

标签

数据技术Spark


相关文章列表

十年大数据专家,手把手带你玩转大数据,Spark技术栈的深度解析

十年大数据专家,手把手带你玩转大数据,Spark技术栈的深度解析

Spark 简介Spark官网为: http://spark.apache.org/, Spark也是用于海量数据处理的计算框架. 官方对Spark的定义是:Apache Spark™ is a un...


30年开发经验大牛分享:数据算法、Hadoop/Spark大数据处理技巧PDF

30年开发经验大牛分享:数据算法、Hadoop/Spark大数据处理技巧PDF

前言随着大规模搜索引擎(如Google和Yahoo!) 、基因组分析(DNA测序、RNA测序和生物标志物分析)以及社交网络(如Facebook和Twitter)的不断发展,需要生成和处理的数据量已经超...


儿子被四川大学锦城学院数据科学与大数据技术专业录取,这个专业怎么样?

儿子被四川大学锦城学院数据科学与大数据技术专业录取,这个专业怎么样?

川大锦城学院是独立学院,三本院校。这个学校2005年成立,我认识的一位老师当过这学院院长。看这学校介绍,有不少教授、长江学者和学......


Java快速入门Hadoop大数据技术,一站式解决方案!

Java快速入门Hadoop大数据技术,一站式解决方案!

给大家推荐一本比较系统的Hadoop大数据书籍,方便大家快速入门图书简介:本书以Hadoop及其周边框架为主线,介绍了整个Hadoop生态系统主流的大数据开发技术。全书共16章,第1章讲解了VMwar...


选择Java和大数据技术培训,助您事半功倍!

选择Java和大数据技术培训,助您事半功倍!

Java和大数据技术,一个作为当今主流的编程语言,一个作为近些年来比较火热的IT技术之一,面临这两种技能,应该选择哪一个技能进行培训呢?Java可以做什么?Java是一门计算机编程语言,作为一门面向对...


Oracle大数据发现技术全解

Oracle大数据发现技术全解

Oracle Big Data Discovery(大数据发现)可能正是组织解决大数据挑战时所需要的产品,但是这些一体化产品仍然处于早期。二月份,Oracle发布了它的最新大数据产品Oracle Bi...


友情链接