HBase rest

来源:互联网 发布:四院平差软件 编辑:程序博客网 时间:2024/05/16 11:48

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 OperationsREST/HTTP Equivalents
CREATEPUTREADGETUPDATEPOST (update) or PUT (replace)DELETEDELETE

        

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











0 0