腾讯大数据最近做了几件事,上线了一个官方网站http://data.qq.com/,将TDW(腾讯大数据库仓库)开源了,封闭的企鹅难得开放了一回。大数据网站上有一些资料,我看到一个叫Hermes爱马仕的系统挺有意思的,今天介绍下。
关于实时分析系统我前面写个几篇文章分析,包括《实时分析系统(HIVE/HBASE/IMPALA)浅析》《MPP DB 是 大数据实时分析系统 未来的选择吗?》《一套数据,多种引擎(impala/Hive/kylin)》《一套数据,多种引擎续---两种数据格式(Parquet/ORCfile)浅析》有兴趣可以看看。
为了解决实时分析的问题,主要分析的是MPP架构的软件,核心思路是通过MPP扫描技术来加快查询。腾讯的Hermes系统,是开源的lucene演变而来,主要用的是搜索和索引技术,所以hermes也叫实时检索分析平台。这个是另外一个思路,可以值得看看。
详细的Hermes的介绍,可以看下本文最后参考资料。主要讲讲Hermes有特点的几个东西:
1、核心是存储的设计, 通过对数据结构的重新组织,结合分析系统的特点,实现嵌套列存储,充分避开随机读,采用块读取+位图计算大幅度降低耗时弊病,使大数据的统计分析计算耗时缩短至秒级;在词条文件中采用字典排序,并在此基础上实现前缀压缩;在序列文件中采用递增排序,并对序列号采用可变长类型,有效压缩存储空间,便于计算位图的构建;
2、列式存储.
3、基于单个实例数据的分析处理,datasource主要包含两类数据:用户导入的数据(位图文件)以及源数据(索引文件),内核主要根据用户请求逻辑处理索引文件以及位图文件。内核示意如下:
4、整个数据对应多份,按照不同规则均匀分布在各个分析实例中,数据的merge服务在其中的一个分片中进行,每次请求将根据机器负载情况选择负载轻的作为merge服务器。
Hermes和开源的solr,elasticsearch又有什么不同?
solr、es的使用特点如下:
1. 源自搜索引擎,侧重搜索与全文检索。
2. 数据规模从几百万到几千万不等,数据量过亿的集群特别少。
Ps:有可能存在个别系统数据量过亿,但这并不是普遍现象(就像oracle的表里的数据规模有可能超过hive里一样,但需要小型机)。
hermes:的使用特点如下:
1. 一个基于搜索引擎技术的海量数据实时检索分析平台。侧重数据分析。
2. 数据规模从几亿到几万亿不等。最小的表也是千万级别。
在腾讯12台机器,就可以处理每天350亿的数据(每条数据1kb左右),每台30T左右,数据可以保存一个月之久。
solr\es 更偏重于为小规模的数据提供全文检索服务;hermes则为大规模的数据仓库提供索引支持,为大规模数据仓库提供即席分析的解决方案,并降低数据仓库的成本,hermes数据量更“大”。
定位和数据规模的不同导致了hermes与solr、es的对索引使用方式有着本质的区别。下面从大数据的视角来阐述,为什么hermes更适合做大索引。
solr、es的索引严重依赖物理内存:
1. 一级跳跃表是完全load在内存中的,除了需要消耗很多内存,首次打开索引的加载速度会特别慢,在solr\es中的索引是一直处于打开状态的,不会频繁的打开与关闭;这种模式会制约一台机器的索引数量与索引规模,通常一台机器固定负责某个业务的索引。
2. 排序和统计(sum,max,min),是通过遍历倒排表,将某一列的全部值都load到内存里,然后基于内存数据进行统计即使一次查询只会用到其中的一条记录,也会将整列的全部值都load到内存里,台浪费资源,首次查询的性能太差。数据规模受物理内存限制很大,索引规模上千万后OOM是常事。
3. 索引存储在本地硬盘,出现异常后,因为数据要恢复,copy的时间要太久。
4. 支持master/slave模式,但是跟传统mysql数据库一样,集群规模并没有特别大的。
这种模式处理集群规模受限外,每次扩容的数据迁移将是一件非常痛苦的事情,数据迁移时间太久。
5. 倒排检索即使某个词语存在数据倾斜,因数据量比较小,也可以将全部的doclist都读取过来(比如说男、女),这个doclist会占用较大的内存进行cache,当然在数据规模较小的情况下占用内存不是特别多,查询命中率很高,会提升检索速度,但是数据规模上来后,这里的内存问题越来越严重。
6. Merger server只能是一个,制约了查询的节点数量;数据不能进行动态分区,数据规模上来后单个索引太大。
Hermes的索引特点如下:
1. 大部分的索引处于关闭状态,只有真正用到索引才会去打开;一级跳跃表采用按需load,并不会load整个跳跃表,用来节省内存和提高打开索引的速度。Hermes经常会根据业务的不同去动态的打开不同的索引,关闭那些不经常使用的索引,这样同样一台机器,可以被多种不同的业务所使用,机器利用率高。
2. 排序和统计并不会使用数据的真实值,而是通过标签技术将大数据转换成占用内存很小的数据标签,占用内存是原先的几十分之一。另外不会将这个列的全部值都load到内存里,而是用到哪些数据load哪些数据,依然是按需load。不用了的数据会从内存里移除。
3. 索引存储在hdfs中,理论上只要hdfs有空间,就可以不断的添加索引,索引规模不在严重受机器的物理内存和物理磁盘的限制。
4. 采用yarn进行进程管理,数据在hdfs中,集群规模和扩容都是一件很easy的事情。
5. 如果某个词语存在数据倾斜,则会与其他条件组合进行跳跃合并(参考doclist的skiplist资料)。
6. 采用多级的merger server;数据可以根据业务的不同,采用不同的分区方式。
参考资料:
1、关于hermes与solr,es的定位与区别 http://user.qzone.qq.com/165162897/2
2、Hermes实时检索分析平台 http://data.qq.com/article?id=817
相关推荐
**描述**:本文档介绍了腾讯自主研发的Hermes实时检索分析平台,适用于对实时检索感兴趣的读者。 **标签**:腾讯 Hermes 实时检索 **主要内容**: - **背景与需求**:随着腾讯内部大数据处理平台TDW的发展,公司在...
通过以上内容,可以看出腾讯游戏数据分析平台是一个高度集成化、针对游戏行业设计的数据分析平台,它能够高效处理游戏运营过程中产生的庞大数据,提供实时与非实时的数据分析,帮助游戏公司从多个维度深入理解玩家...
腾讯实时流计算平台的建设是该公司为应对海量实时数据处理需求而进行的一项重大技术变革。在这一过程中,腾讯从早期采用的JStorm逐渐过渡到基于Apache Flink构建的Oceanus平台,实现了更高效、更可靠的实时计算解决...
【腾讯实时流计算平台演进】\n\n腾讯作为中国领先的互联网公司,其实时流计算平台的演进历程反映了大数据处理技术的快速发展。在杨华的分享中,我们可以看到腾讯如何从早期的Storm平台逐步过渡到Flink,并打造了一体...
【腾讯看点实时数据分析平台实践】 腾讯看点作为一家大型互联网公司的数据驱动决策系统,其每日处理的数据量高达万亿条。为了满足这种大规模实时数据分析的需求,腾讯看点选择了基于Flink和ClickHouse的实时数据...
vue集成腾讯实时音视频TRTC 用Vue+Element搭建的腾讯实时音视频通话 仅限桌面浏览器,暂未搭建其他应用 使用前请先npm install安装依赖包 然后npm run serve既可看到效果
然后,文章详细介绍了腾讯移动分析Crash系统的解决方案,包括终端SDK、Android、iOS、Cocos2dx、Unity3d等多平台的支持,智能合并检索、实时处理、堆栈提取等技术。 文章还介绍了腾讯移动分析Crash系统的技术架构,...
腾讯热力图数据抓取工具是一款专为获取腾讯全球移动定位数据而设计的软件,它能够定期抓取这些数据并将其整理成结构化的TXT文件,便于用户进行后续的数据分析和应用。热力图作为一种视觉化的数据展示方式,通过颜色...
腾讯WeMake工业互联网平台是腾讯公司面向工业领域推出的一个综合性服务平台。它的推出标志着腾讯从服务面向消费者的2C行业转向了面向企业的2B行业,其核心在于连接人、机器与服务,并将公司内部累积的数字技术能力...
在金融数据分析领域,获取实时股票数据是至关重要的。在Python编程环境下,新浪、网易和腾讯等网站提供了API接口,使得...掌握这些技能,你就可以自如地获取和分析实时股票Tick数据,为投资决策提供强有力的支持。
在本场景中,腾讯的热力图基于全球移动定位数据,可以反映人们在不同地区的活动频率,这对于分析人流量、人流模式以及城市规划具有极高价值。 2. **移动定位数据**:移动定位数据是指通过手机GPS、基站信号或其他...
本文将详细介绍如何使用Python通过新浪、网易、腾讯提供的实时tick接口来获取股票数据,并探讨这些接口的工作原理以及如何利用这些数据进行股票分析。 首先,"tick数据"是股票市场交易中最小的数据单位,包括了股票...
本文将深入探讨如何利用Python来对接新浪、网易、腾讯的实时tick接口,以便获取股票数据。Tick数据是指股票交易中最小的时间单位,包含了每笔交易的详细信息,如价格、数量、买卖方向等。这些接口对于进行高频交易、...
### 腾讯课堂竞品分析 #### 一、腾讯课堂概述 腾讯课堂是由腾讯公司推出的在线教育平台,旨在为广大用户提供丰富的教育资源。该平台不仅涵盖了众多领域的课程内容,还提供了灵活的学习方式,满足不同用户群体的...
在腾讯实时计算平台中实践Apache Flink,能够很好地适应业务的实时计算需求,例如,在需要对海量数据流进行实时计算、实时分析的场景中,Flink能够提供较为理想的解决方案。腾讯通过实践Flink,不仅可以提高自身业务...
H5基于腾讯实时音视频 trtc-js-sdk web直播,TRTC Web SDK地址:https://web.sdk.qcloud.com/trtc/webrtc/doc/zh-cn/index.html
腾讯web设计分析腾讯web设计分析腾讯web设计分析腾讯web设计分析腾讯web设计分析腾讯web设计分析
在移动开发领域,腾讯微博开放平台为开发者提供了一个强大的工具,允许他们集成微博功能到自己的Android应用程序中。这个平台提供了丰富的API,使得开发者可以轻松实现用户登录、微博发布、信息获取等一系列操作。...