分享

habse关于高并发存储后立即读取新数据的问题

场景:任意时刻需要存储大量的高频数据 存储后 key按照时分秒设计 当数据多线程大批量写入后 其它程序读取时无法获取最新的一部分数据 要等待20s左右才会有 这个问题怎么解决啊

已有(2)人评论

跳转到指定楼层
starrycheng 发表于 2017-11-24 15:09:26
hbase插入后,并不会马上提交。会根据一些条件触发flush。
楼主尝试手工flush,也就是通过代码去实现
回复

使用道具 举报

xiaobaiyang 发表于 2017-11-24 15:16:14
有个疑问,看你的描述,采用多线程大批量的写入,而rowkey采用时分秒进行设计,那会不会有key重复的情况,而且,hbase的key是按照字典顺序排的,如果按照时分秒设计,可能会造成热点问题。
针对时间慢的问题,我认为:
1).在建表时进行优化,比如可以创建预分区,还 可以考虑重新设计key,比如时分秒转换成纳秒然后反转在拼接一些其他随机值(以免key值重复)进行设计,可以避免热点问题;
2). 可以考虑采取二级索引的方式进行优化,比如将要查询的字段(key)放到solr中。查询时,先从solr中查找,找到对应的rowkey后,再到hbase中查询,这样也可以提高查询效率。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条