E-MapReduce控制台的DataServing类型的集群支持存储数据在OSS-HDFS上(WAL数据存储在HDFS上)。本文为您介绍如何使用OSS-HDFS作为HBase的底层存储。
背景信息
OSS-HDFS服务是一款云原生数据湖存储产品,基于统一的元数据管理能力,在完全兼容HDFS文件系统接口的同时,提供充分的POSIX能力,能更好的满足大数据和AI领域丰富多样的数据湖计算场景,详情请参见什么是OSS-HDFS服务。
HBase on OSS-HDFS的架构如下图所示。
使用限制
仅EMR-3.42及后续版本或EMR-5.8.0及后续版本的DataServing类型的集群支持该功能。
操作步骤
开通并授权访问OSS-HDFS服务,具体操作请参见开通并授权访问OSS-HDFS服务。
获取OSS-HDFS服务域名。
在OSS管理控制台的概览页面,复制OSS-HDFS服务的域名,以便后续创建EMR-HBase时使用该域名作为hbase.rootdir路径。
使用OSS-HDFS。
创建DataServing集群,详情请参见创建集群。
创建集群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的根目录。
创建HBase表。
登录DataServing集群,详情请参见登录集群。
执行以下命令,进入HBase Shell。
hbase shell
执行以下命令,创建一个名称为bar,列族名为f的测试表。
create 'bar','f'
创建完成后,您可以通过
list
命令查看下。例如,返回如下信息。
TABLE bar 1 row(s) Took 0.0138 seconds
退出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
可选:销毁并恢复集群。
EMR HBase的数据存储到OSS-HDFS后,可以销毁旧集群,并从OSS-HDFS目录拉起新的集群。
重要新创建集群和销毁集群的HBase版本必须一致,否则拉起的新集群可能存在无法预估的兼容性等问题,导致集群不可用。
同一个OSS-HDFS数据目录不能为多个HBase集群同时使用,否则如果出现同时写,可能会导致HBase元数据或数据不一致,出现集群不可用的情况。
登录DataServing集群,详情请参见登录集群。
执行以下命令,进入HBase Shell。
hbase shell
执行以下命令,通过flush操作来确保内存中所有表的数据都已经刷新到HFile。
flush 'bar'
执行以下命令,禁用相关的表,避免写入新的数据。
disable 'bar'
重新创建一个和旧集群HBase版本相同的集群,并指定和旧集群相同的OSS-HDFS目录作为新集群的数据存储目录。
创建成功后,即通过OSS-HDFS恢复了一个新HBase集群,您可以继续使用OSS-HDFS上存储的数据。