w88优德_优德88官网_优德88电子游戏

蒿,技能专栏丨HBase在移动广告监测产品中的使用,狗狗图片大全

admin1个月前196浏览量

1

HBase在Ad Tracking的运用

1.1

Ad Tracking的事务场景

Ad Tracking是TalkingData的移动广告监测产品,其间心事务模型是归因。App用户点击广告之后,及随后装置广告跳转到的运用或许游戏,Ad Tracking会对这些点击事情(用户点击广告的行为)和激活事情(用户装置运用的行为)进行监测。

归因需求做的是,接收到激活事情之后,经过激活事情匹配之前接收到的点击事情,假如激活归因到了点击,那么这个激活事情便是点击广告带来的,也就归因到了该广告对应的推行活动,而推行活动对应某个途径,归因到了推行活动就归因到了投进广告的途径等。后续的一切作用点事情(例如运用内的注册、登录等事情)也都将经过对应的激活事情找到对应的推行活动信息。

激活和各种作用点事情的原始信息,包括对应的设备、归因到的推行活动等,都能够供给给Ad Tracking用户为参阅——Ad Tracking的数据导出功用。

1.2

HBase与数据导出

HBase作为一个散布式的列式存储,具有强悍的数据写入才能,由所以列式存储,跟着后期需求的添加,能够动态的添加存储的字段,十分符合Ad Tracking的数据导出的事务场景。

经过合理的规划rowkey,HBase又能确保很快的查询速度,用户在Ad Tracking后台进行数据导出之后,根本上秒级时刻就能够完结数据的下载,能够确保很好的导出体会。

下面将对HBase的架构原理和在Ad Tracking数据导出功用中的运用进行介绍下。

2

HBase的架构

图:HBase的根本架构

3

数据的写入

3.1

数据的写入进程

图:数据的写入概览

3.2

数据格式

HBase存储的一切内容都是byte数组,所以只需能转化成byte数组的数据都能够存储在HBase中。

4

存储模型

图:HBase的存储概念模型

5

存储完成

图:HBase的存储结构

5.1

region

Table的数据以region的方法散布在一切的效劳器上。region的存在是为了处理横向扩展问题。

5.1.1

region的拆分

经过将数据均衡的散布到一切机器上,能够充分利用各个效劳器的才能,进步查询速度。跟着数据的不断写入,region会不断增大,region太大会影响查询功能,所以hbase会主动对region进行拆分。

下面是两种常见的region的拆分战略:

5.1.2

region的merge

场景:region中很多数据被删去,不需求开端那么多region,能够手动进行region的merge

5.2

store

一个region内部有多个store,store是列族等级的概念,一个表有三个列族,那么在一台效劳器上的region中会有三个store。

5.2.1

MemStore

每个列族/store对应一个独立的MemStore,也便是一块内存空间,数据写入之后,列族的内容进入对应的MemStore,会依照rowkey进行排序,并创立类似于Btree的索引——LMS-Tree。

LMS-Tree(Log-Structured Merge Tree)

LMS树选用的索引结构与B+Tree相同,并且经过批量存储技能躲避磁盘随机写入问题,因为数据过来之后,首要会在内存中进行排序,构建索引,当抵达必定的量的时分,flush到磁盘中,跟着磁盘中的小文件的增多,后台进行会主动进行兼并,过多的小文件兼并为一个大文件,能够有用加速查询速度。

图:LMS树的兼并

flush机遇:

5.2.2

HFile

HBase的数据文件,HBase的一切数据都保存在HFile中,查询的时分也是从HFile中进行查询。

HFile包括多个数据块,存储了一个列族内的数据,以及相关的索引:

Hfile的compaction:

每次memstore的刷写都会发生一个新的HFile,而HFile毕竟是存储在硬盘上的东西,但凡读取存储在硬盘上的东西都触及一个操作:寻址,假如是传统硬盘那便是磁头的移动寻址,这是一个很慢的动作。当HFile一多,每次读取数据的时分寻址的动作变多,查询速度也就变慢。所以为了避免寻址的动作过多,需求适当地削减碎片文件,后台需求继续进行compaction操作。

compaction的分类:

compaction的进程:

6

数据查询

6.1

查询次序

1. 首要查找block cache:HFile的load on open部分是常驻内存的,data block是在磁盘上的,查询的时分,定位到某个data block之后,HBase会将整个data block加载到block cache中,后续查询的时分,先查看是否存在block cache中,假如是,优先查询block cache。之所以能够这么定心的运用block cache,是根据Hfile的不行变性,后续的修正和删去操作不会直接修正HFile,而是追加新的文件,所以只需HFile还在,对应的block cache便是不变的。

2. block cache查询不到再去查找region(memstore + hfile):经过hbase的元数据表,找到需求查询的rowkey地点的region server,然后定位到memstore和hfile

6.2

region的查找进程

图:region的查找进程

一个表有多个region,散布在不同机器上,需求必定的机制来确认需求查找的region

客户端会对meta信息进行缓存,加速查询速度。

6.3

查询API

其间指定rowkey规模是最有用的加速查询速度的方法,不限制rowkey的规模则需求全表扫

7

Ad Tracking的HBase规划

rowkey结构:分区key-pid-eventTime-spreadid-序列

Ad Tracking的hbase的rowkey是依照事务字段来规划的,相同运用的数据保存在同一个region中,查询快,可是因为用户的数据量不同,查询量也不同,或许导致热门数据,形成某台机器负载过高,影响机群正常作业。现在Ad Tracking的HBase的各个region空间占用尚存在必定程度的不均衡,可是还能承受。

一般HBase的rowkey中或多或少的会包括事务相关的信息,彻底选用随机的rowkey,跟事务不相关,查询的时分只能全表扫,查询功率低。rowkey规划的要害就在于权衡查询速度和数据均衡之间的联系,下面介绍几方面rowkey的规划主张。

7.1

rowkey长度规划主张

7.2

rowkey规划方法-加盐

图:rowkey规划方法-加盐

运用固定的随机前缀:

7.3

rowkey规划方法-hash

图:rowkey规划方法-哈希

rowkey hash之后取md5的前五位:

7.4

rowkey规划方法-回转

图:rowkey规划方法-回转

回转一段固定长度的rowkey,或许整个回转。上图中三个网址归于相同域名下的,可是假如不回转,会彻底涣散到不同的region中,不利于查询。

end

参阅资料

[HBase – 存储文件HFile结构解析]

(http://hbasefly.com/2016/03/25/hbase-hfile/)

作者:TalkingData 战鹏弘

声明:该文观念仅代表作者自己,搜狐号系信息发布渠道,搜狐仅供给信息存储空间效劳。

最新评论