我们在用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
上一篇博客说了使用 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
上一篇博客说了怎样搭建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
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配置来设置大小,以满足应用的需要。
客户端请求在那个时间段网络有异常导致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
客户端API:基础 HBase的主要客户端接口是由org.apache.hadoop.hbase.client包中的HTable类提供的,通过这个类,用户可以完成向HBase存储和检索数据,以及删除无效数据之类的操作...通常在正常负载下和常规操作下,客户端读操作不会受到其他修改数据的客户端影响,因为它们之间的冲突可以忽略不计。但是,当允许客户端需要同时修改同一行数据时就会产生问题。...HBase的API配备了一个客户端的写缓冲区(write buffer),缓冲区负责收集put操作,然后调用RPC操作一次性将put送往服务器。...(false); 客户端写缓冲区的大小默认是2MB,如果需要存储较大的数据,为了避免每次创建实例都要修改缓冲区大小,可以在hbase-site.xml配置文件中添加一个较大的预设值。...如果用户只存储大单元格,客户端缓冲区的作用就不大了,因为传输时间占用了大部分的请求时间。 参考:《HBase权威指南》
HashTable/SyncTable是一个同步hbase表数据的工具,其通过过程分为两步,这两步都是mapreduce job。...和CopyTable工具一样,他也可以用来在同一个或者不同的集群之间同步部分或者全部的表数据。只不过,相比CopyTable来说,本工具在同步不同集群之间的表数据时表现更好。...,zk3.example.com:2181:/hbase hdfs://nn:9000/hashes/tableA tableA tableACopy dryrun选项在只读操作以及表对比中时非常有用的...,它可以显示两个表的差异数量而不对表做任何改变,它可以作为VerifyReplication工具的替代品 默认情况下,SyncTable会让目标表成为源表的复制品。...org.apache.hadoop.hbase.mapreduce.SyncTable --dryrun=false --sourcezkcluster=hadoop:2181:/hbase hdfs
本文对HBase常用的数据导入工具进行介绍,并结合云HBase常见的导入场景,给出建议的迁移工具和参考资料。...HBase之间数据导入常用工具 HBase提供了几种数据迁移工具,其中基于API调用的有CopyTable,Export&Import。基于写HDFS的有distcp,snapshot。...否则可以在另一个hadoop集群上安装HBase客户端并将hbase-site.xml文件中的zk地址指向源集群。...公网访问需要使用阿里云定制的客户端,具体的下载和配置参见使用 Shell 访问。 完成后,如果能通过hbase shell访问,就说明这一步的配置已经成功了。...修改sqoop环境变量 sqoop环境变量中和HBase相关的环境变量主要是HBASE_HOME,需要把这个变量改成阿里云定制客户端所在的目录。
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
; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.client.Delete...; import org.apache.hadoop.hbase.client.HTableInterface; import org.apache.hadoop.hbase.client.Result...; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp...; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.FilterList; import...; import org.apache.hadoop.hbase.filter.RowFilter; import org.apache.hadoop.hbase.util.Bytes; import
前一篇博客说了一下 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
下面是完整代码示例 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 等等的长连接也都可以,这样,你学会了吗?
ImportTsv-HBase数据导入工具 作者:幽鸿 一、概述 HBase官方提供了基于Mapreduce的批量数据导入工具:Bulk load和ImportTsv。...数据导入工具,探究如何高效导入数据到HBase。...二、ImportTsv介绍 ImportTsv是Hbase提供的一个命令行工具,可以将存储在HDFS上的自定义分隔符(默认\t)的数据文件,通过一条命令方便的导入到HBase表中,对于大数据量导入非常实用...$ bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c $ bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv...$ bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles $ bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles
import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.hadoop.hbase.client.Delete...; import org.apache.hadoop.hbase.client.HTableInterface; import org.apache.hadoop.hbase.client.Result...; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.PrefixFilter...import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.hadoop.hbase.HbaseTemplate...; import org.springframework.data.hadoop.hbase.RowMapper; import org.springframework.data.hadoop.hbase.TableCallback
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'
有很多工具可用于同步不同对等集群上的现有数据。Snapshots、BulkLoad、CopyTable是此类工具的知名示例,以前的Cloudera博客文章中都提到了这些示例。...它看起来类似于CopyTable工具,该工具可以执行部分或全部表数据复制。与CopyTable不同,它仅在目标集群之间复制分散的数据,从而在复制过程中节省了网络和计算资源。...HASHES_MATCHED=97148 … 适用场景 数据同步 乍一看,HashTable/SyncTable似乎与CopyTable工具重叠,但是在某些特定情况下,这两种工具都更适合。...对于这个非常小的数据集和一个空闲的集群,这仍然可以实现,但是在具有较大数据集的生产用例下,并且许多向其写入数据的客户端应用程序也可能使用目标集群,与SyncTable相比,CopyTable的性能下降会更高...对于要复制大量数据的初始负载,先制作表快照,然后再使用ExportSnapshot工具,将胜过SyncTable或CopyTable等在线复制工具。
领取专属 10元无门槛券
手把手带您无忧上云