实时数据仓库

本文详细介绍了实时数据仓库的构建过程,包括选择kafka作为消息队列,ods层存储原始数据,dwd+dim层利用HBase存储维度表,dwm层处理join操作,dws层使用ClickHouse进行轻度聚合,ads层提供数据接口。文章还讨论了如何保证缓存一致性,如使用异步IO优化维度表查询,并通过Phoenix操作HBase,以及在ClickHouse中实现一致性查询。最后提到了监控方案,使用Prometheus + Grafana。
摘要由CSDN通过智能技术生成

1 为什么选择kafka?

  ① 实时写入,实时读取

  ② 消息队列适合,其他数据库受不了

2 ods层

  1)存储原始数据

    埋点的行为数据 (topic :ods_base_log)

    业务数据 (topic :ods_base_db)

  2)业务数据的有序性: maxwell配置,指定生产者分区的key为 table

3 dwd+dim层

  ① 事实表存Kafka

  ② 维度表存Hbase,基于热存储加载维表的join方案:

    	随机查
    	长远考虑
    	适合实时读写

   DIM:事实数据根据维度ID查询相应的维度数据

		HBase:√
		Redis:用户表数据量大,内存使用量太大
		HDFS(Hive):太慢,效率低
		Mysql:维表数据属于业务库,实时计算查询MySQL会给业务库增加压力--从库 √
		ClickHouse:QPS高、列存     

3.1 动态分流

  将事实表写入kafka的dwd层,将维度表写入hbase。为了避免因表的变化而重启Flink任务,在mysql存一张表来动态配置。

  DIM层编程:

	1.消费Kafka topic_db主题数据(包含所有的业务表数据)
	2.过滤维表数据(根据表名做过滤)
	3.将数据写入Phoenix(每张维表对应一张Phoenix表)
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值