Clickhouse实践

离线实践

主要业务:用户分析和敏捷BI
数据导入:由外部事务保证的T+1离线数据

未命名文件.jpg

离线实践思路:

  • 将数据根据业务逻辑使用Spark在Hive或HDFS将数据生成好,在HDFS上存放数据文件,一般是parquet格式
  • 将HDFS上文件get获取,分散批量的导入到每个shard的MergeTree表中;不推荐使用distributed表
  • 因为Clickhouse中没有事务控制,使用一个外部事务判断所有shard上的数据都处理好了,再让外部查询使用

不推荐使用Distributed分布式表的原因:

  1. 分布式表写入效率低
  2. 业务方高频写入拖垮文件系统
  3. 分布式表不能保证数据准确性,如果一个shard挂了,Clickhouse需要重新写入,可能会有重复问题
Clickhouse不使用Distributed表Insert原因.jpg

实时实践

两种方案:

  1. Kafka -> Flink -> Clickhouse

  2. Kafka Engine机制解析
    Kafka Engine -> Materialized View -> MergeTree
    Kafka Engine:

    • 描述 Topic
    • 消费数据
    • 解析数据

    Materialized View:

    • 描述数据流向
    • SELECT语句
    • ETL

    MergeTree:

    • 存储数据
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。