CN106936899B - 分布式统计分析***的配置方法及分布式统计分析*** - Google Patents
分布式统计分析***的配置方法及分布式统计分析*** Download PDFInfo
- Publication number
- CN106936899B CN106936899B CN201710105031.7A CN201710105031A CN106936899B CN 106936899 B CN106936899 B CN 106936899B CN 201710105031 A CN201710105031 A CN 201710105031A CN 106936899 B CN106936899 B CN 106936899B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- fragment
- leader
- statistical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000007619 statistical method Methods 0.000 title claims abstract description 86
- 238000000034 method Methods 0.000 title claims abstract description 50
- 239000012634 fragment Substances 0.000 claims abstract description 92
- 238000013467 fragmentation Methods 0.000 claims abstract description 20
- 238000006062 fragmentation reaction Methods 0.000 claims abstract description 20
- 230000005012 migration Effects 0.000 claims description 23
- 238000013508 migration Methods 0.000 claims description 23
- 238000013500 data storage Methods 0.000 claims description 18
- 238000007726 management method Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 11
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 238000005096 rolling process Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 239000012792 core layer Substances 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 239000010410 layer Substances 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1034—Reaction to server failures by a load balancer
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式统计分析***的配置方法,所述分布式统计分析***包括ZooKeeper集群,服务节点和计算节点集群,所述方法包括:选举计算节点集群中的领导节点,根据数据分片原则在各计算节点中分片数据,并在数据分片的副本中选举领导分片;服务节点收到统计分析请求后,向领导节点申请计算节点,领导节点将任务量最小的计算节点反馈给服务节点;服务节点获得反馈的计算节点后,将统计请求发送给该计算节点;计算节点查找领导分片并向领导分片申请得到空闲的数据分片副本,并将统计任务分配给该数据分片副本执行统计任务。本发明还提供了基于上述配置方法的分布式统计分析***。
Description
技术领域
本发明涉及一种分布式统计分析***的配置方法,特别是一种配置集群管理、数据存储及迁移、统计分析查询和统计任务负载分担功能的配置方法,以及由该配置方法得到的分布式统计分析***。
背景技术
分布式***是一种由多个处理资源相互连接在一起的计算机***。这些处理资源又可以称为节点设备,在统一的控制下来执行同一人物。如中国专利CN102497280就公开了一种分布式***,其能够实现多个设备节点之间的相互感知。提高了管理效率。但是其并没有公开对各设备节点具体执行任务的管理和配置。
分布式***通常需要具备统计分析的功能。但是目前的分布式统计***中并没有根据处理资源的实际运行情况来在设备节点之间分配统计分析任务。因此会发生处理资源没有被充分利用的情况。
发明内容
本发明提供一种分布式统计分析***的配置方法和由该配置方法得到的分布式统计分析***。保证***的高可用性和高可扩展性,并实现统计分析任务的负载分担。
为解决上述问题,第一方面,本发明提供一种分布式统计分析***的配置方法,所述分布式统计分析***包括ZooKeeper集群,服务节点和计算节点集群,所述方法包括:
选举计算节点集群中的领导节点,根据数据分片原则在各计算节点中分片数据,并在数据分片的副本中选举领导分片;
服务节点收到统计分析请求后,向领导节点申请计算节点,领导节点将任务量最小的计算节点反馈给服务节点;
服务节点获得反馈的计算节点后,将统计请求发送给该计算节点;
计算节点查找领导分片并向领导分片申请得到空闲的数据分片副本,并将统计任务分配给该数据片副本执行统计任务。
可选地或优选地, 所述方法还包括:
服务节点将更新的数据发送给领导节点,领导节点查找到对应的数据分片的所有副本并将数据同步到该数据分片的各个副本。
可选地或优选地,所述数据同步采用两阶段提交协议,若全部成功,则返回成功,若任一个副本失败,则回退并返回失败。
可选地或优选地, 所述方法还包括:在调整数据分片个数或分片规则的情况下,重新映射数据和数据分片的关系。
可选地或优选地,所述方法还包括在设备状态发生变化时,对分布式统计***进行调整的步骤,所述调整包括以下至少一种:
当检测到设备故障时,检查各shard副本的个数及分布情况,若各shard副本的个数差别较大,则对shard进行分布调整和迁移,以保证各shard副本的个数的基本相同;以及
当检测到新设备加入时,检查各shard副本的个数和分布情况,若shard的副本的个数有差异,则将副本个数少的shard复制到新设备,若个数相同,则重新进行分片。
可选地或优选地,所述计算节点查找领导分片并向领导分片申请得到空闲的数据分片副本,并将统计任务分配给该数据片副本执行统计任务包括:
执行计算任务的所述计算节点将统计作业拆分成多个任务,并根据分片规则将需要统计的ID列表进行分组,计算节点将任务和ID组发送给对应的领导分片,由领导分片负责选择交由负载较少的数据分片副本执行任务,在所有的任务执行完毕后,执行节点收集所有计算结果并对结果进行合并,继而返回给服务节点。
可选地或优选地,如果统计作业需要多次访问数据,则由执行节点在收集合并结果后,根据统计作业需求再次进行任务拆分和结果合并,直到统计作业运行完毕为止。
第二方面,本发明提供一种分布式统计分析***,包括ZooKeeper集群,服务节点和计算节点集群。还包括:
集群管理模块,用于选举计算节点集群中的领导节点,根据数据分片原则在各计算节点中分片数据,并在数据分片的副本中选举领导分片;
统计分析模块,用于服务节点收到统计分析请求后,向领导节点申请计算节点,领导节点将任务量最小的计算节点反馈给服务节点;服务节点获得反馈的计算节点后,将统计请求发送给该计算节点;计算节点查找领导分片并向领导分片申请得到空闲的数据分片副本,并将统计任务分配给该数据片副本执行统计任务。
可选地或优选地,还包括:
数据存储模块,用于服务节点将更新的数据发送给领导节点,领导节点查找到对应的数据分片的所有副本并将数据同步到该数据分片的各个副本。
可选地或优选地,所述数据同步采用两阶段提交协议,若全部成功,则返回成功,若任一个副本失败,则回退并返回失败。
本发明提供的分布式统计***的配置方法和分布式统计分析***,可以将任务分担,并优先分配给负载较小的计算节点和数据分片运行,使得相对空闲的处理资源能够自动得到充分利用,提高了统计效率,并保证***具有高扩展性和高稳定性。
附图说明
图1为本发明实施例一所提供的分布式统计分析***的架构图;
图2为本发明实施例一所提供的分布式统计分析***的配置方法流程图;
图3为本发明实施例一所提供的分布式统计分析***的配置方法的另一个流程图;
图4为本发明实施例一所提供的分布式统计分析***的配置方法的另一个流程图;
图5为本发明实施例一所提供的分布式统计分析***的配置方法的另一个流程图;
图6为本发明实施例二所提供的分布式统计分析***的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
实施例一
本实施例提供了一种分布式统计分析***的配置方法,其中,如图1所示,该分布式统计分析***主要由三部分组成:ZooKeeper集群,服务节点和计算节点集群。ZooKeeper集群用于计算节点集群的状态管理。服务节点负责统计服务的分解和整合以及数据的更新控制等工作。服务节点接收前端的统计分析请求,并解析为内容搜索和统计分析两部分,内容搜索部分的任务交由内容搜索引擎运行,统计分析部分的任务交由计算节点集群运行。计算节点集群用于数据的分片和备份、计算任务的拆分和结果合并、计算任务的负载等工作。
术语解释:如无特别说明,在本发明中涉及的有关术语具有如下的含义:
术语解释:
ZooKeeper:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致***的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper包含一个简单的原语集, 提供Java和C的接口。在本发明中,ZooKeeper集群用于计算节点集群的状态管理。
Solr:Solr是用Java编写、运行在Servlet容器(如 Apache Tomcat 或Jetty)的一个独立的全文搜索服务器。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。Solr是高度可扩展的,并提供了分布式搜索和索引复制。
Shard:数据分片;
Shard副本:数据分片副本(Shard-1 Replica、Shard-2 Replica、Shard-3Replica……);
Core:管理shard副本和针对副本数据进行统计分析工作的功能集合(图1中的Core1、Core2……);Core包括两部分内容:统计分析和数据存储。针对数据存储,core作为两阶段提交协议的participant参与数据的更新操作。Core内shard的各个副本采用实例方式存储,本地的直接调用实例,远端的绑定远端服务。
overseer:计算节点中的领导节点。
基于上述分布式统计分析***,如图2-5所示,其配置方法包括如下的步骤:
S1:选举计算节点集群中的领导节点,根据数据分片原则在各计算节点中分片数据,并在数据分片的副本中选举领导分片。
在步骤S1中,主要的目的是为了对各个计算节点集群按照预定的策略进行管理。这部分功能可以由ZooKeeper集群来完成。
集群的初始状态和终止状态如下:
1)初始状态
ZooKeeper集群;
各独立的计算节点,core已经初始化,指定core所属的shard;
2)终止状态
计算节点选举出overseer,每个节点均知晓overseer及其他计算节点;
各core分配一个shard,同一shard的副本不能出现在同一个计算节点上;
每个shard的多个副本之间选举出一个shard leader,同一个shard的各副本知晓该shard的leader和其他成员.
下面具体说明在初始状态和终止状态之间,集群管理步骤的各个子步骤:
S101:overseer选举
基于ZooKeeper集群,众多计算节点可以轻松的选举出overseer。步骤如下:
1)启机,各计算节点向ZooKeeper注册各计算节点的IP;
路径:StatsAnalysis/live_nodes/
2)各计算节点监听StatsAnalysis/live_nodes/,获得并保存所有的计算节点的IP信息;
3)在获取各计算节点IP后,各计算节点向zookeeper注册争夺overseer;
路径:StatsAnalysis/overseer/
4)各计算节点监听StatsAnalysis/overseer/,获得并保存overseer的IP信息;
S102:数据分片
在数据分片的过程中,由配置文件指定core所属的shard,需保证同一shard的副本不能处于同一个计算节点上。
数据分片的具体步骤如下:
1)启机,各计算节点根据配置的core的数目初始化core,并向zookeeper注册各core;路径为:StatsAnalysis/cores/;
2)overseer根据各core所属的shard确定数据分片规则,并同步到其他计算节点,具体见数据存储部分(下文叙述);路径:StatsAnalysis/shard/Barrel2Shard;
S103:Shard leader选举
在shard分配完成后,各shard内副本进行leader的选举。步骤如下:
1)Core监听StatsAnalysis/cores/,获取所属shard;
2)Shard各副本向ZooKeeper集群注册争夺shard leader;
路径为:StatsAnalysis/shardleader/1,StatsAnalysis/shardleader/2,…;
3)各副本监听各自所属shard leader在zookeeper中的路径,获取并保存各***rd leader的信息;
综上,集群管理模块的整体配置流程可归纳成如下步骤:
1)配置ZooKeeper集群;
2)计算节点启机,与控制页面建立联系,配置shard数目、单个shard副本数目,触发加入集群动作;
3)各计算节点创建自己的Cores(个数由配置参数决定),向ZooKeeper注册,注册路径为StatsAnalysis/cores/;
4)各计算节点向ZooKeeper注册,注册路径为StatsAnalysis/live_nodes/;
5)各计算节点向ZooKeeper争夺overseer,路径为StatsAnalysis/overseer/;
6)overseer监听StatsAnalysis/live_nodes/获取所有的计算节点;
7)overseer向zookeeper创建路径StatsAnalysis/shardleader/{shard编号},用于shard副本之间争夺shard leader;
8)overseer监听StatsAnalysis/cores/获取各core,根据cores、副本数、shard数进行shard副本分配,并将shard编号写入各core;
9)各core监听各自对应的节点,读取节点值获得分配的shard编号;
10)各core向ZooKeeper注册争夺shard leader,路径为StatsAnalysis/shardleader/{shard编号};
11)shard leader监视StatsAnalysis/cores/获取本shard的各个副本。
S2:服务节点收到统计分析请求后,向领导节点申请计算节点,领导节点将任务量最小的计算节点反馈给服务节点;服务节点获得反馈的计算节点后,将统计请求发送给该计算节点;计算节点查找领导分片并向领导分片申请得到空闲的数据分片副本,并将统计任务分配给该数据分片副本执行统计任务。
在步骤S2中,服务节点收到客户端的统计分析请求后,将请求分解为查询语句和统计语句,首先持查询语句从solr获取匹配的企业ID列表,然后从overseer获取空闲的计算节点并将企业ID列表和统计语句发送给该计算节点进行统计分析。
统计分析大致可以划分为三个步骤:统计语句分析,任务拆分和结果合并。统计语句分析负责解析统计语句。当统计分析作业经overseer转交给执行节点时,执行节点将作业拆分成多个任务,并根据分片规则将需要统计的企业ID列表进行分组,执行节点负责将任务和企业ID组发送给对应shard的leader,由shard leader负责选择交由负载较少的副本执行任务。在所有的任务执行完毕后,执行节点收集所有计算结果并对结果进行合并,继而返回给服务节点。任务拆分是的单个子任务只占用较小的处理资源,并且能快速完成,有利于子任务的重新分配,避免因任务执行时间过程造成出现空闲资源浪费的情况。在一些实施例中,如果作业需要多次访问数据,作为进一步改进,则由执行节点在收集合并结果后,根据作业需求再次进行任务拆分和结果合并,直到作业运行完毕为止。这样即使多次访问数据也能够保持统计结果的一致性。
在统计分析的三个步骤中:
统计分析语句的格式可以按照现有的DP数据平台的图标分析规则设定。解析代码取自单机版统计分析代码。
任务的拆分具体为将统计分析作业相关的企业ID列表根据分片规则进行分组,组的个数为shard的个数。每个任务负责一个组的数据的统计工作。具体统计分析的代码由单机版统计分析代码修改实现。
结果合并步骤包括收集各个任务的统计结果,并根据统计分析需求进行后处理。具体合并的代码由单机版统计分析代码修改实现。
综上,统计分析查询模块执行的具体流程可以归纳为:
1)服务节点收到统计分析请求,将请求拆分为两部分:搜索请求和统计请求;
2)服务节点调用solr服务查询相关企业ID列表;
3)服务节点监听目录StatsAnalysis/overseer/获取当前的overseer,并向overseer申请计算节点,overseer将任务量最小的计算节点反馈给服务节点(完成计算节点之间的负载分担);
4)服务节点获得任务运行的计算节点,并将统计请求和相关企业ID列表发送给该计算节点;
5)计算节点根据分片规则,将企业ID列表进行分组;
6)计算节点查找到各shard leader的位置并向其申请空闲的shard副本(完成shard副本之间的负载分担);
7)计算节点将统计语句和相关的企业ID发送给个shard副本,由它们完成统计,如果一次交互无法得到结果,由计算节点负责多次交互;
统计分析的子任务的统计工作中,可以根据输入的企业ID列表从本地Shard副本中获取相应的企业信息,并根据统计规则进行分析。
8)计算节点汇总各shard副本的统计结果,并返回给服务节点进行结果缓存。
S3:服务节点将更新的数据发送给领导节点,领导节点查找到对应的数据分片的所有副本并将数据同步到该数据分片的各个副本。
步骤S3主要为了完成数据的存储工作。数据同步采用两阶段提交协议,若全部成功,则返回成功,若任一个副本失败,则回退并返回失败。
确定数据分片规则包括:
1)获取企业ID的低10位,按值分组获得1024个桶(即Barrel);
2)使用表存储Barrel到shard的映射关系。
Barrel ID到Shard ID的映射关系在ZooKeeper集群中的存储位置为StatsAnalysis/shard/,znode名称为Barrel2Shard,值为映射关系的json字符串。
综上,数据存储的整体流程可以归纳如下:
1)服务节点监听StatsAnalysis/overseer/,获取当前的overseer,并将更新数据发送给overseer;
2)Overseer根据分片规则计算获得shard id,并查找到该shard的leader,将更新的数据发送给shard leader;
3)Shard leader将数据一致更新到该shard的所有副本。
S4:在调整数据分片个数或分片规则的情况下,重新映射数据和数据分片的关系。
步骤S4为数据的迁移工作。数据迁移分为两种情况:复制shard的单个副本和修改shard个数重新分片。在数据迁移的过程中,不允许数据的更新操作。
在复制副本时,如果遇到设备故障或添加新设备的情况,可能需要从shardleader同步数据,此时可以采用复制整个副本的策略。
重新分片中,在更改shard数目时,对数据重新进行分片,修改Barrel到shard的映射关系并更新到ZooKeeper,将变更映射关系的Barrel的数据从原shard复制到新shard,并从原shard中删除。
S5:在设备状态发生变化时,对分布式统计***进行调整,所述调整包括以下至少一种:
当检测到设备故障时,检查各shard副本的个数及分布情况,若各shard副本的个数差别较大,则对shard进行分布调整和迁移,以保证各shard副本的个数的基本相同;以及
当检测到新设备加入时,检查各shard副本的个数和分布情况,若shard的副本的个数有差异,则将副本个数少的shard复制到新设备,若个数相同,则重新进行分片。
这样,当设备发生故障或有新设备被添加时,***能够自动地及时调整资源的分配,保证了***的扩展性。
实施例二
本实施例提供了一种分布式统计分析***,该***由实施一中的配置方法配置,并得到执行该配置方法的相应模块。具体包括:集群管理模块、数据存储及迁移模块、统计分析查询模块和统计任务负载分担模块(如图6所示)。
集群管理模块用于各计算节点与ZooKeeper集群的连接的建立与维持,具体用于选举计算节点集群中的overseer节点(即领导节点),根据数据分片原则在各计算节点中分片数据,以及在数据分片的副本中选举领导分片(即shard leader)。
在设备状态变化时,需要调整shard副本的分布。设备状态变化主要包括设备故障和新设备加入两种情况。
当检测到设备故障时,集群管理模块检查各shard副本的个数及分布情况,若各shard副本的个数差别较大,则对shard进行分布调整和迁移,以保证各shard副本的个数的基本相同,增强集群的健壮性。
当检测到新设备加入时,检查各shard副本的个数和分布情况,若shard的副本的个数有差异,则将副本个数少的shard复制到新设备,若个数相同,则可以重新进行分片。
此处, shard编号可以在配置文件中指定,不采用集群自动指定分片状况。
调整shard副本的分布可以由集群管理模块和数据迁移模块(下文叙述)配合完成。
集群的初始状态和终止状态如下:
1)初始状态
ZooKeeper集群;
各独立的计算节点,core已经初始化,指定core所属的shard;
2)终止状态
计算节点选举出overseer,每个节点均知晓overseer及其他计算节点;
各core分配一个shard,同一shard的副本不能出现在同一个计算节点上;
每个shard的多个副本之间选举出一个shard leader,同一个shard的各副本知晓该shard的leader和其他成员。
在初始状态和终止状态之间,集群管理模块的配置过程对应于实施例一中步骤S101-S103的内容。在此不再赘述。
数据存储及迁移模块,用于服务节点将更新的数据发送给overseer,overseer查找到对应的shard的所有副本并将数据同步到该shard的各个副本。数据同步采用两阶段提交协议,若全部成功,则返回成功,若任一个副本失败,则回退并返回失败。当设备故障或加入新设备时,集群的状态会发生变化,待集群状态稳定后,根据集群中的shard状况,由overseer支持数据迁移的工作。
按照上述的配置方法,数据存储及迁移模块具体包括数据存储模块和数据迁移模块(分别对应于实施一中S3和S4步骤的内容)。
数据存储模块用于将数据更新到各shard的各副本处,并保证shard内数据一致性。更进一步地,数据存储模块还用于确定分片规则和一致性协议,确定分片规则包括:
1)获取企业ID的低10位,按值分组获得1024个桶;
2)使用表存储Barrel到shard的映射关系。
一致性协议包括:Shard内各副本之间采用两阶段提交协议保证数据更新的原子性。
两阶段提交协议由两阶段提交协议模块,并具体由两部分组成:协调者(Coordinator)和参与者(Participant)。协调者起到管理协调作用,参与者为数据存取的实际操作者。
数据迁移模块用于调整shard分布,在shard个数及分片规则不变的情况下,仅用于复制和删除shard副本内容,在调整shard个数或分片规则的情况下,用于重新映射数据关系。
数据迁移分为两种情况:复制shard的单个副本和修改shard个数重新分片。在数据迁移的过程中,不允许数据的更新操作。具体过程可以参考实施一中步骤S4的实现方式。
统计分析查询模块,用于服务节点收到客户端的统计分析请求并将请求分解为查询语句和统计语句后,首先持查询语句从solr获取匹配的企业ID列表,然后从overseer获取空闲的计算节点并将企业ID列表和统计语句发送给该计算节点进行统计分析。计算节点重写统计语句,然后访问各shard leader获取各shard内负载较小的副本,并将运行任务发送到该副本所在节点执行。在计算节点收到各shard返回的计算结果后进行汇总并返回统计结果。
当任务长时间未执行完毕时,计算节点杀死超时任务并重新选择一个shard副本运行任务。代码中采用rmi同步调用时,则不实现杀死超时任务的功能。
统计分析查询模块具体被配置为执行以下流程:
统计分析大致可以划分为三个步骤:统计语句分析,任务拆分和结果合并。统计语句分析负责解析统计语句。当统计分析作业经overseer转交给执行节点时,执行节点将作业拆分成多个任务,并根据分片规则将需要统计的企业ID列表进行分组,执行节点负责将任务和企业ID组发送给对应shard的leader,由shard leader负责选择交由负载较少的副本执行任务。在所有的任务执行完毕后,执行节点收集所有计算结果并对结果进行合并,继而返回给服务节点。如果作业需要多次访问数据,则由执行节点在收集合并结果后,根据作业需求再次进行任务拆分和结果合并,直到作业运行完毕为止。查找负载较少的计算节点或shard副本的任务交由负载分担模块(下文叙述)执行。
统计分析的三个步骤的具体实现方式可以参考实施例一中S2的对应内容来实现。
统计任务负载分担模块,用于和集群管理模块以及统计分析查询模块配合使用。在一些实施例中,也可以作为统计分析查询模块的一部分,在统计分析的过程中执行有关负载分担的任务。负载分担分为两种情况:基于作业的负载分担和基于任务的负载分担,基于作业的负载分担负责选择运行统计分析作业的计算节点,基于任务的负载分担负责选择运行计算任务的shard的副本。
负载分担在提高设备利用率方面起着重要作用,主要工作内容是监视有效的运算资源及任务分配情况,为申请运算资源的任务选取较为空闲的运算资源。
在统计分析查询模块的执行过程中,如上文叙述,主要包括以下两种负载分担子步骤:
第一种为选取执行节点和任务运行副本。这部分可以单独集成为一个选取子模块,独立使用,是为了提高代码复用。
第二种为由overseer向各个计算节点提取计算节点的任务量,由shard leader向各个副本提取shard各副本的任务量。最终按照选取任务量最小的运算资源的选取策略选择运算资源。
作为进一步改进,本***还可以包括以下的模块:
设备故障调节模块。设备故障的影响可以分为三方面:对集群状态的影响,对统计分析的影响和对数据存储的影响。因此设备故障调节模块可以用于执行以下三种步骤:
1、对集群状态的影响
当计算节点和cores丢失,重新选举overseer和shard leader的。选举方式为自动选举,不需要再编写代码;
2、对统计分析的影响
如果统计分析作业所在计算节点故障,则服务节点重新触发统计分析过程;
如果子任务所在计算节点故障,则由作业所在计算节点重新触发该任务;
3、对数据存储的影响
对数据存储不做任何响应。
设备添加调节模块。添加设备存在两种情况:闪断和新设备加入。对于闪断的情况,设备添加调节模块用于添加超时限制,仅当集群状态变化超时后,集群状态变化(不包括overseer和shard leader)才触发数据存储的改变(重连的设备当作新设备加入,原有数据删除),如果在超时时间内集群状态恢复(不包括overseer和shard leader),则不做数据存储的改变。在超时计算期间,不允许数据的更新操作。
新设备的加入可能引起两方面的后果:shard副本的复制与迁移,重新分片。两种情况均以桶为单位,采用json字符串格式,由目标从源拉取的方式进行迁移。在数据变更期间,不允许数据的更新操作,但不能影响正常的统计分析功能。数据的迁移工作(包括复制和重新分片)均有overseer主持。
Shard副本的复制:以桶为单位进行复制,仅当整个副本全部迁移完毕才算完成,为了防止源在复制或转移的过程中故障。
重新分片:以桶为单位进行转移,转移完毕一个桶,则修改桶到shard的映射信息,标志一个桶的信息重新分片成功。重新分片仅当Shard副本数目均满足指定副本数目且剩余足够core数目的时候才会进行,且不能与Shard副本的复制与迁移同时进行。
在各个模块的接口设计过程中,本发明实施例考虑到了分布式***的层次。计算节点集群包含三个不同的层次:计算节点层、Core层、Statistics和DataStore层。计算节点层负责集群拓扑的维护,分片规则的维护,数据的分片,数据的复制及迁移,重新分片、统计分析作业的分解与结果汇总等工作。Core层负责各Shard的数据更新的一致性。Statistics负责单个shard副本的统计分析,而DataStore负责Shard副本数据的存储。
负载分担分为两个层次:计算节点层的负载分担和Core层的负载分担,两个负载分担仅处理的内容不同。Core层同一shard的多个副本之间的一致性采用两阶段提交协议,保证数据操作的原子性,Shard leader的core充当协调器,而shard副本的各个core充当参与单元。整个集群的状态管理及领导者选举等基于zookeeper集群实现。
因此,在设计接口时,按照上述的层次,并参考各个模块之间的数据交换关系设计即可。
以上对本发明所提供的分布式统计分析***的配置方法和分布式统计分析***进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (6)
1.分布式统计分析***的配置方法,所述分布式统计分析***包括ZooKeeper集群,服务节点和计算节点集群,其特征在于,所述方法包括:
选举计算节点集群中的领导节点,根据数据分片原则在各计算节点中分片数据,并在数据分片的副本中选举领导分片;
服务节点收到统计分析请求后,向领导节点申请计算节点,领导节点将任务量最小的计算节点反馈给服务节点;服务节点获得反馈的计算节点后,将统计请求发送给该计算节点;计算节点查找领导分片并向领导分片申请得到空闲的数据分片副本,并将统计任务分配给该数据分片副本执行统计任务;
在调整数据分片个数或分片规则的情况下,重新映射数据和数据分片的关系;
数据迁移分为两种情况:复制分片的单个副本和修改分片个数重新分片;在数据迁移的过程中,不允许数据的更新操作;
在复制副本时,如果遇到设备故障或添加新设备的情况,若需要从领导分片同步数据,则采用复制整个副本的策略;
所述计算节点查找领导分片并向领导分片申请得到空闲的数据分片副本,并将统计任务分配给该数据分片副本执行统计任务包括:
执行计算任务的所述计算节点将统计作业拆分成多个任务,并根据分片规则将需要统计的ID列表进行分组,计算节点将任务和每组ID发送给对应的领导分片,由领导分片负责选择交由负载空闲的数据分片副本执行任务,在所有的任务执行完毕后,执行节点收集所有计算结果并对结果进行合并,继而返回给服务节点;如果统计作业需要多次访问数据,则由执行节点在收集合并结果后,根据统计作业需求再次进行任务拆分和结果合并,直到统计作业运行完毕为止。
2.根据权利要求1所述的分布式统计分析***的配置方法,其特征在于,所述方法还包括:
服务节点将更新的数据发送给领导节点,领导节点查找到对应的数据分片的所有副本并将数据同步到该数据分片的各个副本。
3.根据权利要求2所述的分布式统计分析***的配置方法,其特征在于,所述数据同步采用两阶段提交协议,若全部成功,则返回成功,若任一个副本失败,则回退并返回失败。
4.一种分布式统计分析***,包括ZooKeeper集群,服务节点和计算节点集群,其特征在于,还包括:
集群管理模块,用于选举计算节点集群中的领导节点,根据数据分片原则在各计算节点中分片数据,并在数据分片的副本中选举领导分片;
统计分析模块,用于服务节点收到统计分析请求后,向领导节点申请计算节点,领导节点将任务量最小的计算节点反馈给服务节点;服务节点获得反馈的计算节点后,将统计请求发送给该计算节点;计算节点查找领导分片并向领导分片申请得到空闲的数据分片副本,并将统计任务分配给该数据分片副本执行统计任务;
在调整数据分片个数或分片规则的情况下,重新映射数据和数据分片的关系;
数据迁移分为两种情况:复制分片的单个副本和修改分片个数重新分片;在数据迁移的过程中,不允许数据的更新操作;
在复制副本时,如果遇到设备故障或添加新设备的情况,若需要从领导分片同步数据,则采用复制整个副本的策略;
所述计算节点查找领导分片并向领导分片申请得到空闲的数据分片副本,并将统计任务分配给该数据分片副本执行统计任务包括:
执行计算任务的所述计算节点将统计作业拆分成多个任务,并根据分片规则将需要统计的ID列表进行分组,计算节点将任务和每组ID发送给对应的领导分片,由领导分片负责选择交由负载空闲的数据分片副本执行任务,在所有的任务执行完毕后,执行节点收集所有计算结果并对结果进行合并,继而返回给服务节点;如果统计作业需要多次访问数据,则由执行节点在收集合并结果后,根据统计作业需求再次进行任务拆分和结果合并,直到统计作业运行完毕为止。
5.根据权利要求4所述的分布式统计分析***,其特征在于,还包括:
数据存储模块,用于服务节点将更新的数据发送给领导节点,领导节点查找到对应的数据分片的所有副本并将数据同步到该数据分片的各个副本。
6.根据权利要求5所述的分布式统计分析***,其特征在于,所述数据同步采用两阶段提交协议,若全部成功,则返回成功,若任一个副本失败,则回退并返回失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710105031.7A CN106936899B (zh) | 2017-02-25 | 2017-02-25 | 分布式统计分析***的配置方法及分布式统计分析*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710105031.7A CN106936899B (zh) | 2017-02-25 | 2017-02-25 | 分布式统计分析***的配置方法及分布式统计分析*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106936899A CN106936899A (zh) | 2017-07-07 |
CN106936899B true CN106936899B (zh) | 2021-02-05 |
Family
ID=59424728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710105031.7A Expired - Fee Related CN106936899B (zh) | 2017-02-25 | 2017-02-25 | 分布式统计分析***的配置方法及分布式统计分析*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106936899B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107231437A (zh) * | 2017-07-18 | 2017-10-03 | 郑州云海信息技术有限公司 | 一种任务备份管理方法及装置 |
CN109951508B (zh) * | 2017-12-21 | 2022-02-25 | ***通信集团重庆有限公司 | 基于Zookeeper的请求协调方法及装置、计算机设备及存储介质 |
CN108572845B (zh) * | 2018-03-15 | 2022-05-31 | 华为技术有限公司 | 分布式微服务集群的升级方法及相关*** |
CN108829709A (zh) * | 2018-05-03 | 2018-11-16 | 广州金山安全管理***技术有限公司 | 分布式数据库管理方法、装置、存储介质和处理器 |
CN108737543B (zh) * | 2018-05-21 | 2021-09-24 | 高新兴智联科技有限公司 | 一种分布式物联网中间件及工作方法 |
CN109214132B (zh) * | 2018-10-30 | 2023-06-30 | 中国运载火箭技术研究院 | 一种面向lvc仿真的非耦合流式大通量异步任务处理*** |
CN110209910B (zh) * | 2019-05-20 | 2021-06-04 | 无线生活(杭州)信息科技有限公司 | 索引切换调度方法及调度装置 |
CN110597809B (zh) * | 2019-08-21 | 2023-05-23 | 中山大学 | 一种支持树状数据结构的一致性算法***及其实现方法 |
CN112765262B (zh) * | 2019-11-05 | 2023-02-28 | 金篆信科有限责任公司 | 一种数据重分布方法、电子设备及存储介质 |
CN110933107A (zh) * | 2019-12-16 | 2020-03-27 | 许昌学院 | 分布式统计分析***的配置方法及分布式统计分析*** |
CN111737018B (zh) * | 2020-08-26 | 2020-12-22 | 腾讯科技(深圳)有限公司 | ZooKeeper配置文件存储处理方法、装置、设备及其介质 |
CN113268472B (zh) * | 2021-07-15 | 2021-10-12 | 北京华品博睿网络技术有限公司 | 一种分布式数据存储***及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504663A (zh) * | 2009-03-17 | 2009-08-12 | 北京大学 | 基于群体智能的空间数据副本自适应分布方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697526A (zh) * | 2009-10-10 | 2010-04-21 | 中国科学技术大学 | 分布式文件***中元数据管理的负载均衡方法及其*** |
US9805108B2 (en) * | 2010-12-23 | 2017-10-31 | Mongodb, Inc. | Large distributed database clustering systems and methods |
CN103023970B (zh) * | 2012-11-15 | 2015-07-22 | 中国科学院计算机网络信息中心 | 一种物联网海量数据存储方法及*** |
CN103258036A (zh) * | 2013-05-15 | 2013-08-21 | 广州一呼百应网络技术有限公司 | 一种基于p2p的分布式实时搜索引擎 |
CN103414761B (zh) * | 2013-07-23 | 2017-02-08 | 北京工业大学 | 一种基于Hadoop架构的移动终端云资源调度方法 |
CN103929500A (zh) * | 2014-05-06 | 2014-07-16 | 刘跃 | 一种分布式存储***的数据分片方法 |
CN104008152B (zh) * | 2014-05-21 | 2017-12-01 | 华南理工大学 | 支持海量数据访问的分布式文件***的架构方法 |
US9767130B2 (en) * | 2014-12-31 | 2017-09-19 | Nexenta Systems, Inc. | Methods and systems for key sharding of objects stored in distributed storage system |
US11030171B2 (en) * | 2015-01-09 | 2021-06-08 | Ariba, Inc. | Elastic sharding of data in a multi-tenant cloud |
CN105550229B (zh) * | 2015-12-07 | 2019-05-03 | 北京奇虎科技有限公司 | 分布式存储***数据修复的方法和装置 |
-
2017
- 2017-02-25 CN CN201710105031.7A patent/CN106936899B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504663A (zh) * | 2009-03-17 | 2009-08-12 | 北京大学 | 基于群体智能的空间数据副本自适应分布方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106936899A (zh) | 2017-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106936899B (zh) | 分布式统计分析***的配置方法及分布式统计分析*** | |
US10795905B2 (en) | Data stream ingestion and persistence techniques | |
US10691716B2 (en) | Dynamic partitioning techniques for data streams | |
CA2929777C (en) | Managed service for acquisition, storage and consumption of large-scale data streams | |
EP3069228B1 (en) | Partition-based data stream processing framework | |
EP3069495B1 (en) | Client-configurable security options for data streams | |
US9460185B2 (en) | Storage device selection for database partition replicas | |
CA2930026C (en) | Data stream ingestion and persistence techniques | |
CN102253869A (zh) | 可缩放的容错元数据服务 | |
TW201229795A (en) | Web service patterns for globally distributed service fabric | |
US10712964B2 (en) | Pre-forking replicas for efficient scaling of a distributed data storage system | |
US10747739B1 (en) | Implicit checkpoint for generating a secondary index of a table | |
CN114448983A (zh) | 基于ZooKeeper的分布式数据交换方法 | |
US20070276945A1 (en) | Fault-Tolerant Resource Committal |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210205 |