hbase
Star先生
技术为本,行业为先!
展开
-
深入 HBase 架构解析(1)
前记公司内部使用的是MapR版本的Hadoop生态系统,因而从MapR的官网看到了这篇文文章:An In-Depth Look at the HBase Architecture,原本想翻译全文,然而如果翻译就需要各种咬文嚼字,太麻烦,因而本文大部分使用了自己的语言,并且加入了其他资源的参考理解以及本人自己读源码时对其的理解,属于半翻译、半原创吧。HBase架构组成HBase采用Master/Sla原创 2015-09-28 22:23:50 · 1706 阅读 · 0 评论 -
HBase基础知识(8):扫描操作之缓存与批量处理
每一个next()调用都会为每行数据生成一个单独RPC请求,即使使用next(int nbRows)方法,也是如此,因为该方法仅仅是在客户端循环地调用next()方法。很显然,当单元格数据较小时,这样做的性能不会很好。因此,如果一次RPC请求可以获取多行数据,这样更会有意义。这样的方法可以由扫描器缓存实现,默认情况下,这个缓存是关闭的。 可以在两个层面上打开它:在表的层面,这个表所有扫描实例的缓存原创 2015-08-27 12:09:00 · 5128 阅读 · 0 评论 -
HBase基础知识(3):CRUD操作之删除方法
HTable提供了删除的方法,同时与之前的方法有一个对应的类名为Delete。 单行删除delete()方法有许多变体,其中一个只需要一个Delete实例:void delete(Delete delete) throws IOException用户必须先创建一个Delete实例,然后再添加你想要删除数据的详细信息。原创 2015-08-26 10:24:12 · 2712 阅读 · 0 评论 -
HBase基础知识(9):HBase其他特性
客户端API是由HTable的实例提供的,用户可以用它来操作HBase表。除了之前提到的一些主要特性外,还有以下一些值得注意的方法。HTable的实用方法void close() 用户使用完一个HTable实例之后,需要调用一次Close()。这个方法会刷写所有客户端缓冲的写操作:close()方法会隐式调用flushCache()方法。byte[] getTableName() 这是一个获原创 2015-08-28 10:24:19 · 2284 阅读 · 0 评论 -
HBase基础知识(1):CRUD操作之put方法
数据库的初始基本操作被称CURD(Create,Read,Update,Delete),具体指增、查、改、删。HBase中有与之对应的一组操作。 下面介绍的这些组操作可以被分为两类:一类操作用于单行,另一类操作用于多行。鉴于后面有一些内容比较复杂,我们将分开介绍着两类操作。同时,我们还会介绍一些衍生的客户端的API特性。 单行put也许你现在最想了解的就是如何向HBase中存储数据,下面就是实现原创 2015-08-26 09:33:47 · 6546 阅读 · 0 评论 -
HBase基础知识(6):扫描操作介绍
扫描操作的使用跟get()方法非常相似。同样,和其他函数类似,这里也提供了Scan类。但是由于扫描的工作方式类似于迭代器,所以用户无需调用scan()方法创建实例,只需调用HTable的getScanner()方法,此方法在返回真正的扫描器(scanner)实例的同时,用户也可以使用它迭代获取数据。可用方法如下: ResultScanner getScanner(Scan scan) throws原创 2015-08-26 20:13:48 · 4029 阅读 · 0 评论 -
HBase基础知识(2):CRUD操作之get方法
HTable类中提供了get()方法,同时还有与之对应的Get类。get方法分为两类:一类是一次获取一行数据;另一类是一次获取多行数据。 单行get这种方法可以从HBase中获取一个特定的值:Result get(Get get) throws IOException与put()方法对应Put类相似,get()方法也有对应的Get类,此外还有一个相似之处,那就是在使用下面的方法构造Get实例时,与原创 2015-08-25 14:11:17 · 4796 阅读 · 0 评论 -
HBase基础知识(7):扫描操作之ResultScanner类
扫描操作不会通过一次RPC请求返回所有匹配的行,而是以行为单位进行返回。很明显,行的数目很大,可能有上千条甚至更多,同时在一次请求中发送大量数据,会占用大量的系统资源并消耗很长时间。 ResultScanner类把扫描操作转换为类似的get操作,它将每一行数据封装成一个Result实例,并将所有的Result实例放入一个迭代器中。ResultScanner的一些方法如下:Result next原创 2015-08-27 09:51:12 · 8313 阅读 · 0 评论 -
HBase基础知识(4):批量处理操作
之前我们学习过添加、检索和删除表中数据的操作了,不过都是基于单个实例或基于列表的操作。下边介绍一些API调用,可以批量处理跨多行的不同操作。 事实上,许多基于列表的操作,如delete(Listdeletes)或者get(Listgets),都是基于batch()方法实现的。它们都是一些为了方便用户使用而保留的方法。如果你是新手,推荐使用batch()方法进行所有操作。 下面的客户端API方原创 2015-08-26 15:13:03 · 5624 阅读 · 0 评论 -
HBase基础知识(5):行锁
像put()、delete()、checkAndPut()这样的修改操作是独立执行的,这意味着在一个串行方式的执行中,对于每一行必须保证行级别的操作是原子性的。region服务器提供了一个行锁(row lock的特性,这个特性保证了只有一个客户端能获取一行数据相应的锁。同时对该行进行修改,在实践中,大部分客户端应用程序都没有提供显示的锁,而是使用这个机制来保障每个操作的独立性。 **用户应该尽原创 2015-08-26 16:12:51 · 2877 阅读 · 0 评论 -
深入 HBase 架构解析(2)
这是《深入HBase架构解析(1)》的续,不多废话,继续。。。。 HBase读的实现 通过前文的描述,我们知道在HBase写时,相同Cell(RowKey/ColumnFamily/Column相同)并不保证在一起,甚至删除一个Cell也只是写入一个新的Cell,它含有Delete标记,而不一定将一个Cell真正删除了,因而这就引起了一个问题,如何实现读的问题?要解决这个问题,我们先来分析一原创 2015-09-28 22:40:39 · 1213 阅读 · 0 评论