Druid 驱动海量实时多维分析
我今天分享的话题是Druid驱动海量数据实时多维分析。 1、需求背景 首先我来谈一下海量实时多维分析的需求背景,我们广告系统有DSP睿视系统和AD exchange等,前段时间品友的曹老师分享时提到DSP Ad exchange,如果对DSP不了解的同学,可以在百度百科上查一下“互联网广告DSP”,实时竞价是DSP的核心,广告主或者优化师需要动态调整出价优化使收益最大化。 广告主调整出价策略或者投放策略进行优化,想要尽快得到实时的反馈,比如修改了地域定投,实时分地域的竞得率和转化率,甚至是分钟粒度的。在我们的DSP系统中我们提供12种维度(不算多)的多维分析,用户可以任意组合下钻查询。 最初的时候我并不是采用Druid,而是采用Storm+Kafka+Redis实时数据处理,以及hive+mysql的离线处理的Lambda架构架构见下图。 实时数据经过Storm ETL,主要是将不同维度组合作为key,计算metrics以后为value存在redis中。离线数据定时将昨天的数据在Hive中 经过一系列ETL,按照维度组合计算metrics以后将结果存储在mysql中。 采用redis作为实时数据的存储有两个核心问题需要解决: redis不支持range scan,我们需要在app层拼好所有的key,然后调用mget获取,如果执行groupby查询的话例如select area,pv