HBase Rest 是建立在HBase java 客户端基础之上的,提供的web 服务。它存在的目的是给开发者一个更多的选择。
1.启动rest 服务
(1)hbase rest start
用默认的方式启动rest服务,端口是8080。
(2)hbase rest start 8585
这种方式以端口8585方式启动。
(3)以daemon方式启动
hbase-daemon.sh start rest -p 8585
停止rest服务
hbase-daemon.sh stop rest
2.url
(1)查看表
http://hadoop0:8585/
(2)查看表的schema
http://hadoop0:8585/test/
(3)HBase操作对于的HTTP请求方式
Database Operations | REST/HTTP Equivalents |
CREATE | PUT |
READ | GET |
UPDATE | POST (update) or PUT (replace) |
DELETE | DELETE |
Addressing for cell or row query (GET)
path := '/' <table>
'/' <row>
( '/' ( <column> ( ':' <qualifier> )?
( ',' <column> ( ':' <qualifier> )? )+ )?
( '/' ( <start-timestamp> ',' )? <end-timestamp> )? )?
query := ( '?' 'v' '=' <num-versions> )?
Addressing for single value store (PUT)
Address with table, row, column (and optional qualifier), and optional timestamp.
path := '/' <table> '/' <row> '/' <column> ( ':' <qualifier> )?
( '/' <timestamp> )?
Addressing for multiple (batched) value store (PUT)
path := '/' <table> '/' <false-row-key>
Addressing for row, column, or cell DELETE
path := '/' <table>
'/' <row>
( '/' <column> ( ':' <qualifier> )?
( '/' <timestamp> )? )?
Addressing for table creation or schema update (PUT or POST), schema query(GET), or delete (DELETE)
path := '/' <table> / 'schema'
Addressing for scanner creation (POST)
path := '/' <table> '/' 'scanner'
Addressing for scanner next item (GET)
path := '/' <table> '/' 'scanner' '/' <scanner-id>
Addressing for scanner deletion (DELETE)
path := '/' <table> '/' '%scanner' '/' <scanner-id>
(4) 查询版本信息
http://hadoop0:8585/version
(5)查询集群信息
http://hadoop0:8585/version/cluster
(6)查询集群状态http://hadoop0:8585/status/cluster
(7)创建和更新表的schema
put /table/shcema
Post /table/schema
(8)查询表元数据
get /table/resions
(9)删除表
delete /table/schema
(10)cell 查询GET /<table>/<row>/
<column> ( : <qualifier> )?
( / <timestamp> )?(11)scan
put/post /table/scanner
返回的xml 结构<schema targetNamespace="StargateSchema" elementFormDefault="qualified"
xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="StargateSchema"> <element name="CellSet" type="tns:CellSet"></element> <complexType name="CellSet">
<sequence>
<element name="row" type="tns:Row" maxOccurs="unbounded" minOccurs="1"></element>
</sequence>
</complexType> <complexType name="Row">
<sequence>
<element name="key" type="base64Binary"></element>
<element name="cell" type="tns:Cell" maxOccurs="unbounded" minOccurs="1"></element>
</sequence>
</complexType> <complexType name="Cell">
<sequence>
<element name="value" maxOccurs="1" minOccurs="1"><simpleType><restriction base="base64Binary"></restriction></simpleType></element>
</sequence>
<attribute name="column" type="base64Binary" />
<attribute name="timestamp" type="int" />
</complexType> <element name="Version" type="tns:Version"></element> <complexType name="Version">
<attribute name="Stargate" type="string"></attribute>
<attribute name="JVM" type="string"></attribute>
<attribute name="OS" type="string"></attribute>
<attribute name="Server" type="string"></attribute>
<attribute name="Jersey" type="string"></attribute>
</complexType> <element name="TableList" type="tns:TableList"></element> <complexType name="TableList">
<sequence>
<element name="table" type="tns:Table" maxOccurs="unbounded" minOccurs="1"></element>
</sequence>
</complexType> <complexType name="Table">
<sequence>
<element name="name" type="string"></element>
</sequence>
</complexType> <element name="TableInfo" type="tns:TableInfo"></element> <complexType name="TableInfo">
<sequence>
<element name="region" type="tns:TableRegion" maxOccurs="unbounded" minOccurs="1"></element>
</sequence>
<attribute name="name" type="string"></attribute>
</complexType> <complexType name="TableRegion">
<attribute name="name" type="string"></attribute>
<attribute name="id" type="int"></attribute>
<attribute name="startKey" type="base64Binary"></attribute>
<attribute name="endKey" type="base64Binary"></attribute>
<attribute name="location" type="string"></attribute>
</complexType> <element name="TableSchema" type="tns:TableSchema"></element> <complexType name="TableSchema">
<sequence>
<element name="column" type="tns:ColumnSchema" maxOccurs="unbounded" minOccurs="1"></element>
</sequence>
<attribute name="name" type="string"></attribute>
<anyAttribute></anyAttribute>
</complexType> <complexType name="ColumnSchema">
<attribute name="name" type="string"></attribute>
<anyAttribute></anyAttribute>
</complexType> <element name="Scanner" type="tns:Scanner"></element> <complexType name="Scanner">
<attribute name="startRow" type="base64Binary"></attribute>
<attribute name="endRow" type="base64Binary"></attribute>
<attribute name="columns" type="base64Binary"></attribute>
<attribute name="batch" type="int"></attribute>
<attribute name="startTime" type="int"></attribute>
<attribute name="endTime" type="int"></attribute>
</complexType> <element name="StorageClusterVersion"
type="tns:StorageClusterVersion">
</element> <complexType name="StorageClusterVersion">
<attribute name="version" type="string"></attribute>
</complexType> <element name="StorageClusterStatus"
type="tns:StorageClusterStatus">
</element> <complexType name="StorageClusterStatus">
<sequence>
<element name="liveNode" type="tns:Node"
maxOccurs="unbounded" minOccurs="0">
</element>
<element name="deadNode" type="string" maxOccurs="unbounded"
minOccurs="0">
</element>
</sequence>
<attribute name="regions" type="int"></attribute>
<attribute name="requests" type="int"></attribute>
<attribute name="averageLoad" type="float"></attribute>
</complexType> <complexType name="Node">
<sequence>
<element name="region" type="tns:Region" maxOccurs="unbounded" minOccurs="0"></element>
</sequence>
<attribute name="name" type="string"></attribute>
<attribute name="startCode" type="int"></attribute>
<attribute name="requests" type="int"></attribute>
<attribute name="heapSizeMB" type="int"></attribute>
<attribute name="maxHeapSizeMB" type="int"></attribute>
</complexType> <complexType name="Region">
<attribute name="name" type="base64Binary"></attribute>
<attribute name="stores" type="int"></attribute>
<attribute name="storefiles" type="int"></attribute>
<attribute name="storefileSizeMB" type="int"></attribute>
<attribute name="memstoreSizeMB" type="int"></attribute>
<attribute name="storefileIndexSizeMB" type="int"></attribute>
</complexType>返回的protobuf schema
message Version {
optional string stargateVersion = 1;
optional string jvmVersion = 2;
optional string osVersion = 3;
optional string serverVersion = 4;
optional string jerseyVersion = 5;
} message StorageClusterStatus {
message Region {
required bytes name = 1;
optional int32 stores = 2;
optional int32 storefiles = 3;
optional int32 storefileSizeMB = 4;
optional int32 memstoreSizeMB = 5;
optional int32 storefileIndexSizeMB = 6;
}
message Node {
required string name = 1; // name:port
optional int64 startCode = 2;
optional int32 requests = 3;
optional int32 heapSizeMB = 4;
optional int32 maxHeapSizeMB = 5;
repeated Region regions = 6;
}
// node status
repeated Node liveNodes = 1;
repeated string deadNodes = 2;
// summary statistics
optional int32 regions = 3;
optional int32 requests = 4;
optional double averageLoad = 5;
} message TableList {
repeated string name = 1;
} message TableInfo {
required string name = 1;
message Region {
required string name = 1;
optional bytes startKey = 2;
optional bytes endKey = 3;
optional int64 id = 4;
optional string location = 5;
}
repeated Region regions = 2;
} message TableSchema {
optional string name = 1;
message Attribute {
required string name = 1;
required string value = 2;
}
repeated Attribute attrs = 2;
repeated ColumnSchema columns = 3;
// optional helpful encodings of commonly used attributes
optional bool inMemory = 4;
optional bool readOnly = 5;
} message ColumnSchema {
optional string name = 1;
message Attribute {
required string name = 1;
required string value = 2;
}
repeated Attribute attrs = 2;
// optional helpful encodings of commonly used attributes
optional int32 ttl = 3;
optional int32 maxVersions = 4;
optional string compression = 5;
} message Cell {
optional bytes row = 1; // unused if Cell is in a CellSet
optional bytes column = 2;
optional int64 timestamp = 3;
optional bytes data = 4;
} message CellSet {
message Row {
required bytes key = 1;
repeated Cell values = 2;
}
repeated Row rows = 1;
} message Scanner {
optional bytes startRow = 1;
optional bytes endRow = 2;
repeated bytes columns = 3;
optional int32 batch = 4;
optional int64 startTime = 5;
optional int64 endTime = 6;
}