MAPREDUCE服务 MRS-ClickHouse数据入库规范:规则

时间:2024-08-05 16:12:35

规则

  • 写本地表,查询分布式表,提升写入和查询性能,保证写入和查询的数据一致性。
  • 只有在去重诉求的场景下,可以使用分布式表插入,通过sharding key将要去重的数据转发到同一个shard,便于后续去重查询。
  • 外部模块保证数据导入的幂等性。

    ClickHouse不支持数据写入的事务保证。通过外部导入数据模块控制数据的幂等性,比如某个批次的数据导入异常,则drop对应的分区数据或清理掉导入的数据后,重新导入该分区或批次数据。

  • 大批量少频次的写入。

    ClickHouse的每次数据插入,都会生成一到多个part文件,如果data part过多, merge压力会变大,甚至出现各种异常影响数据插入。建议每个批次5k到100k行,写入字段不能太多,太多字段情况下要减少写入行数,以降低对写入节点的内存和CPU压力,每秒不超过1次插入。

  • 多副本并行导入。

    有大数据的导入场景,建议将数据提前拆分成多份,在一个shard内的多个副本同时导入,以分摊一个节点导入数据的压力,同时能提升数据入库的性能,缩短入库时间。

    常见错误:

    Too many parts(304). Merges are processing significantly slower than inserts

    原因分析:MergeTree的merge的速度跟不上目录生成的速度,数据目录越来越多就会抛出这个异常。

support.huaweicloud.com/bestpractice-mrs/mrs_05_0099.html