我们在用hbase的api对hbase进行scan操作的时候,可以设置caching和batch来提交查询效率,那它们之间的关系是啥样的呢,我们又应该如何去设置? 首先是我们的客户端代码。
上一篇博客说了使用 HBase 的客户端 API 来操作管理 HBase 中的表,今天我们看看怎样通过 API 来操作表中的数据。...介绍 在 HBase 中对数据表中的数据的操做我们一般是通过 Table, Put, Get, Delete,Scan,Result等几个类来实现。...package my.hbasestudy; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration...; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.Bytes
1减少RPC调用的方法 1.1.问题提出 HBase中rowkey是索引,任何对全表的扫描或是统计都需要用到scan接口,一般都是通过next()方法获取数据。...2客户端其它最佳实践方法 2.1.问题提出 平常情况下,很多的应用主要是通过使用客户端来访问HBase集群,进而完成业务。因此整个系统的性能有很大一部分依赖于客户端的性能。...客户端的开发主要是使用HBase提供的API,往往又由于不同的程序员对API的掌握程度不一,导致了客户端的性能差别很大。...2.2.解决思路 客户端是使用HBase提供的API来完成读写数据,因此我们针对API的使用整理了一些最佳实践。...默认的客户端写缓存是2M,我们可以通过修改hbase.client.write.buffer配置来设置大小,以满足应用的需要。
上一篇博客说了使用 HBase 的客户端 API 来操作操作 HBase 表中记录,今天我们看看怎样通过 API 来批量操作表中的数据。...安装上一篇博客中的方法在 HBase 中如果更新(添加/修改/删除)记录,是按行一条一条更新的,这种方法在处理大量更新操作时,性能比较差,还好在 HBase 中提供了以 Batch 方式来批量更新数据表的方法...完整例子代码如下 package my.hbasestudy; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration...; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.Bytes
客户端请求在那个时间段网络有异常导致rpc请求失败,会进入重试逻辑 根据HBase的重试机制(退避机制),每两次重试机制之间会休眠一段时间,即cancelled.wait(expectedSleep)...hbase.rpc.timeout 该参数表示一次RPC请求的超时时间。如果某次RPC时间超过该值,客户端就会主动关闭socket。...那假如caller对象发送RPC请求之后刚好发生网络抖动,进而抛出网络异常,HBase客户端就会进行重试,重试多次之后如果总操作时间超时引起SocketTimeoutException,对应的就是hbase.client.operation.timeout...hbase.client.scanner.timeout.period 该参数是表示HBase客户端发起一次scan操作的rpc调用至得到响应之间总的超时时间。...为了构建一个更稳定、低延迟的HBase系统,除过需要对服务器端参数做各种调整外,客户端参数也需要做相应的调整: hbase.client.pause:默认为100,可以减少为50 hbase.client.retries.number
上一篇博客说了怎样搭建HBase环境,今天说说怎样使用 HBase 的客户端 API 来操作 HBase 中的数据。...创建工程 首先创建一个 Maven 工程,然后添加hbase客户端api的依赖项,如下: org.apache.hbase...工程的resources目录下添加 hbase-site.xml 文件,hbase客户端 API 默认会在系统的 classpath 下找此文件来加载连接信息。...() 来获取 HBase 中所有表的描述信息。...; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.Bytes
客户端API:基础 HBase的主要客户端接口是由org.apache.hadoop.hbase.client包中的HTable类提供的,通过这个类,用户可以完成向HBase存储和检索数据,以及删除无效数据之类的操作...通常在正常负载下和常规操作下,客户端读操作不会受到其他修改数据的客户端影响,因为它们之间的冲突可以忽略不计。但是,当允许客户端需要同时修改同一行数据时就会产生问题。...HBase的API配备了一个客户端的写缓冲区(write buffer),缓冲区负责收集put操作,然后调用RPC操作一次性将put送往服务器。...(false); 客户端写缓冲区的大小默认是2MB,如果需要存储较大的数据,为了避免每次创建实例都要修改缓冲区大小,可以在hbase-site.xml配置文件中添加一个较大的预设值。...如果用户只存储大单元格,客户端缓冲区的作用就不大了,因为传输时间占用了大部分的请求时间。 参考:《HBase权威指南》
Ref HBase客户端API提供了Write Buffer的方式,即批量提交一批Put对象到HBase服务端。本文将结合HBase相关源码,分析如何在实际项目中合理设置和使用它。 1....正是出于上述考虑,HBase为用户提供了客户端缓存批量提交的方式(即Write Buffer)。假设RTT的时间较长,如1ms,则该种方式能够显著提高整个集群的写入性能。...: Put Size = ((50~60) + L1) * N + L2) bytes 下面我们通过对HBase的源码分析来进一步验证以上理论估算值: HBase客户端执行put操作后,会调用put.heapSize...首先,Write Buffer存在于客户端的本地内存中,那么当客户端运行出现问题时,会导致在Write Buffer中未提交的数据丢失;由于HBase服务端还未收到这些数据,因此也无法通过WAL日志等方式进行数据恢复...其次,Write Buffer方式本身会占用客户端和HBase服务端的内存开销,具体见下节的详细分析。 6. 如何预估Write Buffer占用的内存?
在使用HBase的API查询数据的时候,我们经常需要设置一些过滤条件来查询数据,这个时候我们就需要使用 HBase API 的各种 Filter 来实现这一功能。...在 HBase API 中使用过滤器需要创建一个 Filter 实例,然后使用Scan.setFilter()或者Get.setFilter()来使用 Filter,如下: Table table =...; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import...org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.exceptions.DeserializationException...; import org.apache.hadoop.hbase.filter.*; import org.apache.hadoop.hbase.util.Bytes; import java.io.IOException
下面是完整代码示例 package my.hbasestudy; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.CompareOperator...; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import...org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.filter.*; import org.apache.hadoop.hbase.util.Bytes
因为之前公司项目里已经导入了很多数据,所以需要在客户端以及服务端开启phoenix的映射功能: ?...因为是关联表,所以要进行视图映射,而不是直接去创建表,因为这样删除你创建的表,hbase的表也会受损,所以用视图是一个很好的方法,建表语句如下: create view "data"."
放弃不难,但坚持很酷~ HBase 版本:1.2.0-cdh5.7.0 一、客户端的长短连接 java 远程连接 HBase 客户端,大体分为两种方式。一种是长连接,一种是短连接。...二、使用单例模式来初始化 HBase 客户端 以 HBase 为例,如果使用长连接,那就得需要确保 connection 唯一(不唯一的话,有可能造成资源浪费或者连接数过多报错),所有的操作都使用这一个.../** * HBase客户端操作(长连接) */ public class HBaseUtil { private static final Logger log = LoggerFactory.getLogger...比如我们要执行 HBase 客户端操作的话,可以执行:HBaseUtil.getInstance().listTables("xxx") 。 三、总结 1、为什么这样实现就是单例的?...3、不只是 HBase 可以这样初始化客户端,Elasticsearch 等等的长连接也都可以,这样,你学会了吗?
前一篇博客说了一下 HBase 的一些过滤器,今天看看 HBase 的分页过滤器。...这里有一点需要注意,HBase中行键的排序是按字典顺序排列的,因此返回的结果也是按此顺序排列。...; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import...org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.exceptions.DeserializationException...; import org.apache.hadoop.hbase.filter.*; import org.apache.hadoop.hbase.util.Bytes; import java.io.IOException
HBase的相关操作-客户端命令式 我们可以以shell的方式来维护和管理HBase。...例如:执行建表语句、执行增删改查操作等等 1、进入HBase客户端命令操作界面 $ bin/hbase shell 2、查看帮助命令 hbase(main):001:0> help 3、查看当前数据库中有那些表...hbase(main):002:0> lis 4、创建一张表 创建user表,包含info、data两个列族 hbase(main):010:0> create 'user', '...管理命令 1) status 显示服务器状态 “例如: hbase(main):058:0> status 'node01' 2) whoami : 显示HBase当前用户,例如...: hbase> whoami 3) list : 显示当前所有的表 4) count: 统计指定表的记录数,例如: hbase> count 'user'
Hbase的客户端有原生java客户端,Hbase Shell,Thrift,Rest,Mapreduce,WebUI等等。 下面是这几种客户端的常见用法。 ?...一、原生Java客户端 原生java客户端是hbase最主要,最高效的客户端。 涵盖了增删改查等API,还实现了创建,删除,修改表等DDL操作。...三、使用Thrift客户端访问HBase 由于Hbase是用Java写的,因此它原生地提供了Java接口,对非Java程序人员,怎么办呢?...幸好它提供了thrift接口服务器,因此也可以采用其他语言来编写Hbase的客户端,这里是常用的Hbase python接口的介绍。其他语言也类似。...客户端 1、启动REST服务 a.启动一个非守护进程模式的REST服务器(ctrl+c 终止) bin/hbase rest start b.启动守护进程模式的REST服务器
一.前述 1.HBase,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库。...二.Hbase数据模型 ? 2.1 ROW KEY(相当于关系型数据库中的ID) 决定一行数据 按照字典顺序排序的。...三.Hbase架构 ?...3.1 Client 包含访问HBase的接口并维护cache来加快对HBase的访问 3.2 Zookeeper 保证任何时候,集群中只有一个master(HA) 存贮所有Region的寻址入口。...形成更大的storefile 当一个region所有storefile的大小和数量超过一定阈值后,会把当前的region分割为两个,并由hmaster分配到相应的regionserver服务器,实现负载均衡 客户端检索数据
可以用如下语句在hive上实行创表,然后hbase上会出现对应的表 ? ?...此时可以看见basketball2已经在hbase上建立了 ps:CREATE TABLE basketball2(num int,team string,state string) STORED BY...‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’ WITH SERDEPROPERTIES (“hbase.columns.mapping” = “...:key,player:team,player:state”) TBLPROPERTIES (“hbase.table.name” = “basketball2”); create table后面跟hive...上要创建的表名,mapping相当于映射,:前面没有东西就相当于是hbase里的rowkey,后面的player相当于列族里的Column family,而team和state相当于Column qualifier
Hbase(四):Hbase原理 Hbase的工作方式 region的分裂和结构 hbase表中的数据按照行键的字典顺序排序 hbase表中的数据按照行的的方向切分为多个region 最开始只有一个...由于hbase中的数据天然排序 再加上索引 整个查询也可以非常的快 Hbase中的region的寻址 在hbase中有一个hbase:meta表,其中存放了 表和region和regionSever 之间的对应关系信息...,这个表很特别,只有一个region 并且这个meta表的这个region的位置信息被存放在了zookeeper的meta-region-server节点下 在客户端从hbase中查找数据时,需要先联系...这样的寻址过程是相当耗费时间的,为了提高性能,客户端通常会缓存之前已经知道的region寻址信息,当客户端再次读取同一个表中的数据时,可以通过本地缓存的region地址信息 直接定位读取,提高效率。... 支持增、删、读、改、顺序扫描操作 牺牲了一部分读的性能换取了高效写入能力 Hbase系统架构 hbase中的老大叫hmaster 小弟叫hregionServer 客户端叫Client
来加速Hbase的访问,比如cache的.META.元数据的信息。...流程 老的Region寻址方式 在Hbase 0.96版本以前,Hbase有两个特殊的表,分别是-ROOT-表和.META.表,其中-ROOT-的位置存储在ZooKeeper中,-ROOT-本身存储了...(3)Hlog数量上限 前面说到Hlog为了保证Hbase数据的一致性,那么如果Hlog太多的话,会导致故障恢复的时间太长,因此Hbase会对Hlog的最大个数做限制。...该参数为:hbase.hregion.majorcompaction.jitter 具体算法为: hbase.hregion.majorcompaction参数的值乘于一个随机分数,这个随机分数不能超过...通过hbase.hregion.majorcompaction参数的值加上或减去hbase.hregion.majorcompaction参数的值乘于一个随机分数的值就确定下一次大合并的时间区间。
HBase Shell 常用命令: 注意:HBase在linux命令行下操作时,区分大小写 HBase API HBase 提供Java方式的原生接口,其中需要注意的有: (1)创建Connection...HBase Rest Gateway HBase附带的REST服务器,该服务器将HBase表,行,单元和元数据作为URL指定的资源公开。...客户端通过发请求到RegionServer端,写入的时候会先写入WAL日志中,其次会将数据写入memstore内存,当数据达到一定大小后会flush成一个个的HFile文件,当文件达到一定数量后,通过compaction...当进行读取时,客户端会先发送scan请求到RegionServer,打开scanner,然后调next请求获取一行数据,也可以将一批数据先放入Result的Cache中去,客户端不断迭代获取内容,scan...然后客户端每次通过Next请求驱动Scan的调用,Scanner Next请求调用如下图所示,用ScannerA-D表示上面提到的各种Scanner,当依次Next请求调用时,会判断哪个Scanner的数据是最小的
领取专属 10元无门槛券
手把手带您无忧上云