HBase Client支持的功能

更新时间:
复制为 MD 格式

使用表格存储时,表格存储会自动处理数据表分裂、Dump、Compact、Region Server等底层运维细节,您只需关注数据的读写操作。TablestoreHBase在数据模型和功能上相近,但Tablestore HBase Client与原生HBase API存在一些差异。本文介绍Tablestore HBase Client支持的功能和操作。

功能支持情况

CreateTable

表格存储不支持列族(ColumnFamily),所有数据属于同一个列族,因此表格存储TTL(time to live,生存时间)和max versions均在数据表级别配置,而非列族级别。

功能

支持情况

family max version

支持表级别max version,默认值为1

family min version

不支持

family TTL

支持表级别TTL

is/set ReadOnly

通过RAM用户支持

预分区

不支持

blockcache

不支持

blocksize

不支持

BloomFilter

不支持

column max version

不支持

cell TTL

不支持

控制参数

不支持

Put

功能

支持情况

一次写入多列数据

支持

指定一个时间戳

支持

不指定时间戳时,默认使用系统时间

支持

单行访问控制列表(ACL)

不支持

TTL

不支持

Cell Visibility

不支持

Tag

不支持

Get

表格存储保证数据强一致性。写入API收到HTTP 200状态码(OK)后,数据即已写入所有副本,可立即通过Get读取。

功能

支持情况

读取一行数据

支持

读取列族中的所有列

支持

读取特定列的数据

支持

读取特定时间戳的数据

支持

读取指定版本数的数据

支持

TimeRange

支持

ColumnFamilyTimeRange

不支持——仅支持单列族

RowOffsetPerColumnFamily

支持

MaxResultsPerColumnFamily

不支持——仅支持单列族

checkExistenceOnly

不支持

closestRowBefore

支持

attribute

不支持

cacheblock:true

支持

cacheblock:false

不支持

IsolationLevel:READ_COMMITTED

支持

IsolationLevel:READ_UNCOMMITTED

不支持

IsolationLevel:STRONG

支持

IsolationLevel:TIMELINE

不支持

Scan

表格存储保证数据强一致性。写入API收到HTTP 200状态码(OK)后,数据即已写入所有副本,可立即通过Scan读取。

功能

支持情况

指定startstop确定扫描范围

支持

不指定扫描范围时,默认全表扫描

支持

prefix filter

支持

读取逻辑与Get相同

支持

逆序读取

支持

caching

支持

batch

不支持

maxResultSize

不支持

small

不支持

cacheblock:true

支持

cacheblock:false

不支持

IsolationLevel:READ_COMMITTED

支持

IsolationLevel:READ_UNCOMMITTED

不支持

IsolationLevel:STRONG

支持

IsolationLevel:TIMELINE

不支持

allowPartialResults

不支持

Batch

功能

支持情况

Get

支持

Put

支持

Delete

支持

BatchCallback

不支持

Delete

功能

支持情况

删除整行

支持

删除特定列的所有版本

支持

删除特定列的特定版本

支持

删除特定列族

不支持——仅支持单列族

指定时间戳时,deleteColumn删除等于该时间戳的版本

支持

指定时间戳时,deleteFamilydeleteColumns删除小于等于该时间戳的所有版本

不支持

不指定时间戳时,deleteColumn删除最新版本

不支持

不指定时间戳时,deleteFamilydeleteColumns删除当前系统时间的版本

不支持

addDeleteMarker

不支持

checkAndXXX

功能

支持情况

CheckAndPut

支持

checkAndMutate

支持

CheckAndDelete

支持

检查列值是否满足条件,满足则删除

支持

不指定值时,使用默认值

支持

跨行操作(检查A行,执行B行)

不支持

exist

功能

支持情况

判断一行或多行是否存在(不返回内容)

支持

Filter

功能

支持情况

ColumnPaginationFilter

部分支持——不支持columnOffsetcount

ColumnRangeFilter

支持

FilterList

支持——FilterList中可组合和嵌套ColumnRangeFilter、ColumnValueFilterColumnPaginationFilter。

SingleColumnValueFilter

  • 支持:LongComparator、BinaryComparator、ByteArrayComparable

  • 不支持:RegexStringComparator、SubstringComparator、BitComparator

不支持的方法

作为云服务,表格存储会自动处理Compaction、Region管理、Replication等底层运维操作,因此这部分HBase方法不可用。各模块不支持的方法详见下表。

功能模块

不支持的方法说明

Table

不支持多列族,只支持单列族。

RowCell

  • 不支持设置ACL(访问控制列表)。

  • 不支持设置Cell Visibility。

  • 不支持设置Tag。

GET

表格存储仅支持单列族,因此不支持以下列族相关接口:

  • setColumnFamilyTimeRange(byte[] cf, long minStamp, long maxStamp)

  • setMaxResultsPerColumnFamily(int limit)

  • setRowOffsetPerColumnFamily(int offset)

SCAN

