RM新时代足球交易平台

18600329666

咨詢技術專家

掃一掃
與技術專家在線溝通

Menu
HBASE使用指南RowKey定義,數(shù)據(jù)在客戶端的組裝
HBASE使用指南,RowKey定義,數(shù)據(jù)在客戶端的組裝,數(shù)據(jù)路由處理,HBASE作為hadoop大數(shù)據(jù)平臺數(shù)據(jù)存儲引擎其數(shù)據(jù)存儲分發(fā),數(shù)據(jù)結構比較復雜,本文將詳細介紹HBASE的詳細使用

一、示例數(shù)據(jù)
  1. HBase可選接口介紹

  2. 表服務接口介紹

  3. 介紹幾種寫數(shù)據(jù)的模式

  4. 如何構建Put對象(包含RowKey定義以及列定義)

  5. 數(shù)據(jù)路由

  6. Client側的分組打包

  7. Client發(fā)RPC請求到RegionServer

  8. 安全訪問控制

  9. RegionServer側處理:Region分發(fā)

  10. Region內部處理:寫WAL

  11. Region內部處理:寫MemStore

    二、HABSE基礎內容
    HBase項目概況(搜索引擎熱度/社區(qū)開發(fā)活躍度)

    HBase數(shù)據(jù)模型(RowKey,稀疏矩陣,Region,Column Family,KeyValue)
    基于HBase的數(shù)據(jù)模型,介紹了HBase的適合場景(以實體/事件為中心的簡單結構的數(shù)據(jù))
    介紹了HBase與HDFS的關系,集群關鍵角色以及部署建議
    寫數(shù)據(jù)前的準備工作:建立連接,建表
    三、HBASE實例數(shù)據(jù)

    (上篇文章已經(jīng)提及,這里再復制一次的原因,一是為了讓下文內容更容易理解,二是個別字段名稱做了調整)

    給出一份我們日常都可以接觸到的數(shù)據(jù)樣例,先簡單給出示例數(shù)據(jù)的字段定義:

    一條數(shù)據(jù)的HBase之旅,簡明HBase入門教程-Write全流程

    示例數(shù)據(jù)字段定義

    本文力求簡潔,僅給出了最簡單的幾個字段定義。如下是”虛構”的樣例數(shù)據(jù):

    一條數(shù)據(jù)的HBase之旅,簡明HBase入門教程-Write全流程

    示例數(shù)據(jù)

    在本文大部分內容中所涉及的一條數(shù)據(jù),是上面加粗的最后一行"Mobile1"為"13400006666"這行記錄。在下面的流程圖中,我們使用下面這樣一個紅色小圖標來表示該數(shù)據(jù)所在的位置:

    一條數(shù)據(jù)的HBase之旅,簡明HBase入門教程-Write全流程

    數(shù)據(jù)位置標記

    可選接口

    HBase中提供了如下幾種主要的接口:

    • Java Client API

      HBase的基礎API,應用最為廣泛。

    • HBase Shell

      基于Shell的命令行操作接口,基于Java Client API實現(xiàn)。

    • Restful API

      Rest Server側基于Java Client API實現(xiàn)。

    • Thrift API

      Thrift Server側基于Java Client API實現(xiàn)。

    • MapReduce Based Batch Manipulation API

      基于MapReduce的批量數(shù)據(jù)讀寫API。

    除了上述主要的API,HBase還提供了基于Spark的批量操作接口以及C++ Client接口,但這兩個特性都被規(guī)劃在了3.0版本中,當前尚在開發(fā)中。

    無論是HBase Shell/Restful API還是Thrift API,都是基于Java Client API實現(xiàn)的。因此,接下來關于流程的介紹,都是基于Java Client API的調用流程展開的。

    關于表服務接口的抽象

    同步連接與異步連接,分別提供了不同的表服務接口抽象:

    • Table 同步連接中的表服務接口定義

    • AsyncTable 異步連接中的表服務接口定義

    異步連接AsyncConnection獲取AsyncTable實例的接口默認實現(xiàn):

    一條數(shù)據(jù)的HBase之旅,簡明HBase入門教程-Write全流程

    Create AsyncTable

    同步連接ClusterConnection的實現(xiàn)類ConnectionImplementation中獲取Table實例的接口實現(xiàn):

    一條數(shù)據(jù)的HBase之旅,簡明HBase入門教程-Write全流程

    Create Table

    寫數(shù)據(jù)的幾種方式

    • Single Put

      單條記錄單條記錄的隨機put操作。Single Put所對應的接口定義如下:

      在AsyncTable接口中的定義:

      CompletableFuture put(Put put);

      在Table接口中的定義:

      void put(Put put) throws IOException;
    • Batch Put

      匯聚了幾十條甚至是幾百上千條記錄之后的小批次隨機put操作。

      Batch Put只是本文對該類型操作的稱法,實際的接口名稱如下所示:

      在AsyncTable接口中的定義:

      List> put(List puts);

      在Table接口中的定義:

      void put(List puts) throws IOException;
    • Bulkload

      基于MapReduce API提供的數(shù)據(jù)批量導入能力,導入數(shù)據(jù)量通常在GB級別以上,Bulkload能夠繞過Java Client API直接生成HBase的底層數(shù)據(jù)文件(HFile)。


RM新时代足球交易平台