四 HBase 客户端设置缓存优化查询。

其实查询无非是一个 HBase 的 RPC 计算公式 、然后给API 提供值。
RPCs = (Rows * Cols per Row) / Min(Cols per Row, Batch Size)/ Scanner Caching 。

Hadoop的MR运算中,Hbase可以作为输入数据源参与运算,其中作为HTable的迭代器Scan有几个使用技巧

涉及的方法如下:

public void setBatch(int batch)public void setCaching(int caching)public void setCacheBlocks(boolean cacheBlocks)

public void setBatch(int batch) :

为设置获取记录的列个数,默认无限制,也就是返回所有的列

public void setCaching(int caching):

每次从服务器端读取的行数,默认为配置文件中设置的值

public void setCacheBlocks(boolean cacheBlocks):

为是否缓存块,默认缓存,我们分内存,缓存和磁盘,三种方式,一般数据的读取为内存->缓存->磁盘,当MR的时候为非热点数据,因此不需要缓存

因此在MR的时候最好设置如下:

scan.setCacheBlocks(false);
scan.setCaching(200);//大了占内存,但是rpc少
scan.setBatch(6);//你需要的列
在查询的时候,按照查询的列数动态设置batch,如果全查,则根据自己所有的表的大小设置一个折中的数值,caching就和分页的值一样就行。

当caching和batch都为1的时候,我们要返回10行具有20列的记录,就要进行201次RPC,因为每一列都作为一个单独的Result来返回,这样是我们不可以接受的。





God has given me a gift. Only one. I am the most complete fighter in the world. My whole life, I have trained. I must prove I am worthy of someting. rocky_24
原文地址:https://www.cnblogs.com/rocky24/p/e1d27c2b30e5ae854fc0509d4a8a82dc.html