腾讯Hermes设计概要——数据分析用的是列存储,词典文件前缀压缩,倒排文件递增id、变长压缩、依然是跳表-本质是lucene啊
转自:http://data.qq.com/article?id=817
三、Hermes设计概要
架构描述
系统核心进程均采用分散化设计,根据业务发展需求,可随意扩缩容机器;
周期性数据直接通过tdw处理落地到分布式文件系统; 实时数据加载采用先落地本地磁盘,最终落地到分布式文件系统,最终都由调度进程分发到计算层;
分析引擎设计
基于单个实例数据的分析处理,datasource主要包含两类数据:用户导入的数据(位图文件)以及源数据(索引文件),内核主要根据用户请求逻辑处理索引文件以及位图文件。
内核设计
整个数据对应多份,按照不同规则均匀分布在各个分析实例中,数据的merge服务在其中的一个分片中进行,每次请求将根据机器负载情况选择负载轻的作为merge服务器。
存储设计
通过对数据结构的重新组织,结合分析系统的特点,实现嵌套列存储,充分避开随机读,采用块读取+位图计算大幅度降低耗时弊病,使大数据的统计分析计算耗时缩短至秒级;
在词条文件中采用字典排序,并在此基础上实现前缀压缩;
在序列文件中采用递增排序,并对序列号采用可变长类型,有效压缩存储空间,便于计算位图的构建;
存储格式
存储格式主要包含四类文件
meta文件: 描述表结构,内存文件;
词条文件: 描述各个字段的词条集信息,磁盘文件;
词条索引文件: 词条文件的跳表映射文件,用于加速定位目标词条,内存文件;
序列号文件: 词条出现的序列集,采用可变长类型存储序列号, 每个词条对应的序列号集又包含跳表映射数据块,用于加速具体序列的定位,磁盘文件;
存储分析过程示例
流程设计
四、Hermes应用案例
微信数据门户多维分析 (约370亿)
提供系统各个性能指标数据的实时分析。
信息安全部回溯项目(目前接入约2300亿)
基于全文检索查询、分析、统计并导出相关记录。
结果秒级返回。
五、Hermes性能数据
六、结束语
数据的不断膨胀给数据分析带来了很多挑战,多维分析则是为了解决在数据不断膨胀的情况下数据分析时效性的问题,为数据分析平台提供即席的数据分析支持。
在业务实践的同时,我们仍在不断完善,使Hermes平台支持更多的应用场景,为提高开发人员、营销人员和数据分析人员数据分析效率,从海量的业务数据中挖掘有价值的金矿而努力。
相关文章
- Python 存储与读取HDF5文件
- 怎么在手机便签中同时保存音频和文件?
- Process Explorer查找占用文件(或文件夹)的进程
- JAVA - 文件切分存储 - FileInputStream 流形式
- C# FileStream复制大文件
- Python遍历路径下文件并转换成UTF-8编码
- 阿里云 OSS文件存储挂到云服务器ESC文件系统中
- 【C编程基础】make命令和makefile文件
- 读写内部存储的文件数据
- Spark创建RDD的四种方式(二):从外部存储(文件)创建 RDD代码示例
- c++文件操作3之二进制写文件
- Atitit 存储引擎核心技术 总结目录1. 表的存储有三个文件:结构+数据+索引 12. 页式管理
- Atitit 数据结构与常见文件元数据结构 目录 1. 分类 内部数据结构与外部存储数据结构1 2. 编程语言内部数据结构 (堆栈 树 图等1 2.1. 数据结构 (集合,列表,tree,map
- Android 拷贝SQLite数据库文件到手机的内部存储
- 如何通过云存储实现大文件的断点下载和上传
- 零基础学Python-爬虫-2、scrapy框架(测试案例篇·技术点在后面文章内讲解)【测试将一篇小说的所有访问路径与标题存储到一个文件下】
- android RecursiveTask快速读取内部存储的大文件
- MongoDB一个基于分布式文件存储的数据库(介于关系数据库和非关系数据库之间的数据库)
- 无文件攻击——间接文件:基于文件 ( 类型 III:可执行文件、DLL、LNK 文件、计划) ;基于宏 (类型 III:Office文档);基于脚本 (II:文件、服务、注册表、WMI 存储库、shell) ;基于磁盘 (类型 II: 启动记录) ;
- 随笔-前端文件操作 File, Blob, ArrayBuffer 以及FileReader
- NXLog采集windows日志配置conf文件