一种基于ClickHouse的数据分发方法和装置与流程

文档序号:37519826发布日期:2024-04-01 14:34阅读:15来源:国知局
一种基于ClickHouse的数据分发方法和装置与流程

本发明涉及数据处理,特别是涉及一种基于clickhouse的数据分发方法和装置。


背景技术:

1、目前大数据需求分析处理愈演愈烈,需要借助大量的分布式处理软件来进行协同分析处理,从而提高大数据分析的计算效率。抽取转换加载工具(extract-transform-load,简称为:etl)是数据处理、构建数据仓库的一个重要工具软件,完成异构数据源的抽取、清洗转换和加载的一个过程。

2、clickhouse是一个用于联机分析的列式数据库管理系统。clickhouse采用多主架构,即使用多个主节点(简称为:master节点)管理多个从节点(简称为:slave节点),而etl在向各slave节点进行数据写入时,须通过master节点进行数据分发,即数据先由etl到达master节点,再由master节点转发给各slave节点上的数据库实例,如图1所示,但这样所造成的是,数据整体写入的速度直接受到master节点的处理性能限制,即数据写入速度受限,导致无法适应在数据量极大,数据采集速度快的应用场景下的应用,且当master节点故障时,也会影响数据的写入。

3、鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。


技术实现思路

1、本发明要解决的技术问题是现有技术中数据先由etl到达master节点,再由master节点转发给各slave节点上的数据库实例,导致数据整体写入的速度直接受到master节点的处理性能限制,即数据写入速度受限,导致无法适应在数据量极大,数据采集速度快的应用场景下的应用,且当master节点故障时,也会影响数据的写入。

2、本发明采用如下技术方案:

3、第一方面,本发明提供了一种基于clickhouse的数据分发方法,方法包括:

4、关闭master节点的数据写入功能,并使各etl与各数据库实例直接建立通信;

5、etl向各数据库实例写入测试数据,根据测试数据写入结果,判断数据库实例是否可用,若数据库实例可用,则etl根据待写数据的大小,将待写数据直接分发到一个或多个数据库实例中。

6、优选的,所述关闭master节点的数据写入功能,具体包括:

7、使用system stop distributed sends命令,关闭master节点的分布式队列;

8、并将master节点的端口号设置为第一预设端口号,将各数据库实例的端口号设置为第二预设端口号;将第一预设端口号设置为只读端口,将第二预设端口号设置为写入端口。

9、优选的,在用system stop distributed sends命令,关闭master节点的分布式队列之后,所述方法还包括:

10、判断master节点的分布式队列中是否存在数据,若存在数据,则执行systemflush distributed命令,以将所述数据分发到相应数据库实例中。

11、优选的,所述方法还包括:

12、将insert_distributed_sync参数设置为1,将insert_distributed_timeout参数设置为1。

13、优选的,将insert_distributed_sync参数设置为1代表将分发方式设置为同步分发,将insert_distributed_timeout参数设置为1代表设置分发超时时间为1ms;master节点的数据分发时长大于1ms,master节点在数据分发时长达到1ms时,数据分发超时,master队列的分发队列被阻塞,以将master节点设置为只读属性。

14、优选的,每个数据库实例包含巡逻表,所述etl向各数据库实例写入测试数据,根据测试数据写入结果,判断数据库实例是否可用,具体包括:

15、将测试数据写入到所述巡逻表中,并将测试数据写入结果记录到dbs.write文件中,通过读取dbs.write文件,获取所述测试数据写入结果;

16、若所述测试数据写入结果为写入成功,则判断得到对应的数据库实例可用。

17、优选的,所述将待写数据直接分发到一个或多个数据库实例中,具体包括:

18、按照所需写入的数据库实例的数量n,将待写数据划分为k×n组数据组,将各数据组轮询写入到相应数据库实例中;其中,k为正整数。

19、优选的,在进行数据查询时,通过master节点查询相应数据库实例上的数据,或直接从数据库实例上查询数据。

20、优选的,每台etl配置至少两台数据库实例。

21、第二方面,本发明还提供了一种基于clickhouse的数据分发装置,用于实现第一方面所述的基于clickhouse的数据分发方法,所述装置包括:

22、至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行第一方面所述的基于clickhouse的数据分发方法。

23、第三方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的基于clickhouse的数据分发方法。

24、本发明通过关闭master节点的数据写入功能,并在各etl与各数据库实例之间直接建立通信,从而无需使用master节点进行数据转发,而是直接通过etl将数据写入到数据库实例中,从而能够打破master节点对于数据写入速度的限制,以满足大数据采集量和快速采集场景下的数据写入速率需求,并在master节点出现故障时,依旧能够维持数据写入功能的正常进行。



技术特征:

1.一种基于clickhouse的数据分发方法,其特征在于,方法包括:

2.根据权利要求1所述的基于clickhouse的数据分发方法,其特征在于,所述关闭master节点的数据写入功能,具体包括:

3.根据权利要求2所述的基于clickhouse的数据分发方法,其特征在于,在用systemstop distributed sends命令,关闭master节点的分布式队列之后,所述方法还包括:

4.根据权利要求2所述的基于clickhouse的数据分发方法,其特征在于,所述方法还包括:

5.根据权利要求4所述的基于clickhouse的数据分发方法,其特征在于,将insert_distributed_sync参数设置为1代表将分发方式设置为同步分发,将insert_distributed_timeout参数设置为1代表设置分发超时时间为1ms;master节点的数据分发时长大于1ms,master节点在数据分发时长达到1ms时,数据分发超时,master队列的分发队列被阻塞,以将master节点设置为只读属性。

6.根据权利要求1所述的基于clickhouse的数据分发方法,其特征在于,每个数据库实例包含巡逻表,所述etl向各数据库实例写入测试数据,根据测试数据写入结果,判断数据库实例是否可用,具体包括:

7.根据权利要求1所述的基于clickhouse的数据分发方法,其特征在于,所述将待写数据直接分发到一个或多个数据库实例中,具体包括:

8.根据权利要求1所述的基于clickhouse的数据分发方法,其特征在于,在进行数据查询时,通过master节点查询相应数据库实例上的数据,或直接从数据库实例上查询数据。

9.根据权利要求1所述的基于clickhouse的数据分发方法,其特征在于,每台etl配置至少两台数据库实例。

10.一种基于clickhouse的数据分发装置,其特征在于,包括:


技术总结
本发明涉及数据处理技术领域,提供了一种基于ClickHouse的数据分发方法和装置。方法包括:关闭master节点的数据写入功能,并使各ETL与各数据库实例直接建立通信;ETL向各数据库实例写入测试数据,根据测试数据写入结果,判断数据库实例是否可用,若数据库实例可用,则ETL根据待写数据的大小,将待写数据直接分发到一个或多个数据库实例中。本发明通过关闭master节点的数据写入功能,并在各ETL与各数据库实例之间直接建立通信,从而无需使用master节点进行数据转发,而是直接通过ETL将数据写入到数据库实例中,能够打破master节点对于数据写入速度的限制,以满足大数据采集量和快速采集场景下的数据写入速率需求。

技术研发人员:王化民,张本军,孙昌燕
受保护的技术使用者:武汉绿色网络信息服务有限责任公司
技术研发日:
技术公布日:2024/3/31
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1