您的位置:首页 > 运维架构

基于hadoop MR+berkeley DB实现的十亿级数据的秒级部署和实时查询的解决方案

2016-08-24 16:06 856 查看


最近在解决业务应用场景中的10亿级数据的布署和实时查询的需求,经过近3天的调研和研发,最终很好的解决了这个问题,达到了第一阶段的需求预期。

要解决的问题

1、有10亿级别的某视频网的注册用户和设备用户,需要T+1天的任意uid或是设备id对应的用户画像数据。

2、分为计算周期+布署服务化+查询三部分,计算用时优化余地有限,

       而查询又是主动发起,主要在布署服务化阶段用时优化,希望能在5-10分钟内搞定布署服务化。

 

解决方法

1、 离线数据mr计算的时候通过hash funciion修改partition key,均匀划分至额定的文件中去。

2、 将第一轮的输出文件集合,每个文件对应berlelydb的一个数据库(同表一样)

3、 将2的输出bdb的数据库集合,拷贝至本地。

4、 将3的输出,通过bdb进程初始化操作,加入2级索引,

一级索引是端,二级索引是bdb库(此时用到到1中的相同的hash function)

5、 将4的输出,外搭restful service,支持网络查询。再通过zookeeper通讯,解决单点问题。

6、 外部实时通过的restful service输出来达到实时搜索的效果。

 

效果展示

单台高配机:128G+24核

加载bdb数据文件700GB,记录条数:10.3亿条,初始化用120s

QPS为200-1000时,响应平均时长为:10ms至1000ms

后续计划

下一步将输出的bdp数据库集合,分散到不同的机器节点中去做负载均衡一下,请求控制器端加入过滤器负责将请求路由到查询机器节点中,达到10亿级实时查询请求的响应平均时长控制在0-200ms之间,最长响应不超过300ms的目标。

更多学习讨论,          请加入官方QQ技术群320349384,

                                 官方天亮论坛:http://bbs.yuqing36524.com/

                                 天亮教育视频链接:http://pan.baidu.com/s/1pJJrcqJ

 

 


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