写缓冲区
HBase每次的put操作,都是一次rpc操作,如果某个应用程序每秒钟有1000+的put操作,那显然是不合适的。
HBase的客户端API中配置了一个写缓冲区,缓冲区负责收集put操作,达到一定条件后,调用一次rpc操作,将全部的缓冲数据发送到服务器端。
void setAutoFlush(boolean autoFlush)
boolean isAutoFlush()
默认情况下,写缓冲区是关闭的,可以通过setAutoFlush(false)来打开写缓冲区。
可以通过isAutoFlush()来判断当前写缓冲区的开关状态。
如果需要强制性的将数据发送到服务器端,可以通过:
void flushCommits() throws IOException
可以将所有缓冲的数据发送到服务器端。
每个HBase客户端默认的写缓冲区大小是2M,可以通过:
long getWriteBufferSize()
void setWriteBufferSize(long writeBufferSize) throws IOException
配置写缓冲区的大小。
2M的缓冲区一般比较合适,如果存储的是视频数据,例如是720P或者1080P的视频数据,那么数据的传输时间占了大部分的请求时间,所以此时缓冲区的作用就不大了(缓冲区的大小最好根据实际测试结果进行调整)。
缓冲区在两种情况下会flush到服务端:
①显示调用flushCommits()
②隐式flush
即在客户端