分享

客户端缓存数据优化Hbase的疑问

linjikai8888 发表于 2015-6-11 09:11:38 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 18851
看网上资料基本这两个参数可以让 客户端缓存一部分数据。客户端如果挂了,这部分数据是不是就找不到了?
即使开着Hlog,在缓存还没到达规定的Buffer大小,客户端没有跟Hbase做PUT操作,是不是也不写Hlog?


2.2.1 Auto Flush通过调用HTable.setAutoFlush(false)方法可以将HTable写客户端的自动flush关闭,这样可以批量写入数据到HBase,而不是有一条put就执行一次更新,只有当put填满客户端写缓存时,才实际向HBase服务端发起写请求。默认情况下auto flush是开启的。
2.2.2 Write Buffer
通过调用HTable.setWriteBufferSize(writeBufferSize)方法可以设置HTable客户端的写buffer大小,如果新设置的buffer小于当前写buffer中的数据时,buffer将会被flush到服务端。其中,writeBufferSize的单位是byte字节数,可以根据实际写入数据量的多少来设置该值。

本帖被以下淘专辑推荐:

已有(4)人评论

跳转到指定楼层
tntzbzc 发表于 2015-6-11 11:11:37
个人认为应该不会

hbase在写入数据之前会先写入MemStore,成功了再写入HLog

详细参考:
hbase源码系列(十)HLog与日志恢复
回复

使用道具 举报

linjikai8888 发表于 2015-6-11 11:48:21
tntzbzc 发表于 2015-6-11 11:11
个人认为应该不会

hbase在写入数据之前会先写入MemStore,成功了再写入HLog

hbase在写入数据之前会先写入MemStore,成功了再写入HLog,当MemStore的数据丢失的时候,还可以用HLog的数据来进行恢复

那就是说缓存在客户端的数据,如果客户端挂了,是会丢的了!因为缓存的时候,还根本没有跟Hbase做交互处理

回复

使用道具 举报

tntzbzc 发表于 2015-6-11 11:52:36
linjikai8888 发表于 2015-6-11 11:48
hbase在写入数据之前会先写入MemStore,成功了再写入HLog,当MemStore的数据丢失的时候,还可以用HLog的 ...

还没有交互,那可能就不行了。
有点像浏览器放到缓存,还没跟服务器打交道,那肯定就丢了。

所以缓存不要太大,否则损失严重
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条