全部產品
Search
文件中心

E-MapReduce:使用OSS-HDFS作為HBase的底層儲存

更新時間:Jul 01, 2024

E-MapReduce控制台的DataServing類型的叢集支援儲存資料在OSS-HDFS上(WAL資料存放區在HDFS上)。本文為您介紹如何使用OSS-HDFS作為HBase的底層儲存。

背景資訊

OSS-HDFS服務是一款雲原生資料湖儲存產品,基於統一的中繼資料管理能力,在完全相容HDFS檔案系統介面的同時,提供充分的POSIX能力,能更好的滿足巨量資料和AI領域豐富多樣的資料湖計算情境,詳情請參見什麼是OSS-HDFS服務

HBase on OSS-HDFS的架構如下圖所示。HBase on OSS-HDFS

使用限制

僅EMR-3.42及後續版本或EMR-5.8.0及後續版本的DataServing類型的叢集支援該功能。

操作步驟

  1. 開通並授權訪問OSS-HDFS服務,具體操作請參見開通並授權訪問OSS-HDFS服務

  2. 擷取OSS-HDFS服務網域名稱。

    在OSS管理主控台的概覽頁面,複製OSS-HDFS服務的網域名稱,以便後續建立EMR-HBase時使用該網域名稱作為hbase.rootdir路徑。HDFS Endpoint

  3. 使用OSS-HDFS。

    1. 建立DataServing叢集,詳情請參見建立叢集

      HBase old建立叢集DataServing時:

      • 可選服務:除JINDODTA和PHOENIX服務外,其他服務必選。

      • HBase儲存模式:選擇OSS-HDFS

      • Root目錄:填寫一個開啟了HDFS服務的OSS Bucket。填寫格式為oss://${OSS-HDFS服務的網域名稱}/${dir}。例如,oss://test_bucket.cn-hangzhou.oss-dls.aliyuncs.com/hbase。

      說明

      需要替換的參數:

      • ${OSS-HDFS服務的網域名稱}:您在步驟2中擷取到的HDFS服務網域名稱。

      • ${dir}:HBase的根目錄。

    2. 建立HBase表。

      1. 登入DataServing叢集,詳情請參見登入叢集

      2. 執行以下命令,進入HBase Shell。

        hbase shell
      3. 執行以下命令,建立一個名稱為bar,列族名為f的測試表。

        create 'bar','f'

        建立完成後,您可以通過list命令查看下。

        例如,返回如下資訊。

        TABLE
        bar
        1 row(s)
        Took 0.0138 seconds
    3. 退出HBase Shell後,執行以下命令驗證表資料。

      命令格式如下。

      hadoop fs -ls oss://${OSS-HDFS服務的網域名稱}/{dir}

      例如,執行以下命令。

      hadoop fs -ls oss://test_bucket.cn-hangzhou.oss-dls.aliyuncs.com/hbase/data/default

      返回如下資訊時,表示對應的HBase表目錄已經在OSS-HDFS上建立。

      Found 1 items
      drwxrwxrwx   - hbase supergroup          0 2022-07-28 14:45 oss://test_bucket.cn-hangzhou.oss-dls.aliyuncs.com/hbase/data/default/bar
  4. 可選:銷毀並恢複叢集。

    EMR HBase的資料存放區到OSS-HDFS後,可以銷毀舊叢集,並從OSS-HDFS目錄拉起新的叢集。

    重要
    • 新建立叢集和銷毀叢集的HBase版本必須一致,否則拉起的新叢集可能存在無法預估的相容性等問題,導致叢集不可用。hbase version

    • 同一個OSS-HDFS資料目錄不能為多個HBase叢集同時使用,否則如果出現同時寫,可能會導致HBase中繼資料或資料不一致,出現叢集停用情況。

    1. 登入DataServing叢集,詳情請參見登入叢集

    2. 執行以下命令,進入HBase Shell。

      hbase shell
    3. 執行以下命令,通過flush操作來確保記憶體中所有表的資料都已經重新整理到HFile。

      flush 'bar'
    4. 執行以下命令,禁用相關的表,避免寫入新的資料。

      disable 'bar'
    5. 重新建立一個和舊叢集HBase版本相同的叢集,並指定和舊叢集相同的OSS-HDFS目錄作為新叢集的資料存放區目錄。

      HBase new

      建立成功後,即通過OSS-HDFS恢複了一個新HBase叢集,您可以繼續使用OSS-HDFS上儲存的資料。