Hbase什么情况下使用?
//Hadoop_v4_12.pdf(tt分享的教程《Hadoop数据分析平台》)
什么情况下使用Hbase?
成熟的数据分析主题,查询模式已经确立并且丌轻易改变
传统的关系型数据库已经无法承受负荷,高速插入,大量读取
适合海量的,但同时也是简单的操作(例如key-value)
场景一:浏览历史
Paste_Image.png
关系型数据库的困难
简单的事情只要上了量就会变成无比复杂的事情
Order by耗费很多性能
大量发生,但又无法分布式处理
顾客需要实时看到自己的足迹,因此丌能使用缓存技巧
Hbase迎接挑战
天生就是面向时间戳查询
基于行键的查询异常快速,特别是最近的数据被放在内存的memstore里,完全没有
IO开销
分布式化解负荷
//场景二:商品推荐
Paste_Image.png用关系型数据库实现
http://f.dataguru.cn/thread-84-1-1.html
拿ITPUB实验了一把。
阅读推荐说白了,就是你打开一个帖子,看到有一个提示写着读了本帖的人有xx%读了
xxxx贴,有xx%读了xxxx帖。。。等等,这项功能也可以推广到商品推荐,音乐推荐
,下载推荐等等。
在ITPUB中设置了一个log表,记录每次用户点击,有3个列,分别是时间戳,用户id,
还有点击的主题id
使用了一段时间的数据大约有1000万行,写了个sql搞定
使用Hbase:表设计不查询实现
两个表,一个是u-t,另一个是t-u
U-t表的结构:行键为userid,列族和列为thread:threadid
T-u表结构:行键为threadid,列族和列为user:userid
查询:先在u-t表从userid->threadid,再从t-u表从threadid->userid,在计算程序
中 实现去重和统计功能