一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于存储与计算分离的大数据多数据源分析方法及系统与流程

2021-11-22 13:10:00 来源:中国专利 TAG:
1.本发明涉及数据分析领域,具体来说,涉及基于存储与计算分离的大数据多数据源分析方法及系统。
背景技术
::2.当前利用大数据技术进行数据分析通常有三种方式:3.方案一:依赖非实时的数据预处理的批量计算,有较长的时延,时效性不理想,无法面对快速变化的数据分析需求。比如需要分析的数据是是分散在多个不同的数据源里面的,甚至数据和存储技术都可能不一致的,传统的做法是通过etl方式先对不同的数据源进行抽取,清洗和数据统一拉通到一个集中的地方,再进行批量统计分析,最后吐出到结果表,提供jdbc的接口给应用查询4.方案二:使用专用的即席查询分布式系统,一般是存储和计算一体的专用系统,具有部署不灵活,需要在已有的系统的进行改造和数据迁移,额外占用数据存储空间的缺点。5.方案三:计算和存储分离,也是本方案采用的方式,一般的计算和存储分离会存在效率问题,计算节点需要花费大量的实际通过网络进行数据抽取,实际的性能往往比方案二的效果差。6.另外,现有的大数据技术进行数据分析无法解决目前大表实时统计的bi需求,且无法解决数据量巨大和结构复杂带来的时效性较差的问题。7.针对相关技术中的问题,目前尚未提出有效的解决方案。技术实现要素:8.针对相关技术中的问题,本发明提出基于存储与计算分离的大数据多数据源分析方法及系统,以克服现有相关技术所存在的上述技术问题。9.为此,本发明采用的具体技术方案如下:10.根据本发明的一个方面,提供了基于存储与计算分离的大数据多数据源分析方法,该方法包括以下步骤:11.将大数据集群的计算集群和缓存集群进行分离部署,并构建外挂分析平台;12.采用分布式技术部署的计算集群将数据源中的数据抽取至计算节点,并对数据进行实时计算;13.利用分布式技术部署的缓存集群架构,并加速计算集群从数据源抽取数据并提供分布式缓存。14.进一步的,所述数据源包括分布式存储hdfs、关系数据库mysql、消息中间件kafka及文件系统。15.进一步的,所述计算集群具备动态扩展、同步多数据源及实时计算功能;16.其中,计算集群采用分布式架构,并适应性分配计算能力;17.计算集群采用插件的方式连接不同的数据源,并通过不同的连接器的实现方式,对接不同类型的数据源。18.进一步的,所述缓存集群和所述计算集群基于infiniband网络,实现分布式计算的高速连接,且所述缓存集群包括内存、固态硬盘和本地磁盘的三级缓存处理结构,所述缓存集群中的缓存节点对计算节点提供加速能力,且所述缓存节点采用内存、固态存储及硬盘存储的存储介质将数据存储至存储节点。19.进一步的,所述采用分布式技术部署的计算集群将数据源中的数据抽取至计算节点,并对数据进行实时计算包括利用infiniband网络从缓存集群的节点查询数据,缓存节点先从存储节点抽取数据,然后再把数据返回到计算节点,并且缓存节点根据lru原则,把读取的数据加载到缓存中,方法如下:20.对数据块对应的文件计算哈希值,通过哈希值取模并选择缓存的worker节点;21.计算节点连接选择的缓存worker节点;22.缓存worker节点判断文件是否已经缓存,如果已经缓存则通过infiniband高速网络直接返回到计算节点,否则启动异步线程,从远程hdfs读取数据,并缓存至本地节点;23.缓存worker首先在内存区域寻找空间,如果有空间,则直接把文件下载到内存区域中,否则通过lru规则,置换内存中已经缓存的文件至硬盘区域中;24.缓存worker节点下载文件完毕后,把结果返回给计算节点。25.根据本发明的另一个方面,还提供了基于存储与计算分离的大数据多数据源分析系统,该系统包括部署模块、计算模块及缓存模块;26.其中,所述部署模块,用于将大数据集群的计算集群和缓存集群进行分离部署,并构建外挂分析平台;27.所述计算模块,用于采用分布式技术部署的计算集群将数据源中的数据抽取至计算节点,并对数据进行实时计算;28.所述缓存模块,用于利用分布式技术部署的缓存集群架构,并加速计算集群从数据源抽取数据并提供分布式缓存。29.进一步的,所述计算集群具备动态扩展、同步多数据源及实时计算功能;30.其中,计算集群采用分布式架构,并适应性分配计算能力;31.计算集群采用插件的方式连接不同的数据源,并通过不同的连接器的实现方式,对接不同类型的数据源。32.本发明的有益效果为:33.(1)、本发明通过设计把大数据集群的存储节点和计算节点进行分离部署,能够解决传统大数据集群的计算和存储一体化,从而造成资源无法有效扩展的问题;通过把计算资源和存储资源进行隔离,计算资源可以实现按需进行动态调整,而不依赖于存储节点的设备限制,基本上不占用存储集群的计算资源。34.(2)、本发明中的计算层进行抽离后,可以对接多套数据源,甚至可以进行大数据的数据源和传统的关系型数据源,消息中间件等数据源进行关联计算,大大提高了系统的数据分析能力和灵活性。35.(3)、通过构建一层分布式的缓存层,用于对数据进行加速处理,缓存利用内存、固态硬盘及本地磁盘的三级处理结构,在性能和成本方面取到一个平衡点;缓存集群和计算集群基于高速的infiniband网络,实现分布式计算的高速连接;这种高速的互联技术,允许缓存集群和计算集群分离部署,降低单节点对内存的需求,提升部署的灵活度。附图说明36.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。37.图1是根据本发明实施例的基于存储与计算分离的大数据多数据源分析方法的流程示意图;38.图2是根据本发明实施例的基于存储与计算分离的大数据多数据源分析方法的整体计算框架图;39.图3是根据本发明实施例的基于存储与计算分离的大数据多数据源分析方法中计算集群架构图;40.图4是根据本发明实施例的基于存储与计算分离的大数据多数据源分析方法中缓存集群逻辑图;41.图5是根据本发明实施例的基于存储与计算分离的大数据多数据源分析方法中计算集群运算逻辑图;42.图6是根据本发明实施例的基于存储与计算分离的大数据多数据源分析系统的原理框图。43.图中:44.1、部署模块;2、计算模块;3、缓存模块。具体实施方式45.为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。46.根据本发明的实施例,提供了基于存储与计算分离的大数据多数据源分析方法及系统。47.现结合附图和具体实施方式对本发明进一步说明,如图1所示,根据本发明实施例的基于存储与计算分离的大数据多数据源分析方法,该方法包括以下步骤:48.s1、将大数据集群的计算集群和缓存集群进行分离部署,并构建外挂分析平台;49.如图2所示,使用独立的计算集群和缓存集群构建的外挂分析平台,能够实现存储和计算的解耦,直接对多数据源进行实时查询,避免需要经过etl对数据进行抽取和清洗,能够支持多数据源多集群的库表查询,支持多数据类型,例如hive,mysql,hbase,hdfs,kafka等。50.此外,所述缓存集群和所述计算集群基于infiniband网络,实现分布式计算的高速连接,利用高速网络infiniband,使计算与缓存解耦,计算和缓存的节点数可以进行灵活搭配和扩展,相比要求缓存需要和计算节点搭载同一台主机使用的分布式缓存方案更加灵活和节省成本。51.s2、采用分布式技术部署的计算集群将数据源中的数据抽取至计算节点,并对数据进行实时计算;52.如图3所示,其中,计算集群提供分布式计算能力,使用分布式部署的计算集群,计算能力是可以动态扩展的,与部署的主机呈线性提升关系,负责从数据源抽取数据到计算节点本地,然后进行实时计算,并且最终把结果返回到调用的客户端(bi)。53.s3、利用分布式技术部署的缓存集群架构,并加速计算集群从数据源抽取数据并提供分布式缓存。54.如图4所示,具体的,以内存的方式对查询的远端数据进行缓存,解决数据抽取导致网络带宽的压力问题。实时进行大表的统计查询,需要把数据从远端抽取到计算几点中进行计算,势必会对网络和io造成压力,并且在网络较为复杂的集群拓扑条件下,其他各种原因的扰动也会对查询造成不稳定的影响。通过引入缓存集群,对常用的数据进行缓存,计算节点通过高速网络和缓存集群互联,可以大幅度提升计算效能,并且避免网络不稳定导致性能下降,降低集群的网络带宽压力和磁盘io压力。55.在一个实施例中,所述数据源包括分布式存储hdfs、关系数据库mysql、消息中间件kafka及文件系统。56.在一个实施例中,所述计算集群具备动态扩展、同步多数据源及实时计算功能;57.其中,计算集群采用分布式架构,并适应性分配计算能力;58.计算集群采用插件的方式连接不同的数据源,并通过不同的连接器(connector)的实现方式,对接不同类型的数据源。59.在一个实施例中,所述缓存集群包括内存、固态硬盘和本地磁盘的三级缓存处理结构,其使用分布式技术部署的缓存集群架构,负责加速计算集群从数据源抽取数据并且提供的分布式缓存,解决数据大量实时传输造成的网络和io带宽压力。60.其中,系统为了降低在计算和存储分离后,计算集群远程提取数据源,解决因为网络抖动等io原因,导致计算效能降低的问题,构建了一层分布式的缓存层,用于对数据进行加速处理。缓存利用内存/固态硬盘/本地磁盘的三级处理结构,在性能和成本方面取到一个平衡点。61.在一个实施例中,所述缓存集群中的缓存节点对计算节点提供加速能力,且所述缓存节点采用内存(mem)、固态存储(ssd)及硬盘存储(hdd)的存储介质将数据存储至存储节点,数据根据存储介质的性能进行由高到低存储。62.具体的,数据写入原理为:默认写入到最快的存储介质(内存),如果没有足够的空间,则尝试写入ssd及hdd,如果都没有足够的空间进行写入,这会进行释放,写入新的数据块。63.数据读取原理为:默认会使用缓存节点进行数据的读取。如果数据在缓存中不存在,则会先从远端数据源读取数据,然后写入缓存到集群中,后续再次读取的时候,就能形成缓存,避免再次重复读取。64.在一个实施例中,所述采用分布式技术部署的计算集群将数据源中的数据抽取至计算节点,并对数据进行实时计算包括利用infiniband网络从缓存集群的节点查询数据,缓存节点先从存储节点抽取数据,然后再把数据返回到计算节点,并且缓存节点根据lru原则,把读取的数据加载到缓存中。65.在一个实施例中,所述缓存节点根据lru原则,把读取的数据加载到缓存中包括以下步骤:66.对数据块对应的文件计算哈希值,通过哈希值取模并选择缓存的worker节点;67.计算节点连接选择的缓存worker节点;68.缓存worker节点判断文件是否已经缓存,如果已经缓存则通过infiniband高速网络直接返回到计算节点,否则启动异步线程,从远程hdfs读取数据,并缓存至本地节点;69.缓存worker首先在内存区域寻找空间,如果有空间,则直接把文件下载到内存区域中,否则通过lru规则,置换内存中已经缓存的文件至硬盘区域中;70.缓存worker节点下载文件完毕后,把结果返回给计算节点。71.计算原理为:72.如图5所示,计算使用sql的方式交互,提供高性能的分布式sql查询引擎,能够应对pb级别的实时计算分析场景。使用标准的ansisql方式,用户直接使用sql进行数据的查询和计算。73.具体的计算和交互,以一个典型的比较简单的sql语句查询为例进行说明:74.selectcount(*),query_table.column_bigfromquery_table.dim_table75.wherequery_table.dim_type=dim_table.dim_type76.groupbyquery_table.column_big;77.这个sql语句查询远端的query_table表,关联维度表dim_table,然后对column_big列进行分组汇总操作。78.步骤1:控制节点的sql解析器对语句进行解析和分解,得知需要对列column_big进行分组汇总。逻辑上完成对操作进行拆解,划分成为下面的子任务:79.1)查询hive数据源的query_table表实际存储物理信息,即表在远程存储集群的数据块存储分布;80.2)查询mysql数据源的dim_table表实际存储物理信息,表数据量;81.3)产生处理逻辑;82.a)把dim_table表的数据作为关联信息先加载到每个节点的内存中,并且进行关联条件预处理;83.b)把query_table表根据数据块进行拆分,分配给计算节点处理;84.c)计算节点关联query_table数据块和dim_table维度信息,进行分组汇总;85.d)控制节点汇总计算节点返回的汇总数据片段。86.步骤2:控制节点通知所有计算节点全量加载维度表dim_table数据到内存中:87.控制节点判断dim_table表存储在mysql上的小批量维度信息,需要先全量加载到每个计算节点的内存中,计算节点通过jdbc驱动,连接远程的mysql,把数据抽全到节点的内存中,并且根据步骤1的处理逻辑,对关联的条件(dim_type)进行分组,并且存储在内存中的哈希表中。88.表1哈希表89.dim_type字段dim_key1dim_table.row1dim_key2dim_table.row2dim_key3dim_table.row3……90.步骤3:控制节点查询表query_table的元数据信息,得知数据存储在远程存储集群的磁盘信息,从而对数据进行分段,确定每个计算节点处理的数据范围。假定当前集群有3个计算节点,数据大小有3gb。91.首先程序得知表query_table的数据的实际存储hdfs目录文件路径:hdfs://mycluster/warehouse/tablespace/managed/hive/query_table92.hdfs的文件是以块作为单位的,一个块大小是128mb,那么3gb的数据,占用24个文件块,那么程序会把任务切分到24个分片大小,这24个分片交给3个计算节点分别计算,每个节点处理8个分片。93.表2hdfs文件编号图[0094][0095][0096]步骤4:控制节点计算引擎,把节点需要计算的数据分片信息下发到计算节点,并且把计算逻辑也分配到计算节点中,并且监听计算节点的任务执行情况。[0097]注意这里并不是一次性固定把24个分片发送到3个计算节点,而只是先对数据和节点进行预分配,并且把24个分配划分成24个任务(task),控制节点会把任务一个个发送给计算节点,只有计算节点完成了上一个计算任务后,控制节点才会把剩余的任务再发送给它,避免了某个计算节点处理速度比较慢,导致整个分布式计算任务被拖累。也就是说可能比较快的计算节点完成自己的分片后,会接管后面比较慢的计算节点的任务。[0098]表3理想的数据任务分片[0099]计算节点数据分片节点11,2,3,4,5,6,7,8节点29,10,11,12,13,14,15,16节点317,18,19,20,21,22,23,24[0100]表4可能实际的数据任务分片[0101][0102][0103]步骤5:通过infiniband网络从缓存集群的节点查询数据,发现有数据,缓存节点直接返回,没有数据,缓存节点先从存储节点抽取数据,然后再把数据返回到计算节点。并且缓存节点根据lru原则,把读取的数据加载到缓存中。[0104]lru算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。实际的数据统计分析,一般是最近的业务经常被访问,所以使用lru策略会极大提高读取效率。[0105]具体的步骤如下:[0106]计算节点需要读取数据块:[0107]bp‑565741745‑172.21.73.29‑1620886021790:blk_1073742928_2286len=134217728live_repl=3;[0108]首先是从缓存节点读取,步骤如下:[0109]1)对数据块对应的文件计算哈希值(hash),通过哈希值取模,选择缓存的worker节点;[0110]2)计算节点连接选择的缓存worker节点;[0111]3)缓存worker节点判断文件是否已经缓存,如果缓存,则通过infiniband高速网络直接返回到计算节点;[0112]4)缓存worker节点发现本地没有缓存,启动异步线程,从远程hdfs读取数据,缓存到本地节点;[0113]5)缓存worker首先在内存区域寻找空间,如果有空间,则直接把文件下载到内存区域中;[0114]6)如果内存区域没有空间,则先通过lru规则,置换内存中已经缓存的文件,置换到硬盘区域中;[0115]7)缓存worker节点下载文件完毕后,会把结果返回给计算节点。[0116]步骤6:计算节点分别对任务(task)的数据进行统计:计算节点从远程获取到数据后,对数据进行独立的统计,节点之间是并行计算的,也就是说,计算能力是可以跟随计算节点的扩展呈线性扩展的。[0117]计算节点分别对任务(task)的数据根据步骤二获取的维度表信息进行关联和汇总:[0118]1)、对任务数据的每一条进行关联条件(dim_type)进行哈希计算;[0119]2)、通过哈希查表,对每一行数据进行过滤,如果没在关联的表中查询到,则进行丢弃;[0120]3)、对于能够关联上的记录,根据列(big_column)进行汇总;[0121]4)、处理完毕task的所有记录后,把汇总结果返回到控制节点中。[0122]步骤7:控制节点获取计算节点返回的每一个task的计算结果,并且把结果进行汇总处理。[0123]控制节点不停的监听计算节点的计算情况,重复步骤4到步骤6,直到所有的task任务都处理完毕,最后进行总体的汇总。[0124]步骤8:控制节点把数据进行汇总,然后返回给客户端。[0125]表5数据汇总表[0126]汇总key汇总key:18key:216…ꢀkey:nk x[0127]如图6所示,根据本发明的另一个实施例,还提供了基于存储与计算分离的大数据多数据源分析系统,该系统包括部署模块1、计算模块2及缓存模块3;[0128]其中,所述部署模块1,用于将大数据集群的计算集群和缓存集群进行分离部署,并构建外挂分析平台;[0129]所述计算模块2,用于采用分布式技术部署的计算集群将数据源中的数据抽取至计算节点,并对数据进行实时计算;[0130]所述缓存模块3,用于利用分布式技术部署的缓存集群架构,并加速计算集群从数据源抽取数据并提供分布式缓存。[0131]在一个实施例中,所述计算集群具备动态扩展、同步多数据源及实时计算功能;[0132]其中,计算集群采用分布式架构,并适应性分配计算能力;[0133]计算集群采用插件的方式连接不同的数据源,并通过不同的连接器的实现方式,对接不同类型的数据源。[0134]技术术语的解释:[0135]hdfs:hadoop分布式文件系统(hdfs)是指被设计成适合运行在通用硬件(commodityhardware)上的分布式文件系统(distributedfilesystem)。[0136]hive:hive是基于hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在hadoop中的大规模数据的机制。[0137]etl,是英文extract‑transform‑load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。[0138]kafka:是一种高吞吐量的分布式发布订阅消息系统。[0139]mysql:是最流行的关系型数据库管理系统之一。[0140]infiniband:是一个用于高性能计算的计算机网络通信标准,它具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。infiniband也用作服务器与存储系统之间的直接或交换互连,以及存储系统之间的互连。[0141]jdbc:是java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。[0142]即席查询(adhoc):是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而即席查询是由用户自定义查询条件的。[0143]计算与存储分离:是一种架构思想,存储计算分离架构可以让大数据集群充分利用资源,可弹性拓展,更灵活,更符合云计算的特性。[0144]综上所述,借助于本发明的上述技术方案,本发明通过设计把大数据集群的存储节点和计算节点进行分离部署,能够解决传统大数据集群的计算和存储一体化,从而造成资源无法有效扩展的问题;通过把计算资源和存储资源进行隔离,计算资源可以实现按需进行动态调整,而不依赖于存储节点的设备限制,基本上不占用存储集群的计算资源。[0145]此外,本发明中的计算层进行抽离后,可以对接多套数据源,甚至可以进行大数据的数据源和传统的关系型数据源,消息中间件等数据源进行关联计算,大大提高了系统的数据分析能力和灵活性。[0146]此外,通过构建一层分布式的缓存层,用于对数据进行加速处理,缓存利用内存、固态硬盘及本地磁盘的三级处理结构,在性能和成本方面取到一个平衡点;缓存集群和计算集群基于高速的infiniband网络,实现分布式计算的高速连接;这种高速的互联技术,允许缓存集群和计算集群分离部署,降低单节点对内存的需求,提升部署的灵活度。[0147]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献