腾讯Hermes设计概要——数据分析用的是列存储,词典文件前缀压缩,倒排文件递增id、变长压缩、依然是跳表-本质是lucene啊

转自:http://data.qq.com/article?id=817

三、Hermes设计概要

架构描述

 

6

 

        系统核心进程均采用分散化设计,根据业务发展需求,可随意扩缩容机器;

        周期性数据直接通过tdw处理落地到分布式文件系统; 实时数据加载采用先落地本地磁盘,最终落地到分布式文件系统,最终都由调度进程分发到计算层;

分析引擎设计

        基于单个实例数据的分析处理,datasource主要包含两类数据:用户导入的数据(位图文件)以及源数据(索引文件),内核主要根据用户请求逻辑处理索引文件以及位图文件。

 

7

 

内核设计

 

8

 

        整个数据对应多份,按照不同规则均匀分布在各个分析实例中,数据的merge服务在其中的一个分片中进行,每次请求将根据机器负载情况选择负载轻的作为merge服务器。

存储设计

        通过对数据结构的重新组织,结合分析系统的特点,实现嵌套列存储,充分避开随机读,采用块读取+位图计算大幅度降低耗时弊病,使大数据的统计分析计算耗时缩短至秒级;

        在词条文件中采用字典排序,并在此基础上实现前缀压缩;

        在序列文件中采用递增排序,并对序列号采用可变长类型,有效压缩存储空间,便于计算位图的构建;

存储格式

存储格式主要包含四类文件

        meta文件: 描述表结构,内存文件;

        词条文件: 描述各个字段的词条集信息,磁盘文件;

        词条索引文件: 词条文件的跳表映射文件,用于加速定位目标词条,内存文件;

        序列号文件: 词条出现的序列集,采用可变长类型存储序列号, 每个词条对应的序列号集又包含跳表映射数据块,用于加速具体序列的定位,磁盘文件;

 

9

 

存储分析过程示例

 

1011流程设计

 

12

 

       

四、Hermes应用案例

微信数据门户多维分析 (约370亿)

        提供系统各个性能指标数据的实时分析。

信息安全部回溯项目(目前接入约2300亿)

        基于全文检索查询、分析、统计并导出相关记录。

        结果秒级返回。

五、Hermes性能数据

pic

 

六、结束语

        数据的不断膨胀给数据分析带来了很多挑战,多维分析则是为了解决在数据不断膨胀的情况下数据分析时效性的问题,为数据分析平台提供即席的数据分析支持。

        在业务实践的同时,我们仍在不断完善,使Hermes平台支持更多的应用场景,为提高开发人员、营销人员和数据分析人员数据分析效率,从海量的业务数据中挖掘有价值的金矿而努力。

posted @ 2017-03-01 16:57  bonelee  阅读(819)  评论(2编辑  收藏  举报