ByteHouse 作为云原生数据仓库,逐渐引入了对 ELT(Extract-Load-Transform,提取-加载-转换)的支持。 这使得用户可以避免维护多个异构数据系统。
在数据加载进数据库之前,往往需要经过复杂的数据清洗和转换过程。这是人们所熟知的ETL。而在之前的工程实践中,这部分工作是由一些外部的数仓工具来完成的,比如典型的Hive、Spark SQL等。ByteHouse不断努力拓展边界,减少数据加工和数据分析之间多系统耦合带来的运维负担。把数据加工(T)的过程转移到ByteHouse内部,使其能够一站式完成数据接入、加工和分析,具备了完备的数据仓库能力。
ClickHouse从设计之初是面向OLAP(在线分析)场景,无论是列存、索引还是执行向量化的优化,他们都有效地应对大宽表的聚合计算。
针对复杂查询,尤其是数据仓库中典型的ETL任务来说,ClickHouse则并不擅长。结构复杂、耗时较长的数据加工作业,通常需要复杂的调优过程。典型的问题如下:
针对以上问题,ByteHouse团队在高性能计算框架的基础上,增加了对bsp模式的支持:可以进行Task级别的容错和更细粒度的调度,在将来会支持资源感知的调度。可以给用户带来以下收益:
用户可以在query settings中通过增加下面的参数来使用ELT能力:
Settings 参数名称 | 类型 | 默认值 | 含义 |
---|---|---|---|
bsp_mode | Bool | 0 | 打开bsp模式,query会分阶段执行。在失败时会进行task级别的重试。 |
distributed_max_parallel_size | UInt64 | 等于worker数量 | 当单个查询占用内存较大时,通过调大此参数可以增加算子的并行度,减少单个并行度处理数据的数量,减少单位时间内存使用量。必须在打开bsp_mode下才能超出worker的数量。建议设置为worker个数的倍数。 |
bsp_max_retry_num | UInt64 | 3 | task最大的重试次数。2.0.4/2.1版本中以query粒度记,默认为5次。2.2版本中以segment粒度记,默认为3次。 |
disk_shuffle_files_codec | LZ4/ZSTD/NONE | LZ4 | shuffle文件采用的编码,能有效减少磁盘占用。 |