GET相同,由于不支持列族相关接口,以下优化类接口也不可用:

  • setBatch(int batch)

  • setMaxResultSize(long maxResultSize)

  • setAllowPartialResults(boolean allowPartialResults)

  • setLoadColumnFamiliesOnDemand(boolean value)

  • setSmall(boolean small)

Batch

不支持BatchCallback。

MutationsDeletions

  • 不支持删除特定列族。

  • 不支持删除最新时间戳的版本。

  • 不支持删除早于指定时间戳的所有版本。

IncrementAppend

不支持原子增减和原子Append。

Optimization

以下HBase参数涉及访问和存储优化,目前在内部统一管理,不对外开放修改:

  • blockcache:固定为true,不可修改。

  • blocksize:固定为64 KB,不可修改。

  • IsolationLevel:固定为READ_COMMITTED,不可修改。

  • Consistency:固定为STRONG,不可修改。

Admin

HBaseorg.apache.hadoop.hbase.client.Admin的大部分接口用于基础设施管理,这些操作在表格存储中不需要。

表格存储作为云服务,会自动执行运维和管控类操作。以下Admin操作不支持:

  • CreateTable

    表格存储仅支持单列族,创建表时只允许设置一个列族,列族支持MaxVersionsTimeToLive两个参数。

  • Maintenance task

    表格存储中,以下任务维护相关接口均自动处理:

    • abort(String why, Throwable e)

    • balancer()

    • enableCatalogJanitor(boolean enable)

    • getMasterInfoPort()

    • isCatalogJanitorEnabled()

    • rollWALWriter(ServerName serverName) -runCatalogScan()

    • setBalancerRunning(boolean on, boolean synchronous)

    • updateConfiguration(ServerName serverName)

    • updateConfiguration()

    • stopMaster()

    • shutdown()

  • Namespaces

    表格存储使用实例管理数据表。实例是表格存储的最小计费单元,可在表格存储控制台进行管理。以下Namespace方法不支持:

    • createNamespace(NamespaceDescriptor descriptor)

    • deleteNamespace(String name)

    • getNamespaceDescriptor(String name)

    • listNamespaceDescriptors()

    • listTableDescriptorsByNamespace(String name)

    • listTableNamesByNamespace(String name)

    • modifyNamespace(NamespaceDescriptor descriptor)

  • Region管理

    表格存储以分区作为数据存储和管理的基本单位,表格存储会根据数据量和访问情况自动对分区进行分裂或合并,因此不支持Region管理相关方法:

    • assign(byte[] regionName)

    • closeRegion(byte[] regionname, String serverName)

    • closeRegion(ServerName sn, HRegionInfo hri)

    • closeRegion(String regionname, String serverName)

    • closeRegionWithEncodedRegionName(String encodedRegionName, String serverName)

    • compactRegion(byte[] regionName)

    • compactRegion(byte[] regionName, byte[] columnFamily)

    • compactRegionServer(ServerName sn, boolean major)

    • flushRegion(byte[] regionName)

    • getAlterStatus(byte[] tableName)

    • getAlterStatus(TableName tableName)

    • getCompactionStateForRegion(byte[] regionName)

    • getOnlineRegions(ServerName sn)

    • majorCompactRegion(byte[] regionName)

    • majorCompactRegion(byte[] regionName, byte[] columnFamily)

    • mergeRegions(byte[] encodedNameOfRegionA, byte[] encodedNameOfRegionB, boolean forcible)

    • move(byte[] encodedRegionName, byte[] destServerName)

    • offline(byte[] regionName)

    • splitRegion(byte[] regionName)

    • splitRegion(byte[] regionName, byte[] splitPoint)

    • stopRegionServer(String hostnamePort)

    • unassign(byte[] regionName, boolean force)

Snapshots

表格存储不支持Snapshots及相关方法。

Replication

表格存储不支持Replication及相关方法。

Table管理

表格存储会自动对表下的分区进行分裂、合并和Compact,以下Table管理方法不支持:

  • getTableDescriptor(TableName tableName)

  • compact(TableName tableName)

  • compact(TableName tableName, byte[] columnFamily)

  • flush(TableName tableName)

  • getCompactionState(TableName tableName)

  • majorCompact(TableName tableName)

  • majorCompact(TableName tableName, byte[] columnFamily)

  • modifyTable(TableName tableName, HTableDescriptor htd)

  • split(TableName tableName)

  • split(TableName tableName, byte[] splitPoint)

Coprocessors

表格存储不支持协处理器,以下方法不可用:

  • coprocessorService()

  • coprocessorService(ServerName serverName)

  • getMasterCoprocessors()

Distributed procedures

表格存储不支持Distributed procedures,以下方法不可用:

  • execProcedure(String signature, String instance, Map props)

  • execProcedureWithRet(String signature, String instance, Map props)

  • isProcedureFinished(String signature, String instance, Map props)

限制项

表格存储作为云服务,为保证整体性能最优,对部分参数设置了固定值且不支持修改。具体限制项请参见使用限制