`
punishzhou
  • 浏览: 141351 次
社区版块
存档分类
最新评论

HTable的使用

阅读更多

当前一般HBase的读写(删除也认为是写)都是通过HTable对象来操作的。

 

首先看官方的注释

 

 

 * <p>Used to communicate with a single HBase table.

 *

 * <p>This class is not thread safe for reads nor write.

 * 

 * <p>In case of writes (Put, Delete), the underlying write buffer can

 * be corrupted if multiple threads contend over a single HTable instance.

多线程操作同一个HTable实例的时候write buffer会混乱。也就是说HTable不是线程安全的。

具体体现在两个方面:

1.写的时候会把数据写到一个writebuffer里面,多线程的话全部写入到同一个buffer会导致数据紊乱

2. wirteBuffer清空的时候也有问题,不知道哪些数据已经写成功,哪些还未写成功。

基于这两个方面我们可以认为写的时候用同一个HTable实例时不推荐的。

 

有人可能会提出HTablePool是线程安全的,那用pool会如何。

实际上HTabePool的作用我认为是为了控制客户端对HTable的滥用。

其官方说明

/*Get areference to the specified table from the pool。*/

得到的仅仅是一个HTable的引用,如果当前pool中没有该table的HTable对象那么会new一个。

记住操作完以后要把该引用放回去,否则你每次去getTable都是去new一个新的对象,这是一个很大的开销。

 

接着来看看scan的几个参数:

1. caching  

对于这个重要的参数,api上尽然说明不多。。

这个值可以大幅减少rpc时间,也就是说,如果你要求100条数据,如果你的caching是10,那么rpc通信次数只有10次,如果你的caching设置为1,那么rpc次数是100,这是一个极大地开销,不过这个值也不能设置的太大,否则对服务器端和客户端都是灾难性的。

2. batch

每个result上的kv数。

3.maxResultSize

Result的最大值

 

简单来说,

caching是一次从服务器端返回对少个Result对象,batch是每个Result上的kv数目,MaxResultSize是单个Result的最大值。

batch和MaxResultSize都是为了防止单个Result过大,将单个过大的Result拆开成几个返回防止客户端oom。。

 

 

 

 

 

 

分享到:
评论
1 楼 di1984HIT 2014-10-10  
学习了~~~

相关推荐

    htable2csv:将HTML表转换为.csv文件

    htable2csv 将HTML表转换为.csv文件

    hbase orm simplehbase v1.0

    simplehbase是java和hbase之间的轻量级中间件。 主要包含以下功能。 数据类型映射:java类型和hbase的bytes之间的数据转换。 简单操作封装:封装了hbase的put,get,scan等操作为简单的java...HTable count和sum功能。

    易语言判断系统补丁是否存在

    wmic qfe list full /format:htable。是直接转换为html网页的存在 然后可以调用写到本地。但是无法取出来作为判断 于是我想到用超文本浏览器取打开这个html 。去读取文字 然后使用正则表达式获取补丁版本都有那些...

    一个Demo即可入门指纹识别,全功能链的指纹识别matlab代码。

    基于传统的指纹图像处理理论,matlab实现,中间变量清晰可见,参数可调节。 它将可以帮助你: 1、省去2至3个月的入门熟悉...本Demo除实现指纹匹配算法外,将指纹搜索通过建立索引的方式实现,相关见Demo中Htable功能。

    kamcli:Kamailio命令行界面控制工具

    可以从终端一次运行,也可以通过嵌入式交互式shell(可以使用kamcli shell启动-参见相应部分)来一次运行。 使用kamcli的原型是: kamcli [options] command [arguments] 可以将用于kamcli的新命令实现为插件,每...

    云计算》教材配套课件9-HBase的原理与实验

    为什么需要HBase HTable的逻辑组织 HBase的运行机制 HBase与 HDFS HBase的对外接口

    高性能HBase客户端AsynchronousHBase.zip

    asynchbase...这个 HBase 客户端跟 HBase 的客户端 HTable 有着很大的区别,不需要重写所有的 HBase API 交互代码,原生异步,而且使用一些线程就可以跟 HBase 进行高效的交互。 标签:Asynchronous

    hbase各种例子新增修改删除批量导入

    HTable table = new HTable(conf, "testtable"); // vv PutListExample List&lt;Put&gt; puts = new ArrayList(); // co PutListExample-1-CreateList Create a list that holds the Put instances. Put put1 = new ...

    storm-asynchbase:AsyncHBase 风暴映射器

    与传统的 HBase 客户端 (HTable) 不同,每个要与之交互的 HBase 集群只需要一个客户端实例。 即使您想与多个表进行交互。 它避免了不必要的等待线程,即使在同步模式下也允许批量请求并行运行。 客户端提供客户端...

    treeTable - 创建具有可折叠行组的可排序表控件:创建具有可折叠/可扩展数据行组的基于 Java 的可排序树表 GUI 控件-matlab开发

    句法: htable = treeTable (pnContainer, headers, data, 'PropName',PropValue, ...) 输入参数: pnContainer - 容器 uipanel 或图形的可选句柄(默认值:gcf) headers - 列标题字符串的可选元胞数组数据-数据值...

    Apache HBase Primer

    网上的HBase书都比较老了,这是目前为止最新版本的HBase电子书。... Chapter 18: Using the HTable Class Part VI: Administration Chapter 19: Using the HBase Shell Chapter 20: Bulk Loading Data

    HBase全局一致性事务支持Tephra.zip

     secondaryIndexHTable = new HTable(hTable.getConfiguration(),  secondaryIndexTableName);  } catch (Exception e) {  Throwables.propagate(e);  } finally {  try {  hBaseAdmin.close...

    IT赛道题库(1).zip

    HTable C. HBaseAdmin D. PutList Answer: C 2.在MapReduce的应用程序开发中,下列哪个JAVA类负责管理和运行一个计算任务? A. lob B. Context C. FileSystem D. Configuration Answer: A 3.Fusionlnsight HD中...

    易语言-易语言判断系统补丁是否存在

    wmic qfe list full /format:htable 是直接转换为html网页的存在 然后可以调用写到本地 但是无法取出来作为判断 于是我想到用超文本浏览器取打开这个html 去读取文字 然后使用正则表达式获取补丁版本都有那些 再去...

    HBase-coprocessor

    端点协处理器:就像数据库的“存储过程”一样,这种类型的协处理器必须通过“ HTableInterface”(或HTable)的“ CoprocessorService()”方法显式触发。 协处理器不是为最终用户设计的,而是由开发人员使用的。 ...

    判断系统补丁是否存在的-易语言

    wmic qfe list full /format:htable 是直接转换为html网页的存在然后可以调用写到本地 但是无法取出来作为判断 于是我想到用超文本浏览器取打开这个html 去读取文字 然后使用正则表达式获取补丁版本都有那些

    clojure-hbase-schemas:基于架构的HBase交互

    该库的灵感来自David Santiago的并直接从他的库中取消了对HTable管理功能的支持。 发行版保留在clojars中。 最新版本是: com.compasslabs/clojure-hbase-schemas "0.90.4"描述引入了两个主要功能:模式和约束。 ...

    Hbase工具类

    文章目录HBASE 工具类HBASE 高可用搭建 ...import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.util.Bytes; import java.io.IO

Global site tag (gtag.js) - Google Analytics