亚洲精品美女久久久久久久-四川少妇搡bbw搡bbbb-精品免费国产一区二区三区四区,差差差很疼30分钟的视频,蜜桃成人无码区免费视频网站,免费人成视频x8x8

18600329666

咨詢技術專家

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

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

一、示例數據
  1. HBase可選接口介紹

  2. 表服務接口介紹

  3. 介紹幾種寫數據的模式

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

  5. 數據路由

  6. Client側的分組打包

  7. Client發RPC請求到RegionServer

  8. 安全訪問控制

  9. RegionServer側處理:Region分發

  10. Region內部處理:寫WAL

  11. Region內部處理:寫MemStore

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

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

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

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

    一條數據的HBase之旅,簡明HBase入門教程-Write全流程

    示例數據字段定義

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

    一條數據的HBase之旅,簡明HBase入門教程-Write全流程

    示例數據

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

    一條數據的HBase之旅,簡明HBase入門教程-Write全流程

    數據位置標記

    可選接口

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

    • Java Client API

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

    • HBase Shell

      基于Shell的命令行操作接口,基于Java Client API實現。

    • Restful API

      Rest Server側基于Java Client API實現。

    • Thrift API

      Thrift Server側基于Java Client API實現。

    • MapReduce Based Batch Manipulation API

      基于MapReduce的批量數據讀寫API。

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

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

    關于表服務接口的抽象

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

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

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

    異步連接AsyncConnection獲取AsyncTable實例的接口默認實現:

    一條數據的HBase之旅,簡明HBase入門教程-Write全流程

    Create AsyncTable

    同步連接ClusterConnection的實現類ConnectionImplementation中獲取Table實例的接口實現:

    一條數據的HBase之旅,簡明HBase入門教程-Write全流程

    Create Table

    寫數據的幾種方式

    • 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提供的數據批量導入能力,導入數據量通常在GB級別以上,Bulkload能夠繞過Java Client API直接生成HBase的底層數據文件(HFile)。