大数据管理与应用 课件 -第十五章 大数据计算平台_第1页
大数据管理与应用 课件 -第十五章 大数据计算平台_第2页
大数据管理与应用 课件 -第十五章 大数据计算平台_第3页
大数据管理与应用 课件 -第十五章 大数据计算平台_第4页
大数据管理与应用 课件 -第十五章 大数据计算平台_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章大数据计算平台大数据管理与应用——主编:王刚副主编:刘婧、邵臻01大数据计算平台概述02基于Hadoop的大数据计算平台03基于Spark的大数据计算平台大数据计算平台大数据计算平台是具有数据接入、数据存储、数据分析与处理、数据查询与检索、数据挖掘和数据可视化等功能的一体化数据分析平台。当前,常见的大数据计算平台有阿里云平台、腾讯大数据平台以及百度数智平台等。完整的大数据计算平台体系架构有多个层级,具体如图15-1所示。1.1大数据计算平台概述图15-1大数据平台架构体系图大数据计算平台平台中各个层级之间相互融合,共同完成大数据的分析任务。大数据基础设施:作为大数据平台的底层,为上层提供必要的基础设施支持,如网络设备、存储设备、云数据中心等,是大数据存储、计算和交互展示的基础支撑设施。数据源层与数据采集:数据采集是大数据价值挖掘中必不可少的一个部分,是一种把数据从数据源采集导入到数据平台中的相关接口及技术,数据采集根据采集的方式可以分为基于网络信息的采集和基于物联网传感器的采集。数据存储:一般是采用分布式文件和分布式数据库的方式将数据存储在大规模的节点中,可以对多种类型的数据进行存储,包括结构化数据、非结构化数据以及半结构化数据。数据分析与处理:主要功能是对数据进行分析、查询、统计、预测、挖掘等相关的分析与处理操作。数据交互展示:主要是将分析与处理的数据以最优的交互方式展现出来。通过形象的可视化方式将分析的结果展现出来,便于使用者的理解和使用,从而为后续的决策和预测提供有效的支撑。大数据应用:将数据及处理的结果落地到实处,支撑在不同领域展开的应用,如医疗、金融以及制造业等。1.1大数据计算平台概述大数据计算平台大数据计算模式,是指根据大数据的不同数据特征和计算特征,从多样性的大数据计算问题和需求中提炼并建立的各种高层抽象和模型。传统的并行计算方法主要从体系结构和编程语言的层面定义一些较为底层的抽象和模型,但由于大数据处理问题具有很多高层的数据特征和计算特征,因此大数据处理需要更多地结合其数据特征和计算特征考虑更为高层的计算模式。根据大数据处理多样性的需求,出现了各种典型的大数据计算模式,并出现了与之相对应的大数据计算系统和工具。1.1大数据计算平台概述大数据计算模式典型系统和工具大数据查询分析计算HBase,Hive,Cassandra,Impala,Redis等批处理计算MapReduce,Spark等流式计算Scribe,Flume,Storm,S4,Apex等迭代计算HaLoop,iMapReduce,Twister,Spark等图计算Pregel,Giraph,GraphX等内存计算Dremel,Hana,Redis等表15-1大数据计算模式及典型系统和工具大数据计算平台从信息系统的角度来看,大数据处理是涉及软硬件系统各个层面的综合信息处理技术。从信息系统角度可以将大数据处理分为基础层、系统层、算法层以及应用层,表15-2所列是从信息处理系统角度所看到的大数据技术的主要技术层面和技术内容。1.1大数据计算平台概述表15-1大数据计算模式及典型系统和工具应用层大数据行业应用/服务层电信/公安/商业/金融/勘探/教育等领域应用/服务需求和计算模型等应用开发层分析工具/开发环境和工具/行业应用系统开发等算法层应用算法层社交网络、排名与推荐、商业智能,自然语言处理,大数据分析与可视化计算等基础算法层并行化机器学习与数据挖掘算法等系统层并行编程模型与计算框架层并行计算模型与系统批处理计算,流式计算,图计算,迭代计算,内存计算等大数据存储管理大数据查询/大数据存储/大数据采集与数据预处理等基础层并行构架和资源平台层集群,众核,GPU,混合式架构云计算资源与支撑平台等大数据计算平台云计算是由分布式计算、并行处理、网格计算发展来的,是一种新兴的商业计算模型。云计算包含狭义和广义两个层面,其中,狭义的云计算是指厂商通过分布式计算和虚拟化技术搭建数据中心或超级计算机,向技术开发者或企业客户提供数据存储、分析以及科学计算等服务。而广义的云计算则是指厂商通过建立网络服务器集群,向各种不同类型客户提供在线软件服务、硬件租借、数据存储、计算分析等不同类型的服务。云计算和大数据是现在企业走向数字化运营的两个核心,多数企业的目标是将两种技术结合起来以获取更多的商业利益。二者都关注对资源的调度,一般来说,大数据在处理过程中涉及到的数据采集、传输、存储、处理和分析等多种技术可以基于云计算平台来完成,同时也可以作为一种云计算的服务提供大数据分析的服务。云计算和大数据之间具有相辅相成的关系,云计算作为大数据应用计算资源的底层,支撑着上层的大数据处理,而大数据则是在云计算平台之上的进一步应用。1.1大数据计算平台概述大数据计算平台云计算主要有以下几个特点:按需提供服务:以服务的形式为用户提供应用程序、数据存储、基础设施等资源,并可以根据用户需求自动分配资源,而不需要管理员的干预。宽带网络访问:用户可以通过各种终端设备,比如智能手机、笔记本电脑、PC等,随时随地通过互联网访问云计算服务。资源池化:资源以共享池的方式统一管理。通过虚拟化技术,将资源分享给不同的用户,而资源的存放、管理以及分配策略对用户是透明的。高可伸缩性:服务的规模可以快速伸缩,来自动适应业务负载的变化。可量化服务:云计算服务中心可以通过监控软件监控用户的使用情况,从而根据资源的使用情况对提供的服务进行计费。大规模:承载云计算的集群规模非常巨大,一般达到数万台服务器以上。从集群规模来看,云计算赋予了用户前所未有的计算能力。服务非常廉价:云服务可以采用非常廉价的PCServer来构建,而不需要非常昂贵的小型机。另外云服务的公用性和通用性,极大地提升了资源利用率,从而大幅降低使用成本。1.1大数据计算平台概述大数据计算平台架构针对集群环境出现了大量的大数据编程框架。首先要提到的就是Google的MapReduce,它给我们展示了一个简单通用和自动容错的批处理计算模型。但是对于其他类型的计算,比如交互式和流式计算,MapReduce并不适合,这也导致了大量的不同于MapReduce的专有的数据处理模型的出现,比如Storm、Impala和GraphLab。随着专有的数据处理模型的不断出现,对于大数据处理而言,我们应对不同类型的作业需要一系列不同的处理框架可以很好地完成。但是这些专有系统也有一些不足,主要包括以下五点:重复工作组合问题适用范围的局限性资源分配管理问题1.1大数据计算平台概述大数据计算平台架构2004年前后,Google先后发表了三篇论文分别介绍了谷歌文件系统(GFS)、并行计算模型MapReduce和非关系数据存储系统BigTable,并且第一次提出了针对大数据分布式处理的可重用方案。在Google论文的启发下,Yahoo的工程师DougCutting和MikeCafarella开发了Hadoop。后续研究人员在借鉴和改进Hadoop的基础上,又先后诞生了数十种应用于分布式环境的大数据计算框架。其中最具有代表性的是批处理计算框架、流计算框架和交互式计算框架。1.1大数据计算平台概述图15-2大数据计算框架全景图Hadoop概述Hadoop是基于Google的MapReduce、GFS和BigTable等核心技术的开源实现,由Apache软件基金会支持,以分布式文件系统HDFS和MapReduce为核心,以及其他Hadoop的子项目的通用工具组成的分布式计算系统,主要用于海量数据高效的存储、管理和分析。经过不断的发展,Hadoop已经有了三个大的版本,包括Hadoop1.0、Hadoop2.0和Hadoop3.0。其发展流程如图15-3所示。1.2基于Hadoop的大数据计算平台图15-3Hadoop发展历史分布式文件系统HDFSHDFS是基于Google发布的GFS论文设计开发的,是Hadoop技术框架中的分布式文件系统,对部署在多台独立物理机器上的文件进行管理。HDFS采用Master/Slave架构。一个HDFS集群是由一个NameNode和一定数目的DataNodes组成。NameNode作为中心服务器,负责管理文件系统的名字空间(Namespace)以及控制客户端对文件的访问。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在HDFS上存储数据。1.2基于Hadoop的大数据计算平台图15-4HDFS整体架构分布式文件系统HDFSHDFS读取数据流程:客户端在读取HDFS上存储的数据时,首先,业务应用调用HDFSClient提供的API打开文件,HDFSClient联系NameNode,获取到文件信息(数据块、DataNode位置信息)。之后,业务应用调用数据读取API读取文件。HDFSClient根据从NameNode获取到的信息,联系DataNode,根据就近的原则,获取相应的数据块,HDFSClient会与多个DataNode通讯获取数据块。数据读取完成后,业务调用关闭方法关闭连接。1.2基于Hadoop的大数据计算平台图15-5数据读取流程分布式文件系统HDFSHDFS写入数据流程:首先,业务应用调用HDFSClient提供的API,请求写入文件。之后,HDFSClient联系NameNode,NameNode在元数据中创建文件节点,再由业务应用调用写入的API写入文件。HDFSClient收到业务数据后,从NameNode获取到数据块编号、位置信息后,联系DataNode,并将需要写入数据的DataNode建立起流水线。完成后,客户端再通过自有协议写入数据。写完的数据,将返回确认信息给HDFSClient。最后,业务调用关闭方法。1.2基于Hadoop的大数据计算平台图15-6数据写入流程分布式计算框架MapReduceMapReduce源于Google发表于2004年的MapReduce论文,HadoopMapReduce是GoogleMapReduce的开源版本。MapReduce实现了Map和Reduce两个功能:其中Map是对数据集上的独立元素进行指定的操作,生成键-值对形式的中间结果;Reduce则对中间结果中相同“键”的所有“值”进行规约(分类和归纳),以得到最终结果。简单来说,MapReduce是一种思想,或一种编程模型。对于Hadoop来说,MapReduce则是一个分布式计算框架,是它的一个基础组件,当配置好Hadoop集群时,MapReduce已然包含在内。MapReduce的基本思想是分而治之。所谓分而治之,就是将原始问题不断地分解为较容易解决的多个小问题,每个小问题得到结果后不断地向上一层进行归并,直到得到最终的结果。1.2基于Hadoop的大数据计算平台分布式计算框架MapReduceMapReduce在大数据处理方面相比于以往的分布式处理框架有着众多的优点:易于编程开发和运行:基于MapReduce进行大数据的分布式处理时,只需要实现它API中的Map方法和Reduce方法即可。具有良好的扩展性:只要增加机器,整个架构对大数据处理的性能就会提升,这使得每增加一台服务器,就能将差不多的计算能力接入到集群中。有高容错性:计算时,MapReduce会选择就近的数据副本来处理。当前在计算的任务,如果挂掉了,会自动转移到其他的节点去运行。海量数据的离线处理:当需要处理的数据量增加时,只需要增加节点数量,便能够对数据进行处理,提高数据的处理能力。MapReduce在对数据的处理中存在的一些问题:不适合实时计算不适合流式计算1.2基于Hadoop的大数据计算平台分布式计算框架MapReduceMapReduce在进行数据处理时,一般要经过五个步骤,包括数据分片、Map、Shuffle、Reduce和文件写入,其过程如图15-7所示。1.2基于Hadoop的大数据计算平台图15-7MapReduce计算框架分布式计算框架MapReduce数据分片:MapReduce第一个部分是把HDFS的数据切成许多数据切片,每一数据切片都会有一个映射线程去执行,如果有多个数据切片会由多个线程并发同时执行。映射:映射任务处理的数据是切片,每一片的大小相等,所以映射任务的输入数据端不会出现数据倾斜的问题。洗牌:洗牌是介于映射和归约两个阶段的一个中间步骤,能够把映射任务的输出结果按照一定的键值重新切分并组合,将键值符合某种范围的输出结果送到特定的归约任务。1.2基于Hadoop的大数据计算平台图15-8洗牌过程分布式计算框架MapReduce归约:归约任务的输入数据是经过映射任务处理后,再经过洗牌阶段分发之后数据的拷贝。具体拷贝的数据由分区的结果来决定,只拷贝分给对应的归约任务的数据。分区是按照归约去模后的值进行分区的,分区以后的数据再拷贝到归约所在的机器上,同时进行合并,便于下一步归约任务进行处理。文件写入:当Reduce处理完成后,将数据写入到HDFS中,需要注意的是写入的文件不能与已经存在的文件重名。1.2基于Hadoop的大数据计算平台图15-9规约过程资源管理框架YarnApacheHadoopYARN(YetAnotherResourceNegotiator)是一种新的Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,在Hadoop2.0版本中被引入。它将资源管理和处理组件分开,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。相比较而言,MapReduce则是YARN的一个特例,YARN则是MapReduce的一个更加通用和高级的框架形式,并在其上增加了更多的功能。YARN组件资源管理器应用程序主机节点管理器容器1.2基于Hadoop的大数据计算平台资源管理框架Yarn当用户向YARN中提交一个应用程序后,YARN将分两个阶段运行该应用程序:第一个阶段是启动应用程序主机;第二个阶段是由应用程序主机创建应用程序,为应用申请资源,并监控它的整个运行过程,直到运行完成,如图15-10所示。1.2基于Hadoop的大数据计算平台图15-10YARN的工作流程分布式数据库HBaseHBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,主要用来存储非结构化和半结构化的松散数据。与传统关系型数据库相比,HBase具有很多与众不同的特性:在数据类型方面:关系数据库采用关系模型,包含丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型,将所有的数据都存储为未经解释的字符串。在数据操作方面:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接,HBase在设计时避免了复杂的表之间的关系,只包括简单的插入、查询、删除等。在存储模式方面:关系数据库是基于行模式存储的,而HBase是基于列存储的。在数据索引方面:关系数据库通常可以通过构建索引来提高数据查询的性能,而HBase只有一个行键作为索引,但是HBase中所有的数据查询方法都进行了优化,从而使得整个查询过程不会慢下来。在数据维护方面:在HBase中执行更新操作时,由于HDFS的机制无法进行删除操作,而是生成一个新的版本,旧有的版本仍然保留。在可伸缩性方面:HBase作为分布式的数据库在扩展性方面十分方便。1.2基于Hadoop的大数据计算平台分布式数据库HBaseHBase是一个稀疏、具有多维度并且有序的映射表,这张表的索引是行键、列族、列限定符和时间戳面向列的存储。其具体概念如下:表:HBase使用表来组织数据,每个表由行和列组成,列又具体划分为若干个列族。行:每个数据表都由若干行组成,每个行由不重复的行键来标识。列族:每个HBase表为了便于理解,根据不同列的内容被分组成许多“列族”(ColumnFamily)的集合,是HBase基本的访问控制单元,在创建表的时候就需要指定。列限定符:具体到列族,每个列族里的数据通过列限定符来定位。单元格:在HBase表中,通过行、列族和列限定符可以唯一确定一个“单元格”(Cell)。时间戳:由于HDFS的机制,每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引,时间戳会自动生成。通过行键、列族、列限定符和时间戳能够确定一个单元格,因此,可以将每个数据的索引视为一个“四维坐标”,由行键,列族,列限定符,时间戳组成。1.2基于Hadoop的大数据计算平台分布式数据库HBaseHBase中的每个表包含的行数很大,难以将所有的数据存储到一台机器上,需要根据行键的值对表进行分区,分配到不同的机器中,每个行区间构成一个分区,被称为Region。在开始只有一个Region,随着数据不断涌入,Region持续增大,当一个Region的行数达到设定的阈值时,就会自动分裂,之后在数据增加过程中也会不断分裂。一个HBase表被划分成多个Region,但同一个Region不会被分拆到多个Region服务器。受限于硬件,每个Region服务器存储10-1000个Region,如图15-11所示。1.2基于Hadoop的大数据计算平台图15-11Region分裂原理分布式数据库HBaseHBase在具体执行时,主要包含以下步骤:预写日志:HBase中的预写日志机制最重要的作用是当出现软件突然崩溃时进行恢复,记录所有的数据改动。Region定位:用户在访问数据之前需要首先访问Zookeeper,然后访问-ROOT-表,接着访问.META.表,层层搜索,最终找到数据所在的位置,整个查询过程可能需要多次进行网络请求。-ROOT-只有一个Region,具体信息如表15-4所示。1.2基于Hadoop的大数据计算平台层次名称作用第一层Zookeeper文件记录了-ROOT-表的位置信息件。第二层-ROOT-表记录了.META.表的Region位置信息-ROOT-表只能有一个Region。通过-ROOT-表,就可以访问.META.表中的数据。第三层.META.表记录了用户数据表的Region位置信息,.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息。表15-4Region层次结构分布式数据库HBaseHBase在具体执行时,主要包含以下步骤:写入流程:首先在客户端会生成批量操作请求,然后将这些请求发送到机器集群进行处理。机器集群会根据元数据信息表查询Region所在的机器,接着客户端可以与目标机器进行通讯。在服务端,收到客户端发送的请求之后,会首先对请求的Region进行检查,然后按照获取行锁、Region更新共享锁,写入事务、写入缓存、写入AppendHlog、释放行锁和Region共享锁、同步日志到HDFS、结束事务、刷新数据到磁盘这一过程完成数据的写入。查询流程:在客户端,首先会访问Zookeeper集群,找到META表的位置,接着访问META表所在的ReginServer,将META表加载到本地内存中,查找需要查询的数据所在的Region。最后,客户端直接与Region所在的主机进行通信准备查询数据。在服务端,接收到来自客户端的查询请求后,首先会查询对应数据的列键所对应的Region,接着从缓存中查询是否已有缓存的结果,如果查询到就直接返回,如果没有查询到则会读取Region主机相应的Hfile,迭代地进行数据的查询。1.2基于Hadoop的大数据计算平台数据仓库HiveHive是一个基于Hadoop的数据仓库,用来处理结构化数据,可以通过类SQL的语言对存储在HDFS上的数据进行存储、分析和查询。Hive作为基于Hadoop的数据仓库,在设计的时候遵循三个准则:内部表和外部表:在Hive中创建的普通表都可称作“内部表”,其可以由Hive进行数据的生命周期的控制。外部表不需要将数据复制到Hive中,一旦关联上数据格式和数据位置,Hive就能直接访问外部数据,非常灵活方便,即插即用。分区和分桶:对于数据量很大的大型数据处理系统而言,将数据进行分区的功能是非常重要的。分区的优势在于利用维度分割数据。在根据分区维度进行查询时,Hive只需要加载相应维度的数据,可以极大缩短数据加载时间。但是,并非所有数据集都能形成合理的分区,特别是需要在防止数据倾斜的前提下合理地划分数据。对数据表中的名称做分桶,将名称按哈希值分发到不同的桶中,能够有效地解决数据倾斜的问题。同时因为桶的数量固定,所以也能有效缓解数据波动的问题。序列化/反序列化:序列化/反序列化的作用是将一条非结构化字节转化成Hive可以使用的一条记录。Serdeproperties是Hive中内置的序列化/反序列化工具。1.2基于Hadoop的大数据计算平台数据仓库HiveHive的体系架构:Hive能够直接处理用户输入的HiveSQL语句,但是与标准的SQL语句有些许不同,然后调用MapReduce计算框架完成数据分析操作。具体包含的组件和其关系架构图如图15-12所示。客户端:客户端主要包含三种:CLI接口、JDBC/ODBC客户端和Web接口。其中,CLI通过命令行直接连接Hive,JDBC/ODBC客户端借助于Thrift服务与Hive进行交互,Web接口则是访问由Hive创建的网络页面进行各种操作。1.2基于Hadoop的大数据计算平台图15-12Hive架构数据仓库HiveHive的体系架构:Hive能够直接处理用户输入的HiveSQL语句,但是与标准的SQL语句有些许不同,然后调用MapReduce计算框架完成数据分析操作。具体包含的组件和其关系架构图如图15-12所示。Thrift服务器:Thrift提供了一种跨语言的Socket通信,可以使用多种语言,包括C++、Java、PHP、Python和Ruby,借助于Thrift进行Hive的相关操作。Hive驱动:Hive驱动是Hive的核心,由以下四个部分组成:用于将HQL转换为语法数的解释器,将语法树编译为逻辑执行计划的编译器,对逻辑执行计划进行优化的优化器以及调用底层框架执行逻辑执行计划的执行器。元数据:元数据中包含了Hive的基础信息,而实际的数据则存储在HDFS中。存储的元数据包括:数据库的信息、表名、表中的列以及分区属性等,常用来存储元数据的数据库包括Hive内置的Derby和Mysql。Hadoop:Hadoop主要用来存储Hive中的数据文件,Hive中对数据的操作大多都是转换成MapReduce作业,在Hadoop上执行完成的。1.2基于Hadoop的大数据计算平台数据仓库HiveHive的运行流程第一步:执行查询操作,使用命令行或WebUI之类的Hive接口将查询发送给驱动器(任何数据库驱动程序,如JDBC,ODBC等)执行。第二步:获取计划任务,驱动器借助查询编译器解析查询,检查语法和查询计划或查询需求。第三步:获取元数据信息,编译器将元数据请求发送到Metastore(任何数据库)。第四步:发送元数据,MetaStore将元数据作为对编译器的响应发送出去。第五步:发送计划任务,编译器检查需求并将计划重新发送给驱动器,完成查询语句的解析和编译。第六步:执行计划任务,驱动器将执行计划发送到执行引擎。第七步:执行Job任务,在内部,执行任务的过程是MapReduce任务。第八步:拉取结果集,执行引擎将从DataNode上获取结果集。第九步:发送结果集到驱动器,执行引擎将这些结果值发送给驱动器;最后驱动器将结果发送至用户使用接口,将结果发送到Hive接口。1.2基于Hadoop的大数据计算平台Spark概述ApacheSpark是一种快速、通用、可扩展的大数据分析引擎,主要基于Scala语言进行开发。它是不断壮大的大数据分析解决方案家族中备受关注的明星成员,为分布式数据集的处理提供了一个有效框架,并以高效的方式处理分布式数据集。1.3基于Spark的大数据计算平台图15-13Spark发展史Spark概述SparkCore是Spark的核心组件,除此之外还有用于存储数据的HDFS、AmazonS3、HBase以及NoSQL等持久层和以MESS、YARN和自身携带的Standalone为资源管理器调度Job完成Spark应用程序的计算。这些应用程序可以来自于不同的组件,如SparkShell/SparkSubmit的批处理、SparkStreaming的实时处理应用、SparkSQL的即席查询、BlinkDB的权衡查询、MLlib的机器学习、GraphX的图处理和SparkR的数学计算等。Spark整体的生态系统图如图15-14所示。1.3基于Spark的大数据计算平台图15-14Spark生态圈Spark概述Spark整体的生态系统图:SparkCore:SparkCore是整个伯克利数据分析栈(BerkeleyDataAnalyticsStack,BDAS)生态系统的核心组件,提供了基于有向无环图(DirectedAcyclicGraph,DAG)的分布式并行计算框架,并提供缓存机制来支持多次迭代计算或者数据共享,大大减少了迭代计算之间读取数据的开销,这对于需要进行多次迭代的数据挖掘和分析性能有很大提升。SparkStreaming:SparkStreaming是一个对实时数据流进行高通量、容错处理的流式处理系统,可以对多种数据源(如Kafka、Flume、Twitter和TCP套接字)进行类似Map、Reduce和Join等复杂操作,并将结果保存到外部文件系统、数据库或应用到实时仪表盘。SparkSQL:SaprkSQL允许用户直接对RDD进行处理,同时也可以查询ApacheHive上存储的外部数据。Mllib:MLlib是Spark生态中的机器学习组件,可以让用户方便地将机器学习和大数据计算结合起来。GraphX:GraphX是Spark中用于图和图并行计算部分,是GraphLab和Pregel在Spark框架下的重写及优化,与其他分布式的图计算框架相比,GraphX能够在Spark框架下完成一栈式的分布式图数据处理,可以方便且高效地完成图计算的一整套流水作业。1.3基于Spark的大数据计算平台Spark概述Spark编程模型整体可以分成驱动程序(Driver)部分和执行器(Executor)部分,结构如图15-15所示。驱动部分主要在客户端驱动Spark集群执行相关操作,执行器主要负责实际的任务执行。驱动程序部分:驱动程序部分主要负责Spark上下文的相关配置、初始化以及关闭。执行器部分:Spark应用程序的执行器负责对不同任务中的数据进行处理,不同的变量在驱动中声明,不同算子中的计算逻辑需要分发给执行器来执行。1.3基于Spark的大数据计算平台图15-15模型组成Spark概述RDD概念弹性分布式数据集是Spark中最基本的计算单元,是对分布式内存的抽象使用,可以通过一系列算子进行操作(主要包括Transformation和Action操作),完成通过使用MapReduce完成的任务,但是作为MapReduce的延伸,RDD解决了MapReduce中存在的问题,能够更加高效的进行计算。RDD作为Spark的核心,它表示已被分区、不可变的并能够被并行操作的数据集合,不同的数据集格式对应不同的RDD实现,RDD必须是可序列化的。RDD可以缓存到内存中,每次对RDD数据集进行操作之后的结果都可以存放到内存中,下一个操作可以直接从内存中输入,省去了MapReduce大量的磁盘IO操作。这对于迭代运算比较常见的机器学习算法、交互式数据挖掘来说,效率提升非常大。其具有以下特点:分区只读依赖缓存检查点1.3基于Spark的大数据计算平台Spark概述RDD的操作在Spark的应用程序开发过程中,需要使用驱动程序来连接工作节点进行相关的操作。通过驱动程序可以定义一个或多个RDD以及围绕RDD相关的操作,同时记录RDD之间的继承关系。在操作过程中的RDD数据都保存在工作节点的内存中,其工作流程图如图15-16所示。Spark中涉及到RDD的操作大致可以分为四种,分别为创建操作、转换操作、控制操作和行动操作。1.3基于Spark的大数据计算平台图15-16Spark运行架构图SparkSQLSparkSQL基本原理SparkSQL是Spark中用来处理结构化数据的子模块,提供了DataFrame用来实现数据的抽象描述,并且可以将其作为分布式SQL查询引擎。先前的Hive是将HiveSQL转换成MapReduce,然后提交到集群上执行,大大简化了编写MapReduce程序的复杂性。但是MapReduce这种计算模型执行效率比较慢,为了解决这一问题,SparkSQL应运而生。与Hive不同,SparkSQL是将SparkSQL转换成RDD,然后提交到集群执行,执行效率高,同时SparkSQL也支持从Hive中读取数据。SparkSQL提供了方便的调用接口,用户可以同时使用Scala、Java和Python语言开发基于SparkSQLAPI的数据处理程序,并通过SQL语句与Spark代码交互。目前SparkSQL使用Catalyst优化器来对SQL语句进行优化处理,从而实现更加高效地行。通过SparkSQL处理后可以将结果存储到外部存储系统中。更重要的是,基于Spark的DataFrame,SparkSQL可以和Spark中的其他子系统(如SparkStreaming、Graphx和MLlib)无缝集成,这样就可以在一个技术栈中完成对数据的批处理、实时流处理和交互式查询等多种数据处理业务。1.3基于Spark的大数据计算平台SparkSQLSparkSQL基本原理DataFrame是一种以RDD作为基础进行抽象封装的分布式数据表示,类似于关系数据库中的二维数据表,但在底层具有针对分布式更丰富的优化。DataFrame可以从各种来源构建,如结构化数据文件、Hive中的表、外部数据库或者现有RDD。DataFrame与RDD的区别在于,DataFrame本身带有Schema元数据,也就是DataFrame中表示的二维数据表中的每一列都附带有名称和数据的类型。同时由于DataFrame中带有数据的结构信息,在运行任务时可以针对不同的数据类型进行优化,提高整体运行的效率。1.3基于Spark的大数据计算平台图15-17DataFrame数据结构信息SparkSQLSparkSQL运行机制SparkSQL对SQL语句的处理和关系型数据库类似,即词法/语法解析、绑定、优化、执行。SparkSQL会先将SQL语句解析成一棵树,然后基于规则对Tree进行绑定、优化等处理过程。SparkSQL由Core、Catalyst、Hive、Hive-ThriftServer四部分构成。其中,Core负责处理数据的输入和输出,如获取数据,查询结果输出成DataFrame等;Catalyst

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论