本文介绍如何使用JindoFS作为HBase的底层存储。

概述

HBase是Hadoop生态中的实时数据库,有很高的写入性能,E-MapReduce HBase(E-MapReduce 3.22.0及以上版本) 支持使用 JindoFS/OSS作为底层存储,相对于HDFS存储来说,使用更加灵活。

JindoFS配置

已创建名为emr-jfs的命名空间,示例如下:

  • jfs.namespaces=emr-jfs
  • jfs.namespaces.emr-jfs.uri=oss://oss-bucket/oss-dir
  • jfs.namespaces.emr-jfs.mode=block

指定HBase的存储路径

由于JindoFS和OSS在E-MapReduce 3.22.0版本暂不支持Sync操作,需要把hbase-site的hbase.rootdir指向JindoFS/OSS地址,hbase.wal.dir指向本地的undefinedHDFS地址,通过本地HDFS集群存储WAL文件。如果要释放集群,需要先Disable table,确保WAL文件已经完全更新到HFile。

配置文件 参数 参数说明 示例
hbase-site hbase.rootdir 指定HBase的ROOT存储目录到JindoFS jfs://emr-jfs/hbase-root-dir
hbase.wal.dir 指定HBase的WAL存储目录到本地HDFS集群 hdfs://emr-cluster/hbase

创建集群

添加软件自定义配置,如下图所示:

1

使用JindoFS

以JindoFS作为HBase后端为例,替换oss_bucket及对应路径,自定义配置如下:

[   
  {
       "ServiceName":"BIGBOOT",
       "FileName":"bigboot",
       "ConfigKey":"jfs.namespaces",
       "ConfigValue":"emr-jfs"
  },
  {
       "ServiceName":"BIGBOOT",
       "FileName":"bigboot",
       "ConfigKey":"jfs.namespaces.emr-jfs.uri",
       "ConfigValue":"oss://oss-bucket/jindoFS"
  },
  {
       "ServiceName":"BIGBOOT",
       "FileName":"bigboot",
       "ConfigKey":"jfs.namespaces.emr-jfs.mode",
       "ConfigValue":"block"
  },
  {
       "ServiceName":"HBASE",
       "FileName":"hbase-site",
       "ConfigKey":"hbase.rootdir",
       "ConfigValue":"jfs://emr-jfs/hbase-root-dir"
  },
  {
       "ServiceName":"HBASE",
       "FileName":"hbase-site",
       "ConfigKey":"hbase.wal.dir",
       "ConfigValue":"hdfs://emr-cluster/hbase"
  }
]