使用OSS-HDFS作为HBase的底层存储

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上存储的数据。