基于Infiniband网络的分布式并行数据库系统及数据处理方法与流程

文档序号:18009849发布日期:2019-06-25 23:52阅读:235来源:国知局
本发明涉及分布式并行数据库系统及数据处理方法,特别是涉及一种基于infiniband网络的分布式并行数据库系统及数据处理方法。
背景技术
::数据库技术产生于20世纪年代后期,其理论与技术发展极为迅速,应用也日益广泛。随着微型计算机的广泛应用,为加强和扩大微型计算机处理数据的功能,要求将许多分布在不同地点上的微型计算机互连起来参与共同工作。这样数据库进入了分布式数据库时代。20世纪90年代以来,分布式数据库系统进入商品化应用阶段,传统的关系数据库产品发展成以计算机网络及多任务操作系统为核心的分布式数据库产品。传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩充,数据库应用已经普遍建立于计算机网络之上。这时集中式数据库系统表现出它的不足:数据按实际需要已在网络上分布存储,再采用集中式处理,势必造成通信开销大;应用程序集中在一台计算机上运行,一旦该计算机发生故障,则整个系统受到影响,可靠性不高;集中式处理引起系统的规模和配置都不够灵活,系统的可扩充性差。在这种形势下,集中式数据库的“集中计算”概念向“分布计算”概念发展,以分布式为主要特征的数据库系统的研究与开发受到人们的注意。分布式并行处理数据库是数据库技术与网络技术相结合的产物,在数据库领域已形成一个分支。在分布式并行处理数据库中,涉及数据存储、数据入库、数据查询等核心业务,因此服务器间数据传输量巨大,在特定条件下,目前的万兆网会因网络吞吐量不能满足多服务器数据处理速度而形成瓶颈,影响整体分布式并行处理数据库集群性能,另一方面,万兆网在内存损耗,数据处理延时等方面日益不能满足要求。分布式数据库系统需要一种更先进的网络基础,以及与之相配套的系统和配置方式。技术实现要素:发明目的:本发明要解决的技术问题是提供一种基于infiniband网络的分布式并行数据库系统及数据处理方法,解决了现有万兆网网络在分布式并行处理数据库中特定场景下的网络带宽瓶颈、内存损耗和数据处理延时等方面的问题,通过数据库系统架构、数据分布存储、数据加载模式和数据查询等方面的设计,为分布式并行数据库提供一整套数据处理方法,突破应用场景瓶颈,提升数据库集群数据处理性能。技术方案:本发明所述的基于infiniband网络的分布式并行数据库系统,外接若干个数据源,系统中包括调度集群、数据集群和管理集群,每个集群由至少2台数据节点组成,数据节点之间使用infiniband网络连接;所述调度集群,采用统一的访问接口,负责数据的分发、查询结果的收集汇总和任务调度,实现多路数据请求在多个数据节点上的并行处理;所述数据集群,用于整个数据库系统的数据存储和数据计算,接收来自经调度集群分解的任务并将分解的任务分布到指定的数据节点上进行相应计算,执行结果通过调度集群返回给应用程序;所述管理集群,用于管理整个数据库系统,存储数据库系统的关键信息。进一步的,所述管理集群存储的信息包括并不限于数据分布方式、各节点状态、主备节点一致性状态。进一步的,系统中设置的数据集群数据节点和所述数据源的数量比值为n,n为计算网络吞吐量和单数据节点加载速度的比值向下取整后的值。进一步的,所述数据库系统的4个配置参数heap_large、heap_data、heap_temp、buffer_insert的总和不超过系统总内存的80%。进一步的,数据节点包括主节点和备份节点,主节点和备份节点同时进行工作,其中一个节点出现异常之后,退出服务,由另外一个节点接管工作,当异常节点从异常状态恢复到正常状态后进行数据传输,进行数据的恢复工作,确保主节点和备份节点的分片数据一致性。本发明所述的一种数据处理方法,基于上述的系统,包括:调度节点将数据进行数据分片,将所述数据分片按照分片规则分布到数据节点上进行存储,并建立用于查询的索引;数据节点在从调度节点接受到各自的加载文件段指令后,会按照调度节点指定给它的文件偏移量读取文件,并进行hash计算,同时按照hash分布表映射,进行数据拆分处理,将拆分后的数据传输到对应的数据节点;调度节点控制数据节点,数据节点根据调度节点发送的查询条件对不符合条件的数据进行过滤,然后将所有过滤后的数据传输到调度节点所指定的一个数据节点上,若查询条件中还有排序要求,在此数据节点上进行排序。进一步的,所述的分片规则为hash分片规则,所述的hash分片规则,在创建hash分布表时,通过指定某列为hash分布列,数据入库时,根据hash分布列的数据值计算hash值,以确定该数据的存储分片。进一步的,所述的分片规则为随机分片规则,所述的随机分片规则,创建随机分布表时,使数据随机且均匀分布到数据集群所有分片上,并交由管理集群记录其分布等信息。进一步的,所述的分片规则为复制分片规则,所述的分片规则为根据具体业务要求将维度表设置为复制表,复制表在每个节点上存储完整数据。进一步的,方法还包括,调度节点控制数据节点进行去重,然后把所有数据节点上的去重后的数据传输到调度节点所指定的一个数据节点上来,再进行去重,统计数量。有益效果:本系统能够实现一种基于infiniband网络的分布式并行数据库系统及数据处理方法,结合分布式并行处理数据库集群节点服务器数量多的现状,充分利用infiniband网络高带宽、低延时、低内存的特性,设计将网络应用到数据的方式,其中包括数据库系统配置、数据加载入库、数据查询和数据计算等。本发明通用性强,突破了当前数据库系统的网络带宽瓶颈、存储空间和计算延时的限制,保证系统高可用性,为用户提供高性能服务。附图说明图1是本实施例数据库系统部署架构图;图2是数据分片示意图;图3是分片冗余备份示意图;图4是多节点提供服务示意图;图5是数据加载优化示意图;图6是网络rdma过程图;图7是哈希分布示意图。具体实施方式本实施例的分布式并行处理数据库部署架构如图1所示,分布式并行处理数据库采用了联邦架构。本发明的数据库系统是分布式的,安装部署的时候需要两台或以上的服务器,以下将服务器成为节点,通常把这一系列具有相同功能或特点的n个节点称做集群,本发明按照功能把集群分为调度集群、数据集群和管理集群,对应的按照功能将节点分为调度节点和数据节点。本发明的调度集群包括分布式访问层和分布式定位层;所述分布式访问层采用统一的访问接口,使分布式并行处理数据库作为一个完整的逻辑整体进行访问;所述分布式定位层作为数据的分布和收集者,负责数据的分发、查询结果的收集汇总和任务调度;在查询访问多个数据节点上的数据时,并发式的访问处理能够实现多路数据请求在多个数据节点上的并行处理,从而实现了高效的分布式数据访问。本发明的数据集群包括分布式存储层和分布式计算层,负责整个数据库系统的数据存储和数据计算,接收来自经调度集群分解的任务并将分解的任务分布到指定的数据节点上进行相应计算,执行结果通过调度集群返回给应用程序;本发明的管理集群包括管理层,作为整个数据库系统的管理者,主要存储数据分布方式、各节点状态、主备节点一致性状态等关键信息。分布式并行数据库通过并行使用多个cpu和磁盘来将诸如装载数据、建立索引、执行查询等操作并行化以提升性能的数据库系统。在组成大规模计算机集群的时候,通常有两种特性要考虑:并行和分布式。并行强调多节点同时执行,共同解决一个大问题,通常在严格的高性能网络环境中,有严格的执行要求和反馈时限。或者通过良好的分发极致,分布式并行处理不同的任务,从而达到数据处理高性能的需求。在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。海量数据仓库存储的特征是事实表数据量大,这就对数据存储空间有了更高的要求,传统的数据库无法对超大的数据表进行存储,更无法实现数据分析功能。分布式并行处理数据库为避免大量数据存储到单一节点上,数据按照随机、哈希等方法进行分片分布到数据节点上,然后建立数据的索引方便查询,也就是说将超大的数据表进行数据和索引分片进行存储,数据与其相关的索引的分片存储在一个数据节点中。本发明采用多个数据节点进行分布式存储,能够实现更大数据规模的存储,同时能够发挥多节点并行计算的优势,提升数据查询分析性能。如图2所示,每个数据节点内又可分成几个独立的更小单位用来存储数据的主分片,目的是使数据分布更加平滑,数据库系统可以采用hash分片规则、随机分片规则和复制分片规则的一种或若干种。下面是hash分片规则、随机分片规则和复制分片规则的三种数据分片规则的具体机制的说明。hash分片规则:创建hash分布表时,通过指定某列为hash分布列,数据入库时,根据hash分布列的数据值计算hash值,以确定该数据的存储分片。在系统中,数据的hash分布采用一致性hash算法,在分布式并行处理数据库集群结构发生变化时,仅需要迁移少量数据。数据hash分布,配合系统中提供的高效并行执行计划,可以实现极高的查询性能,查询性能随分布式并行处理数据库集群节点数的增加线性递增。随机分片规则:分布式并行处理数据库集群中创建随机分布表时,采用负载均衡思想,统筹资源调度存储,使数据随机且均匀分布到集群所有分片上,并交由管理集群记录其分布等信息。复制分片规则:对数据量较小,变化不大的维度表,可设计为复制表。复制表在每个节点上存储的是完整数据。通过复制分布表,可以减少在关联过程中的节点间“拉表”,提升数据库关联处理的效率。使用sql创建表的时候默认是随机,需要加参数的,都通过参数设置一张表使用哪种规则来存储。为防止数据丢失,分布式并行处理数据库集群会备份主分片数据到其它备份分片上,形成冗余备份。如图3所示,以一个主分片只有一个备份为例,把node1中的t_n1表冗余备份到node2中,那么t_n1表的可用节点为node1和node2,在查询t_n1表时这两个节点都可以被选择为执行节点。但是,如果t_n2表的可用节点也为node1和node2时,应避免t_n1表和t_n2表选取相同的执行节点。例如都选择node1,将造成node1的资源消耗较大,从而拖慢sql的整体运行效率。为高效利用资源,规定node1为t_n1表的执行主节点,只有此主节点不可用时才会选择node2;同理,规定node2为t_n2表的执行主节点,只有此主节点不可用时才会选择node1。如此,node1和node2总能分担执行任务,达到效率最大化。节点间协调如图4所示。在分布式并行处理数据库中,使用主备机制来实现整个系统的高可用,当主节点出现异常之后,可以切换到备份节点继续进行工作。系统还可以采取的方法是同时使用主备节点提供服务,这个时候节点就无主备的区分,多节点同时提供服务进行工作,其中一个节点出现异常之后,退出服务,由其余节点接管工作,当节点从异常状态恢复到正常状态后会进行数据传输,进行数据的恢复工作,确保主分片和备份分片的数据一致性,提供高可用服务。分布式并行处理数据库集群通过sql方式实现数据高速加载,支持ftp、http、hadoop等多种数据源。集群在每个节点内部,执行数据加载时,充分利用节点上多核并行处理资源,实现基于多核处理架构下的横向并行处理(利用基于多核的多线程处理,每个线程分别处理不同列数据或者数据段)和纵向并行处理(不同处理节点间流水式处理)效果,从而可充分利用单个节点服务器上的计算资源。并在数据落盘时,按照数据包(65536行的列数据构成一个数据包)单位实施落盘操作,在数据包落地之前中间数据缓冲到内存中,不同数据包的处理之间又构成流水并行式操作,所以数据加载可以达到高度的资源利用率,并充分利用缓存的效果。且根据列式存储特征,在数据落盘时,实现在磁盘上顺序读写,所以最终可达到很高的加载性能。在加载阶段就考虑利用集群的全体计算资源能力,将更多的节点参与到加载处理的hash散列计算和数据分发中。加载过程中,集群中的各个节点在从协调节点接受到各自的加载文件段指令后,会按照协调节点指定给它的文件偏移量读取文件,并进行散列计算,同时按照hashmap映射,进行数据拆分处理,将散列计算后的数据记录通过网络传输到对应的节点。操作过程如图5所示:数据传输到对应的节点更详细的说法是传输到对应的主分片上,因为数据冗余备份机制的存在,主分片上的数据会通过网络进行数据的传输,备份完整数据到备份分片上。加载过程中,由于网络吞吐量的原因,分布式并行处理数据库集群达到一定规模,而且为了提高分布式并行处理数据库性能往往采用性能配置更好的服务器,因此集群消费数据的能力远大于网络生产的能力,由于木桶效应,导致整体集群加载性能达到瓶颈。此外,主节点和备份节点间传输的用于数据恢复的数据量和数据加载的数据量相同,因此采用infiniband高带宽的特点提升数据库集群性能。在本分布式并行处理数据库中采用sql作为主要交互式语言。sql语言风格统一,简洁易学易用,是专门为统计和数据分析开发的语言,不仅适合开发人员,也适用于分析业务人员,能够大幅简化数据的操作和交互过程。本文结合sql语言和业务场景进行需求场景分析。需要知道的一个重要的概念是,在分布式并行处理数据库中存在多个数据节点用以存放数据,存放的结构化数据按照某种分布规则(哈希分布,随机分布等)分布到不同数据节点上来。当结构化数据入库成功后,可以使用标准sql语句进行ddl,dml操作,特别在一些查询操作时,非常依赖数据节点间通过网络传输数据的速度,infiniband网络因其高带宽,低延迟,内存开销小成为首选。infiniband采用双队列程序提取技术,使应用程序直接将数据从适配器送入到应用内存(称为远程直接存储器存取或rdma),反之依然。在tcp/ip协议中,来自网卡的数据先拷贝到核心内存,然后再拷贝到应用存储空间,或从应用空间将数据拷贝到核心内存,再经由网卡发送到internet。这种i/o操作方式,始终需要经过核心内存的转换,它不仅增加了数据流传输路径的长度,而且大大降低了i/o的访问速度,增加了cpu的负担。而sdp协议则是将来自网卡的数据直接拷贝到用户的应用空间,从而避免了核心内存参入。这种方式就称为零拷贝,它可以在进行大量数据处理时,达到该协议所能达到的最大的吞吐量。infiniband的传输过程相比较以太网的tcp/ip传输协议要更加的简单,如图6所示,所有的使用infiniband网络的应用程序都需要先将它自己的数据放入infiniband已经预先分配好的内存,这可以认为是infiniband数据区。然后infiniband数据区会将其中包含的数据全部推送给网卡,由网卡中的rdma模块通过infiniband网络发送到目的机器。目的机器的rdma模块在接受这个数据后,将会把这个数据放入infiniband数据区,这个数据区也是预先在这台目的主机上申请好的。infiniband数据区获取到之后,就可以供应用程序使用了。下面列举多表查询、去重和排序的三种场景的说明。多表查询场景:多表查询,又称表联合查询,即一条sql语句涉及到的表有多张,数据通过特定的连接进行联合显示。在进行多表查询时,例如sql为selecta.*,b.*fromtableaainnerjointablebbona.id=b.id;若a表,b表按照不同字段哈希分布在不同的数据节点上,进行关联查询时,会对id列数据进行哈希计算,每一个哈希值对应指定的一个数据节点,确保两张表id值相同的数据只存在于同一数据节点上。然后将符合条件a.id=b.id的数据通过网络进行传输,从一个数据节点发送到另一个数据节点,即数据通过网络传输从一台服务器传输到另外一台服务器,确保a值相同的两个表在同一节点上,最后再在各个节点上执行关联查询。图7为数据哈希分布,形象的展现通过计算列哈希值确定其分布节点。去重场景:在下面场景需要将海量的数据传输到同一节点上:在统计表中某个字段去重后的数量的场景中,例如sql语句为selectcount(distinctcompany_name)fromt;各个数据节点上存有独立的数据,当执行此sql时,一个错误的做法是先在各个节点上执行count(distinct)命令,然后所有节点统计(count)数累加得到统计结果。这样得到的结果往往会大于实际值,错误的原因在于去重(distinct),要执行去重操作,优化的做法是先在节点上进行去重,然后需要把所有服务器节点上的去重后的数据通过网络传输到同一个节点上来,再进行去重,统计数量。排序场景:在一些排序的场景中,例如sql语句为select*fromtwherea>50orderbya;由于数据存放在各个数据节点上,当执行这个sql时,有两种处理方法,一种为先把所有数据通过网络传输到同一节点上来,进行过滤,排序。另一种方法为先在各个节点上过滤,然后传输到同一节点,再排序。显然,第二种方法有效的多。上面三个场景涉及到服务器间大数据量的数据传输,因此采取高带宽的infiniband网络用以打破网络吞吐量瓶颈。采用infiniband网络的优点不仅仅在于高带宽,下面将介绍其低内存、低延时在分布式并行处理数据库中的数据处理方法。分布式并行处理数据库集群启动时,会读取集群配置文件进行相关初始化操作,其中与内存相关的四个配置参数和含义分别为heap_large(sort、join、group操作时内存堆大小)、heap_data(管理数据包缓存堆大小)、heap_temp(管理临时内存堆大小)、buffer_insert(用于设置批量insert数据时中间buffer的大小)。要求上面四个参数的总和不能超过系统总内存的80%,否则启动时会报错。其中heap_large设置的更大可以大大改善分布式并行处理数据库集群的查询能力,因为distinct、hash_join、sort等操作会从堆内存申请空间,当这些操作申请的空间不足时,会降低效率,因此在合理范围内设置数值越大越会降低瓶颈的发生概率,采用infiniband网络可以降低网络带来的cpu负载,将更多计算资源提供给数据库的查询计算功能。此外,infiniband在主机侧采用rdma技术释放cpu负载,把主机内数据处理的时延从几十微秒降低到1微秒,面对庞大的服务器节点,无形中大大提升分布式并行处理数据库的执行效率。实际配置数据库系统包括以下步骤:步骤1:准备多台服务器用以搭建分布式并行处理数据库,分别安装infiniband驱动并配置hca端口,重启服务器,搭建infiniband网络通信环境。步骤2:数据库安装的配置文件中配置分布式并行处理数据库集群对应的ip地址、端口、登录用户名、密码和内核等基本信息,启动安装,调度节点和数据节点分别安装和启动相应服务,进行分布式并行处理数据库安装。步骤3:使用数据库前需初始化分布式并行处理数据库,预生成分片规则,数据入库时按照分片规则存储到相应节点上。登录数据库,使用创建分片命令设置每个服务器节点上主分片个数,主分片对应的备份分片个数,执行命令成功后自动生成分片规则映射表。步骤4:数据库服务配置文件中配置与内存相关的heap_large、heap_data、heap_temp、buffer_insert四个参数,即设置内存堆大小、管理数据包缓存堆大小、管理临时内存堆大小、批量insert数据时中间buffer大小。重启数据库服务,充分利用内存计算资源进行查询工作,数据处理过程中延时降低,大大缩短查询时间。步骤5:进行数据库连接,创建hash分布表,加载数据到该表中,加载过程中对指定列进行hash运算,并根据分片映射表到对应分片进行存储,同时按照冗余备份规则通过数据传输的方式到其它节点上形成完整备份,在数据源到数据库集群的数据传输和数据库节点间的数据传输由infiniband高带宽网络支持,按照infiniband网络吞吐量和单个服务器加载能力,计算网络吞吐量和单服务器加载速度的比值,比值向下取整记为n,即一个数据源对应n个服务器节点,由此来合理配比数据源和服务器节点的比例。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1