1、大数据实时多维分析神器-Clickhouse大数据平台部-李庆勇章节标题Clickhouse是什么?1Clickhouse优劣势2Clickhouse表引擎3目录Clickhouse在柚先森中的应用41Clickhouse是什么?是什么?官网:ClickHouse是一个开源的面向列式数据的数据库管理系统,能够使用SQL查询并且生成实时数据报告。1.开源2.列式3.SQL4.实时要点:2Clickhouse优劣势优 劣 势优势:劣势:1.快(插入快,查询快)2.表引擎多,适合不同的场景3.压缩比高4.支持线性扩展5.功能多(函数,复杂数据结构)1.不支持delete和update(新update
2、)2.非标准的SQL3.没有窗口功能4.文档不够完善5.不支持UDF优 劣 势快,快,快配置:16核64G SSD ECS优 劣 势快,快,快3Clickhouse表引擎表引擎它允许对存储在远程MySQL服务器上的数据执行SELECT查询。MySQL引擎常见的使用场景:通过查询Clickhouse的MySQL引擎表的全量或增量数据,insert到Clickhouse的其他引擎表(如:MergeTree),然后对该表进行查询分析注意事项:1.where 语句中的=,!=,=,=条件是直接通过MySQL来查询,其他条件,如:like,in 条件和limit是在clickhouse里执行的 2.如果
3、是增量数据请注意MySQL的索引是否起作用 3.最新版本可以往MySQL写入clickhouse的统计数据语法:MySQL(host:port,database,table,user,password,replace_query,on_duplicate_clause);表引擎Clickhouse最先进的表引擎,支持一个日期(分区)和一组主键的两层式索引MergeTree引擎常见的使用场景:存储不需要做预计算的数据,例如事实表数据,log明细数据注意事项:1.默认的时间分区是按月,可自定义分区,数据量不是特别大建议默认2.主键不能包含可为null字段语法:MergeTree(EventDate
4、,(CounterID,EventDate),8192)表引擎基于MergeTree,能处理重复数据的功能,此引擎表与MergeTree的不同之处在于它删除具有相同主键值的重复条目。ReplacingMergeTree引擎常见的使用场景:在多维数据加工流程中,为“最新值”,“实时数据”场景量身打造注意事项:1.可以手动指定版本列,或不指定(按插入时间)2.手动执行optimize table t 后才会触发merge行为 语法:ReplacingMergeTree(EventDate,(OrderID,EventDate,BannerID),8192,ver)表引擎基于MergeTree,能将
5、具备可加性的指标进行相加,从而减少表的数据量。SummingMergeTree引擎常见的使用场景:不需要存储明细数据,可以进行预计算的注意事项:1.可加列不能是主键中的列,可加列都为null会被删除2.手动执行optimize table t 后才会触发merge行为 语法:SummingMergeTree(EventDate,(OrderID,EventDate,BannerID),8192,(Shows,Clicks,Cost)表引擎是在 MergeTree 基础之上,针对聚合函数结果,作增量计算优化的一个设计AggregatingMergeTree引擎常见的使用场景:对多维数据进行降维,
6、且能提供去重数,例如uv注意事项:1.数据不能通过普通的insert插入,而只能通过insert into select插入2.普通mergeTree能满足性能,尽量不用 AggregatingMergeTree语法:AggregatingMergeTree(StartDate,(CounterID,StartDate),8192)表引擎可以实现删除数据功能CollapsingMergeTree引擎常见的使用场景:通过该引擎可以实现数据的删除操作注意事项:1.Max和Min的指标无法通过该引擎实现语法:CollapsingMergeTree(EventDate,(CounterID,Event
7、Date,intHash32(UniqID),VisitID),8192,Sign)表引擎为clickhouse提供副本功能,从而实现clickhouse的高可用。Replicated*MergeTree引擎常见的使用场景:与Distributed表一起组合实现clickhouse的高可用分布式系统注意事项:1.依赖zookeeper,对zookeeper的性能要求比较高2.可提前配置Replicated,即使现在没用,也是有好处的1.即使现在不使用复制,之后也有可能需要复制2.对复制表的插入由Zookeeper确认,跟踪最后100个插入块的校验和,以避免重复表引擎与物化视图配合,实现数据从k
8、afka自动写入clickhouse物化视图。Kafka引擎常见的使用场景:从kafka订阅消息插入到clickhouse物化视图里,然后对视图做多维查询注意事项:1.为了提升处理性能,已消费的消息以批量的方式进行压缩max_insert_block_size (默认 1048576b)1.批量消息不能被完成,刷新周期为stream_flush_interval_ms(默认为7500ms)表引擎让clickhouse具备跨服务器的能力(分布式),是一个逻辑表。Distributed引擎常见的使用场景:和Replicated引擎配合使用实现分布式,高可用注意事项:1.一般是把数据直接插入原表,然
9、后从分布表查询数据2.可在插入前做负载均衡,将数据插入不同机器的原表 4Clickhouse在柚先森中的应用柚先森柚先森用户中心的实时多维统计为什么用clickhouse?因为:需要实时,多维新增账户:ReplacingMergeTree引擎启动次数:MergeTree引擎柚先森柚先森她她圈的实时多维统计ReplacingMergeTree引擎指标:1.浏览量,活跃用户与用户中心流程基本一致 2.新增帖子,新增回复,首推帖如下流程柚先森柚先森资讯的实时多维统计(TODO)好处?1.Kafka数据复用:spark处理后的数据,可以提供给其他程序使用2.补数据简单:可以使用新的group_id,重新消费Kafka里的数据T h a n k y o u厦 门 美 柚 信 息 科 技 有 限 公 司