HBase rest

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











原文地址:https://www.cnblogs.com/cl1024cl/p/6205118.html