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 schemamessage 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; }