
# HBase Java API接口介绍
HBase采用的接口与Apache HBase保持一致，请参见<https://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接口，参见<https://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接口
  表1org.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指标。                                                  |
     
  ![](https://support.huaweicloud.com/devg-mrs/public_sys-resources/note_3.0-zh-cn.png)
  所有方法返回一个Map，其中键是"RegionServer名称(IP/Host)"和string类型的值，包含了所有指标，其格式是'Metric Name'='Metric Value' \[, 'Metric Name'= 'Metric Value'\]\*
  举例：SizeOfHFileRefsQueue=0, AgeOfLastShippedOp=0
  表2org.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 返回：在一次请求中不能复制数据的次数。              |
     
  表3org.apache.hadoop.hbase.replication.ReplicationLoadSink 
  | **方法**                         | **描述**                                                                               |
  |:---|:---|
  | getAgeOfLastAppliedOp()        | 返回类型：long 返回：上次成功的应用wal编辑的持续毫秒数 |
  | getTimeStampsOfLastAppliedOp() | 返回类型：long 返回：上次成功的应用wal编辑的时间戳  |
  | getAppliedBatches()            | 返回类型：long 返回：应用的数据总批数          |
  | getAppliedOps()                | 返回类型：long 返回：应用数据ops的总数        |
  | getAppliedHFiles()             | 返回类型：long 返回：应用的HFile总数        |
     
  ![](https://support.huaweicloud.com/devg-mrs/public_sys-resources/note_3.0-zh-cn.png)
  Replication Admin新的接口，从HMaster获取指标值。每个Region Server在每一个心跳周期（默认是3秒）上报状态给HMaster。所以API通过Region Server在最后一个心跳时上报最新的指标值。
  如果需要当前最新的指标值，使用由Region Server提供的JMX接口。
  

- **1.3.1（MRS 1.9.2）版本的接口变更**
  - 新增HIndex API
  
  
  表4org.apache.hadoop.hbase.hindex.client.HIndexAdmin 
  | **方法**                                                            | **描述**                                                                                                                                                                                                                  |
  |:---|:---|
  | addIndices(TableName tablename,TableIndices tableIndices)         | 参数：TableName 用户想要添加指定索引的表的名称。 参数：TableIndices 要添加到表中的表索引 返回类型：void                            |
  | 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 \>\> 返回：返回二级索引列表，第一个元素是索引规范，第二个元素是该索引的当前状态。 |
     
  
 
