提升ClickHouse数据入库性能的方法及装置制造方法及图纸

技术编号:27146664 阅读:14 留言:0更新日期:2021-01-27 22:02
本发明专利技术公开提升ClickHouse数据入库性能的方法及装置,其中,该方法包括:在生产集群之外,构建一个小型的临时集群,保持生产集群的节点数是临时集群的节点数的整数倍;通过统一的入口程序,将数据写入生产集群的数据表;在配置文件配置临时集群和生产集群的连接信息;查询生产集群的元数据信息;在临时集群创建中间表;将数据以轮询或者随机的方式写入临时集群创建的中间表;执行数据片段的合并;打包数据文件;将文件传输至生产集群;刷新生产集群的元数据信息。该方法及装置提升数据写入的稳定性和效率,没有数据查询的影响,提升数据片段合并的效率,手工触发数据片段合并,提升集群的性能,还提升数据查询的稳定性和效率。还提升数据查询的稳定性和效率。还提升数据查询的稳定性和效率。

【技术实现步骤摘要】
提升ClickHouse数据入库性能的方法及装置


[0001]本专利技术涉及ClickHouse数据入库领域,尤其是提升ClickHouse数据入库性能的方法及装置。

技术介绍

[0002]ClickHouse是一款用于大数据实时分析的列式数据库管理系统。ClickHouse大量的写入操作以及后台的数据片段的合并将消耗大量的集群资源,导致集群性能严重下降,甚至导致ClickHouse对外服务不可用,存在的问题具体如下:
[0003](1)无法限制ClickHouse写入操作使用的CPU、内存等资源,可能导致查询的资源不足,导致运行缓慢甚至内存溢出。
[0004](2)数据写入ClickHouse后,会产生大量的小文件的数据片段,这些数据片段在后台某个未知的时间点进行合并成大文件,将消耗大量的CPU、内存等资源,对集群性能产生较大的影响。
[0005](3)如果资源不足,小文件合并的进程将被阻塞,集群将会存在大量的小文件,影响数据查询的性能。

技术实现思路

