分享

关于频繁入库Hbase,table.close()何时做?

linjikai8888 发表于 2015-5-28 17:15:12 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 52291
我希望数据能够实时入库,现在是用线程定时去抓文件入库到Hbase.

但是,每次入库到Hbase(是用的put(list)方法),关闭掉table,再重新连接hbase,Htable table开销非常大。

不知道有谁有比较 好的建议?

已有(5)人评论

跳转到指定楼层
bob007 发表于 2015-5-28 17:37:03


何时做取决于你的业务
table.close()是释放资源,所以这个是必须的做的。
对业务逻辑首先要划分逻辑。
根据你的描述是定时执行任务。
如果时间间隔比较长,建议一个任务只开一个table,也就是全局table。在任务执行完毕之后释放资源。
这个只是初步方案,更多的需要楼主提供详细信息
回复

使用道具 举报

linjikai8888 发表于 2015-5-28 18:50:26
bob007 发表于 2015-5-28 17:37
何时做取决于你的业务
table.close()是释放资源,所以这个是必须的做的。
对业务逻辑首先要划分逻辑 ...

时间间隔是30秒!

后续延长估计也是1分钟~5分钟

另外关于对Hbase入库优化的建议,可否给一些供我参考下。

比如
hbase配置
预分区方法(我目前是用一些ID来做ROWKEY前缀第一位,差不多有280个,这些ID基本固定)
java api

回复

使用道具 举报

s060403072 发表于 2015-5-28 19:19:41
linjikai8888 发表于 2015-5-28 18:50
时间间隔是30秒!

后续延长估计也是1分钟~5分钟

hbase rowkey是一种,优化方法也有很多,下面仅供参考

Facebook针对hbase的优化方案分析



优化hbase的查询提升读写速率优化案例及性能提升的几种方法

HBase设计与开发性能优化


优化hbase的查询优化-大幅提升读写速率


时间30秒??
不明白你们是什么业务?
这有点类似实时插入了。如时间较短,只要在插入数据库的时候不重新打开,那你不关闭就好了。
但是有一点一定确定就是不能在下次插入的时候,还实例化新的连接,否则打开N多连接,导致越来越慢

其实插入的方式有很多种,如果对实时行要求不高,可以先保存为文件。等得到一定的数据量使用bulkload
HBase 5种写入数据方式






回复

使用道具 举报

linjikai8888 发表于 2015-5-28 19:54:03
s060403072 发表于 2015-5-28 19:19
hbase rowkey是一种,优化方法也有很多,下面仅供参考

Facebook针对hbase的优化方案分析

非常感谢您的回复!

我看bulkload比较适合表是空的情况,一次性导入的情况,我们这边要求是 偏向实时的,应该是不能这样。

不关闭table这样的方法,会有什么风险吗?

回复

使用道具 举报

s060403072 发表于 2015-5-28 21:24:48
linjikai8888 发表于 2015-5-28 19:54
非常感谢您的回复!

我看bulkload比较适合表是空的情况,一次性导入的情况,我们这边要求是 偏向实时 ...

不关闭资源会被一直暂用,直到资源用尽死机。

回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条