文档首页 > > 开发指南(适用于2.x及之前)> HBase应用开发> HBase接口> Java API

Java API

分享
更新时间:2020/09/03 GMT+08:00

HBase采用的接口与Apache HBase保持一致,请参见http://hbase.apache.org/apidocs/index.html

新增或修改的接口

  • HBase 0.98.3建议使用org.apache.hadoop.hbase.Cell作为Key-value数据对象,而不是HBase 0.94的org.apache.hadoop.hbase.KeyValue。
  • HBase 0.98.3建议使用HConnection connection = HConnectionManager.createConnection(conf)来创建连接池,废弃HTablePool。
  • 新的EndPoint接口,参见http://hbase.apache.org/book/cp.html
  • org.apache.hadoop.hbase.client.Scan中新增反向扫描方法设置isReversed()和setReversed(boolean reversed)。
  • HBase 0.98到1.0的API变更,请参考:https://issues.apache.org/jira/browse/hbase-10602
  • HBase 1.0 建议不要使用org.apache.hadoop.hbase.mapred,建议使用org.apache.hadoop.hbase.mapreduce。
  • 版本详细的信息请参考:https://blogs.apache.org/hbase/entry/start_of_a_new_era
  • 获取HBase replication metrics新增的API接口
    表1 org.apache.hadoop.hbase.client.replication.ReplicationAdmin

    方法

    描述

    getSourceMetricsSummary(String id)

    参数类型:String

    需要获取对端id的源指标汇总。

    返回类型:Map<String, String>

    返回:一个Map,其中键是RegionServer的名称,值是指定对端id的源集群指标的汇总。汇总指标是'sizeOfLogToReplicate'和'timeForLogToReplicate'。

    getSourceMetrics(String id)

    参数类型:String

    需要获取对端id的源指标汇总。

    返回类型:Map<String, String>

    返回:一个Map,其中键是RegionServer的名称,值是指定对端id源集群的指标。

    getSinkMetrics()

    返回类型:Map<String, String>

    返回:一个Map,其中键是RegionServer的名称,值是指定对端id源集群的sink指标。

    getPeerSinkMetrics(String id)

    参数类型:String

    需要获取对端id的源指标汇总。

    返回类型:Map<String, String>

    返回:一个Map,其中键是RegionServer的名称,值是指定对端id源集群的sink指标。

    所有方法返回一个Map,其中键是“RegionServer名称(IP/Host)”和string类型的值,包含了所有指标,其格式是'Metric Name'='Metric Value' [, 'Metric Name'= 'Metric Value']*

    举例:SizeOfHFileRefsQueue=0, AgeOfLastShippedOp=0

    表2 org.apache.hadoop.hbase.replication.ReplicationLoadSource

    方法

    描述

    getPeerID()

    返回类型:String

    返回:对端集群的id

    getAgeOfLastShippedOp()

    返回类型:long

    返回:上次成功的replication请求持续的毫秒数

    getSizeOfLogQueue()

    返回类型:long

    返回:队列中等待replication的WALs

    getTimeStampOfLastShippedOp()

    返回类型:long

    返回:上次成功的replication请求的时间戳

    getReplicationLag()

    返回类型:long

    返回:当前时间和上次成功的replication请求的时间间隔

    getShippedOps()

    返回类型:long

    返回:输送的数据ops总数

    getShippedBytes()

    返回类型:long

    返回:输送的总的数据字节数

    getShippedBatches()

    返回类型:long

    返回:输送的总的数据批数

    getLogReadInBytes()

    返回类型:long

    返回:从wal日志读取的总字节数

    getLogEditsRead()

    返回类型:long

    返回:从wal日志读取的总编辑数

    getSizeOfLogToReplicate()

    返回类型:long

    返回:在队列中等待replicate的总wal日志大小

    getTimeForLogToReplicate()

    返回类型:long

    返回:在队列中replicate wal日志需要花的秒数

    getShippedHFiles()

    返回类型:long

    返回:输送的HFile总数

    getSizeOfHFileRefsQueue()

    返回类型:long

    返回:等待replicate的HFile总数

    getLogEditsFiltered()

    返回类型:long

    返回:过滤的wal编辑总数

    getFailedReplicationAttempts()

    返回类型:long

    返回:在一次请求中不能复制数据的次数。

    表3 org.apache.hadoop.hbase.replication.ReplicationLoadSink

    方法

    描述

    getAgeOfLastAppliedOp()

    返回类型:long

    返回:上次成功的应用wal编辑的持续毫秒数

    getTimeStampsOfLastAppliedOp()

    返回类型:long

    返回:上次成功的应用wal编辑的时间戳

    getAppliedBatches()

    返回类型:long

    返回:应用的数据总批数

    getAppliedOps()

    返回类型:long

    返回:应用数据ops的总数

    getAppliedHFiles()

    返回类型:long

    返回:应用的HFile总数

    Replication Admin新的接口,从HMaster获取指标值。每个Region Server在每一个心跳周期(默认是3秒)上报状态给HMaster。所以API通过Region Server在最后一个心跳时上报最新的指标值。

    如果需要当前最新的指标值,使用由Region Server提供的JMX接口。

  • 1.3.1(MRS 1.6)版本的接口变更
    表4 org.apache.hadoop.hbase.client.Admin中移除了以下接口

    方法

    描述

    compactMob()

    返回类型:void

    增强了ACL客户端API,以便根据特定用户的namespace,表名(table name),列族(column family)和列限定符(column qualifier)进行查询权限。客户端还可以验证指定的用户是否具有对所述表,列族或列限定符执行操作的权限

    表5 org.apache.hadoop.hbase.security.access.AccessControlClient

    方法

    描述

    getUserPermissions(Connection connection, String tableRegex, String userName)

    • 参数类型:Connection

      HBase集群连接。

    • 参数类型:String

      表名称模式,基于将被检索的权限。当“tableRegex”为“null”时,使用全局权限,而如果“tableRegex”包含“@”作为第一个字符,则使用namespace权限,否则将检索表权限。“tableRegex”可以是表和namespace的正则表达式。

    • 参数类型:String

      将被过滤权限的用户名。当username(用户名)为空时,将检索所有用户权限。

    返回类型:List<UserPermission>

    返回:用户权限列表(List of user permissions)

    getUserPermissions(Connection connection, String tableRegex, byte[] columnFamily)

    • 参数类型: Connection

      HBase集群连接。

    • 参数类型:String

      表名称模式,基于将被检索的权限。表名称不能为null或空,也不能是namespace名称。

    • 参数类型:byte[]

      列族,基于将被检索的权限。当“columnFamily”为空时,将检索所有列族权限。

    返回类型:List<UserPermission>

    返回:用户权限列表

    getUserPermissions(Connection connection, String tableRegex, byte[] columnFamily, String userName)

    • 参数类型:Connection

      HBase集群连接。

    • 参数类型:String

      表名称模式,基于将被检索的权限。表名称不能为null或空,也不能是namespace名称。

    • 参数类型:byte[]

      列族,基于将被检索的权限。当“columnFamily”为空时,将检索所有列族权限。

    • 参数类型:String

      将被过滤权限的用户名。当“username”为空时,将检索所有用户权限。

    返回类型:List<UserPermission>

    返回:用户权限列表

    getUserPermissions(Connection connection, String tableRegex, byte[] columnFamily, byte[] columnQualifier)

    • 参数类型:Connection

      HBase集群连接。

    • 参数类型:String

      表名称模式,基于将被检索的权限。表名称不能为null或空,也不能是namespace名称。

    • 参数类型:byte[]

      列族,基于将被检索的权限。当“columnFamily”为空时,将检索所有列族权限。

    • 参数类型:byte[]

      列限定符,基于将被检索的权限。当“columnQualifier”为空时,将检索所有列限定符权限。

    返回类型: List<UserPermission>

    返回:用户权限列表

    getUserPermissions(Connection connection, String tableRegex, byte[] columnFamily, byte[] columnQualifier, String userName)

    • 参数类型: Connection

      HBase集群连接。

    • 参数类型:String

      表名称模式,基于将被检索的权限。表名称不能为null或空,也不能是namespace名称。

    • 参数类型:byte[]

      列族,基于将被检索的权限。当“columnFamily”为空时,将检索所有列族权限。

    • 参数类型:byte[]

      列限定符,基于将被检索的权限。当“columnQualifier”为空时,将检索所有列限定符权限。

    • 参数类型:String

      将被过滤权限的用户名。当“username”为空时,将检索所有用户权限

    返回类型:List<UserPermission>

    返回:用户权限列表

    hasPermission(Connection connection, String tableName, String columnFamily,

    String columnQualifier, String userName, Permission.Action... actions)

    验证指定用户是否具有对所述表,列族或列限定符执行操作的权限。

    • 参数类型:Connection

      HBase集群连接。

    • 参数类型:String

      表名,表名不能为null或空。

    • 参数类型:String

      列族,当“columnFamily”为空时,将在表级进行验证。

    • 参数类型: String

      列限定符,当“columnQualifier”为空时,则在表和列族级别进行验证。如果“columnFamily”被传递为null或为空,则不会考虑“columnQualifier”参数值。

    • 参数类型:String

      将被过滤权限的用户名。当“username”为空时,将检索所有用户的权限。

    • 参数类型:Permission.Action

      指定的用户希望在所述表,列族或列限定符上执行的操作。

    hasPermission(Connection connection, String tableName, byte[] columnFamily,

    byte[] columnQualifier, String userName, Permission.Action... actions)

    验证指定用户是否具有对所述表,列族或列限定符执行操作的权限。

    • 参数类型:Connection

      HBase集群连接。

    • 参数类型:String

      表名,表名不能为null或空。

    • 参数类型:byte[]

      列族,当“columnFamily”为空时,将在表级进行验证。

    • 参数类型:byte[]

      列限定符,当“columnQualifier”为空时,将在表和列族级别进行验证。如果“columnFamily”被传递为null或为空,则不会考虑“columnQualifier”参数值。

    • 参数类型:String

      将被过滤权限的用户名。当“username”为空时,将检索所有用户的权限。

    • 参数类型:Action

      指定的用户希望在所述表,列族或列限定符上执行的操作。

  • 1.3.1(MRS 1.7)版本的接口变更
    • 新增HIndex API
    表6 org.apache.hadoop.hbase.hindex.client.HIndexAdmin

    方法

    描述

    addIndices(TableName tablename,TableIndices tableIndices)

    参数:TableName

    用户想要添加指定索引的表的名称。

    参数:TableIndices

    要添加到表中的表索引

    返回类型:viod

    addIndicesWithData(TableName tablename,TableIndices tableIndices)

    参数:TableName

    用户想要添加指定索引的表的名称

    参数:TableIndices

    要添加到表中的表索引

    返回类型:void

    dropIndices(TableName tableName,List <String> list)

    参数:TableName

    用户想要删除索引的表的名称

    参数: List<String>

    包含要删除的索引名称的列表

    返回类型:void

    dropIndicesWithData(TableName tableName,List <String> list)

    参数:TableName

    用户想要删除指定索引的表的名称

    参数:List <String>

    包含要删除的索引名称的列表

    返回类型:void

    disableIndices(TableName tableName,List <String> list)

    参数:TableName

    用户想要禁用指定索引的表的名称

    参数:List <String>

    包含要禁用的索引名称的列表

    返回类型:void

    enableIndices(TableName tableName,List <String> list)

    参数:TableName

    用户希望启用指定索引的表的名称

    参数:List <String>

    包含要启用的索引名称的列表

    返回类型:void

    listIndices(TableName tableName)

    参数:TableName

    用户想要列出所有索引的表的名称

    返回类型:List <Pair <HIndexSpecification,IndexState >>

    返回:返回二级索引列表,第一个元素是索引规范,第二个元素是该索引的当前状态。

  • 2.1.1(MRS 2.x)版本的接口变更
    移除接口
    表7 org.apache.hadoop.hbase.client.Admin中移除了以下接口:

    方法

    描述

    compactMob(final TableName tableName)

    返回类型:void

    参数类型:TableName

    compactMob(final TableName tableName, final byte[] columnFamily)

    返回类型:void

    参数类型:TableName, byte[]

    majorCompactMob ( org.apache.hadoop.hbase.TableName tableName )

    返回类型:void

    参数类型:TableName

    majorCompactMob ( org.apache.hadoop.hbase.TableName tableName, byte[ ] columnFamily)

    返回类型:void

    参数类型:TableName, byte[]

    isAclEnable ( )

    返回类型:boolean

    isNamespaceAvailable ( String nameOfNamespace )

    返回类型:boolean

    multiSplit ( byte[ ] regionName, byte[ ][ ] splitKeys)

    返回类型:void

    multiSplitSync ( byte[ ] regionName, byte[ ][ ] splitKeys)

    返回类型:void

    表8 org.apache.hadoop.hbase.client.Put中移除了以下接口:

    方法

    描述

    add ( byte[ ] family, byte[ ] qualifier, byte[ ] value )

    返回类型:Put

    参数类型:byte[]

    add ( byte[ ] family, byte[ ] qualifier, long ts, byte[ ] value )

    返回类型:Put

    参数类型:byte[]

    add ( byte[ ] family, java.nio.ByteBuffer qualifier, long ts, java.nio.ByteBuffer value )

    返回类型:Put

    参数类型:byte[]

    setWriteToWAL ( boolean write )

    返回类型:Put

    参数类型:boolean

    表9 org.apache.hadoop.hbase.security.token.TokenUtil中移除了以下接口:

    方法

    描述

    obtainToken ( org.apache.hadoop.conf.Configuration conf )

    返回类型:Token<AuthenticationTokenIdentifier>

    参数类型:Configuration

    新增接口
    表10 org.apache.hadoop.hbase.client.Admin中新增了以下接口:

    方法

    描述

    decommissionRegionServers ( java.util.List<org.apache.hadoop.hbase.ServerName> servers, boolean offload)

    返回类型:void

    参数类型:List<ServerName>, boolean

    把当前list中的RegionServer标记为退服状态。当offload为true时,表示把该RegionServer的region分配给其他RegionServer;当offload为false时,表示不重新分配当前RegionServer上的region,同时不会再有新的region分配到该RegionServer上。

    listDecommissionedRegionServers ( )

    返回类型:List<ServerName>

    列出当前集群中处于退服状态的RegionServer。

    recommissionRegionServer ( org.apache.hadoop.hbase.ServerName server, java.util.List<byte[ ]> encodedRegionNames)

    返回类型:void

    参数类型:ServerName, byte[]

    对当前传入退服状态的RegionServer进行入服操作。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问