[0006]为解决上述存在的问题,本专利技术提供提升ClickHouse数据入库性能的方法及装置。
[0007]为实现上述目的,本专利技术采用下述技术方案:
[0008]在本专利技术一实施例中,提出了提升ClickHouse数据入库性能的方法,该方法包括:
[0009]在生产集群之外,构建一个小型的临时集群,保持生产集群的节点数是临时集群的节点数的整数倍;
[0010]通过统一的入口程序,将数据写入生产集群的数据表;在配置文件配置临时集群和生产集群的连接信息;
[0011]查询生产集群的元数据信息;
[0012]在临时集群创建中间表;
[0013]将数据以轮询或者随机的方式写入临时集群创建的中间表;
[0014]执行数据片段的合并;
[0015]打包数据文件;
[0016]将文件传输至生产集群;
[0017]刷新生产集群的元数据信息。
[0018]进一步地,连接信息包括:集群的主机名、端口和账号。
[0019]进一步地,查询生产集群的元数据信息,包括:
[0020]根据ClickHouse提供的API,在程序中查看生产集群的数据表,获取最新的数据表的schema信息;
[0021]在临时集群创建表,该表的schema信息与生产集群的数据表的schema信息保持一致。
[0022]进一步地,在临时集群创建中间表,包括:
[0023]从生产集群的system.cluster表根据节点和副本信息,确定每个分片的节点的数量;
[0024]从临时集群的system.cluster表获取节点的数量;
[0025]创建中间表的数量为:生产集群每个分片的节点的数量/临时集群节点的数量;
[0026]创建的中间表的命名规则:以生产集群的数据表为前缀,从0开始编号创建的中间表。
[0027]进一步地,将数据以轮询或者随机的方式写入临时集群创建的中间表,包括:
[0028]读取数据,将数据以轮询或者随机的方式写入临时集群创建的中间表,确保每张中间表的数据保持均衡。
[0029]进一步地,执行数据片段的合并,包括:
[0030]在程序中,读取元数据表,获取临时集群每个节点的主机信息,在程序后台通过SSH协议登陆至每台主机,执行数据小文件的合并。
[0031]进一步地,执行数据小文件的合并,包括:
[0032]通过Clickhouse的API主动触发合并,将多个小文件合并为大文件。
[0033]进一步地,打包数据文件,包括:
[0034]在程序中,读取元数据表,获取临时集群每个节点的主机信息,在程序后台通过SSH协议登陆至每台主机,执行打包操作;
[0035]数据插入完成后,打包;
[0036]通过在程序中调用SSH的登陆命令,连接到临时集群的每台主机上,在临时集群创建的中间表所在的数据目录下,按照数据片段的目录进行打包,用于传送至生产集群。
[0037]进一步地,将文件传输至生产集群,包括:
[0038]在程序中,读取元数据表,获取临时集群每个节点的主机信息,在程序后台通过SSH协议登陆至每台主机,执行文件的传输;
[0039]在临时集群的每个节点上,将临时集群形成的压缩文件,按照轮询的方式传输给生产集群的每个分片的节点。
[0040]将文件传输至生产集群的数据表目录下的detached目录中,并进行解压。
[0041]进一步地,刷新生产集群的元数据信息,包括:
[0042]在程序中,读取元数据表,获取生产集群每个节点的主机信息,在程序后台通过SSH协议登陆至每台主机;
[0043]在生产集群,基于命令刷新元数据信息,将detached目录中的数据关联至正式的数据目录,从而对查询可见。
[0044]在本专利技术一实施例中,还提出了提升ClickHouse数据入库性能的装置,该装置包括:
[0045]临时集群构建模块,用于在生产集群之外,构建一个小型的临时集群,保持生产集群的节点数是临时集群的节点数的整数倍;
[0046]集群连接信息配置模块,用于通过统一的入口程序,将数据写入生产集群的数据
表;在配置文件配置临时集群和生产集群的连接信息;
[0047]查询生产集群元数据模块,用于查询生产集群的元数据信息;
[0048]临时集群建表模块,用于在临时集群创建中间表;
[0049]数据写入临时集群模块,用于将数据以轮询或者随机的方式写入临时集群创建的中间表;
[0050]数据文件合并模块,用于执行数据片段的合并;
[0051]文件打包模块,用于打包数据文件;
[0052]文件分发模块,用于将文件传输至生产集群;
[0053]元数据刷新模块,用于刷新生产集群的元数据信息。
[0054]进一步地,集群连接信息配置模块中的连接信息包括:集群的主机名、端口和账号。
[0055]进一步地,查询生产集群元数据模块,具体用于:
[0056]根据ClickHouse提供的API,在程序中查看生产集群的数据表,获取最新的数据表的schema信息;
[0057]在临时集群创建表,该表的schema信息与生产集群的数据表的schema信息保持一致。
[0058]进一步地,临时集群建表模块,具体用于:
[0059]从生产集群的system.cluster表根据节点和副本信息,确定每个分片的节点的数量;
[0060]从临时集群的system.cluster表获取节点的数量;
[0061]创建中间表的数量为:生产集群每个分片的节点的数量/临时集群节点的数量;
[0062]创建的中间表的命名规则:以生产集群的数据表为前缀,从0开始编号创建的中间表。
[0063]进一步地,数据写入临本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.提升ClickHouse数据入库性能的方法,其特征在于,该方法包括:在生产集群之外,构建一个小型的临时集群,保持生产集群的节点数是临时集群的节点数的整数倍;通过统一的入口程序,将数据写入生产集群的数据表;在配置文件配置临时集群和生产集群的连接信息;查询生产集群的元数据信息;在临时集群创建中间表;将数据以轮询或者随机的方式写入临时集群创建的中间表;执行数据片段的合并;打包数据文件;将文件传输至生产集群;刷新生产集群的元数据信息。2.根据权利要求1所述的提升ClickHouse数据入库性能的方法,其特征在于,所述连接信息包括:集群的主机名、端口和账号。3.根据权利要求1所述的提升ClickHouse数据入库性能的方法,其特征在于,查询生产集群的元数据信息,包括:根据ClickHouse提供的API,在程序中查看生产集群的数据表,获取最新的数据表的schema信息;在临时集群创建表,该表的schema信息与生产集群的数据表的schema信息保持一致。4.根据权利要求1所述的提升ClickHouse数据入库性能的方法,其特征在于,在临时集群创建中间表,包括:从生产集群的system.cluster表根据节点和副本信息,确定每个分片的节点的数量;从临时集群的system.cluster表获取节点的数量;创建中间表的数量为:生产集群每个分片的节点的数量/临时集群节点的数量;创建的中间表的命名规则:以生产集群的数据表为前缀,从0开始编号创建的中间表。5.根据权利要求1所述的提升ClickHouse数据入库性能的方法,其特征在于,将数据以轮询或者随机的方式写入临时集群创建的中间表,包括:读取数据,将数据以轮询或者随机的方式写入临时集群创建的中间表,确保每张中间表的数据保持均衡。6.根据权利要求1所述的提升ClickHouse数据入库性能的方法,其特征在于,执行数据片段的合并,包括:在程序中,读取元数据表,获取临时集群每个节点的主机信息,在程序后台通过SSH协议登陆至每台主机,执行数据小文件的合并。7.根据权利要求6所述的提升ClickHouse数据入库性能的方法,其特征在于,执行数据小文件的合并,包括:通过Clickhouse的API主动触发合并,将多个小文件合并为大文件。8.根据权利要求1所述的提升ClickHouse数据入库性能的方法,其特征在于,打包数据文件,包括:在程序中,读取元数据表,获取临时集群每个节点的主机信息,在程序后台通过SSH协
议登陆至每台主机,执行打包操作;数据插入完成后,打包;通过在程序中调用SSH的登陆命令,连接到临时集群的每台主机上,在临时集群创建的中间表所在的数据目录下,按照数据片段的目录进行打包,用于传送至生产集群。9.根据权利要求1所述的提升ClickHouse数据入库性能的方法,其特征在于,将文件传输至生产集群,包括:在程序中,读取元数据表,获取临时集群每个节点的主机信息,在程序后台通过SSH协议登陆至每台主机,执行文件的传输;在临时集群的每个节点上,将临时集群形成的压缩文件,按照轮询的方式传输给生产集群的每个分片的节点。将文件传输至生产集群的数据表目录下的detached目录中,并进行解压。10.根据权利要求1所述的提升ClickHouse数据入库性能的方法,其特征在于,刷新生产集群的元数据信息,包括:在程序中,读取元数据表,获取生产集群每个节点的主机信息,在程序后台通过SSH协议登陆至每台主机;在生产集群,基于命令刷新元数据信息,将detached目录中的数据关联至正式的数据目录,从而对查询可见。11.提升ClickHouse数据入库性能的装置,其特征在于,该装置包括:临时集群构建模块,用于在生产集群之外,构建一个小型的临时集群,保持生产集群的节点数是临时集群的节点数的整数倍;集群连接信息配置模块,用于通过统一的入口程序,将数据写入生产集群的数据表;在配置文件配置临时集群和生产...

【专利技术属性】
技术研发人员:周朝卫
申请(专利权)人:中盈优创资讯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1