使用Raft-RocksDB-Tablestore作为存储后端

更新时间:2025-03-10 08:59:00

JindoFSEMR-3.27.0及之后版本中支持使用Raft-RocksDB-OTS作为Jindo元数据服务(Namespace Service)的存储。1EMR JindoFS集群创建3Master节点组成1Raft实例,实例的每个Peer节点使用本地RocksDB存储元数据信息。

前提条件

背景信息

RocksDB通过Raft协议实现3个节点之间的复制。集群可以绑定1Tablestore(OTS)实例,作为Jindo的元数据服务的额外存储介质,本地的元数据信息会实时异步地同步到用户的Tablestore实例上。

元数据服务-多机Raft-RocksDB-Tablestore+HA如下图所示。Raft + RocksDB + Tablestore

配置本地raft后端

  1. 新建EMR集群后,暂停SmartData所有服务。

    1. 登录阿里云E-MapReduce控制台

    2. 在顶部菜单栏处,根据实际情况选择地域和资源组

    3. 单击上方的集群管理页签。

    4. 集群管理页面,单击相应集群所在行的详情

    5. 在左侧导航栏,单击集群服务 > SmartData

    6. 单击右上角的操作 > 停止 All Components

  2. 根据使用需求,添加需要的namespace。

  3. 进入SmartData服务的bigboot页签。

    1. 在左侧导航栏单击集群服务 > SmartData

    2. 单击配置页签。

    3. 服务配置区域,单击bigboot页签。

  4. SmartData服务的bigboot页签,设置以下参数。

    参数

    描述

    示例

    参数

    描述

    示例

    namespace.backend.type

    设置namespace后端存储类型,支持:

    • rocksdb

    • ots

    • raft

    默认为rocksdb。

    raft

    namespace.backend.raft.initial-conf

    部署raft实例的3Master地址(固定值)。

    emr-header-1:8103:0,emr-header-2:8103:0,emr-header-3:8103:0

    jfs.namespace.server.rpc-address

    Client端访问raft实例的3Master地址(固定值)

    emr-header-1:8101,emr-header-2:8101,emr-header-3:8101

    说明

    如果不需要使用OTS远端存储,直接执行步骤6步骤7;如果需要使用OTS远端存储,请执行步骤5~步骤7

  5. 可选:配置远端OTS异步存储。

    SmartData服务的bigboot页签,设置以下参数。

    参数

    参数说明

    示例

    参数

    参数说明

    示例

    namespace.ots.instance

    Tablestore实例名称。

    emr-jfs

    namespace.ots.accessKey

    Tablestore实例的AccessKey ID。

    kkkkkk

    namespace.ots.accessSecret

    Tablestore实例的AccessKey Secret。

    XXXXXX

    namespace.ots.endpoint

    Tablestore实例的Endpoint地址,通常EMR集群,推荐使用VPC地址。

    http://emr-jfs.cn-hangzhou.vpc.tablestore.aliyuncs.com

    namespace.backend.raft.async.ots.enabled

    是否开启OTS异步上传,包括:

    • true

    • false

    当设置为true时,需要在SmartData服务完成初始化前,开启OTS异步上传功能。

    说明

    如果SmartData服务已完成初始化,则不能再开启该功能。因为OTS的数据已经落后于本地RocksDB的数据。

    true

  6. 保存配置。

    1. 单击右上角的保存

    2. 确认修改对话框中,输入执行原因,开启自动更新配置

    3. 单击确定

  7. 单击右上角的操作 > 启动All Components

Tablestore恢复元数据信息

如果您在原始集群开启了远端Tablestore异步存储,则Tablestore上会有1份完整的JindoFS元数据的副本。您可以在停止或释放原始集群后,在新创建的集群上恢复原先的元数据,从而继续访问之前保存的文件。

  1. 可选:准备工作。

    1. 可选:统计原始集群的元数据信息(文件和文件夹数量)。

      [hadoop@emr-header-1 ~]$ hadoop fs -count jfs://test/
              1596      1482809                 25 jfs://test/
          (文件夹个数) (文件个数)
    2. 停止原始集群的作业,等待30~120秒左右,等待原始集群的数据已经完全同步到Tablestore。执行以下命令查看状态。如果LEADER节点显示_synced=1,则表示Tablestore为最新数据,同步完成。

      jindo jfs -metaStatus -detail

      查看状态

    3. 停止或释放原始集群,确保没有其它集群正在访问当前的Tablestore实例。

  2. 创建新集群。

    新建与Tablestore实例相同RegionEMR集群,暂停SmartData所有服务。详情请参见配置本地raft后端中的步骤1

  3. 初始化配置。

    SmartData服务的bigboot页签,设置以下参数。

    参数

    描述

    示例

    参数

    描述

    示例

    namespace.backend.raft.async.ots.enabled

    是否开启OTS异步上传,包括:

    • true

    • false

    false

    namespace.backend.raft.recovery.mode

    是否开启从OTS恢复元数据,包括:

    • true

    • false

    true

  4. 保存配置。

    1. 单击右上角的保存

    2. 确认修改对话框中,输入执行原因,开启自动更新配置

    3. 单击确定

  5. 单击右上角的操作 > 启动 All Components

  6. 新集群的SmartData服务启动后,自动从OTS恢复元数据到本地Raft-RocksDB上,可以通过以下命令查看恢复进度。

    jindo jfs -metaStatus -detail

    如图所示,LEADER节点的stateFINISH表示恢复完成。查看状态

  7. 可选:执行以下操作,可以比较一下文件数量与原始集群是否一致。

    此时的集群为恢复模式,也是只读模式。

    # 对比文件数量一致
    [hadoop@emr-header-1 ~]$ hadoop fs -count jfs://test/
            1596      1482809                 25 jfs://test/
    
    # 文件可正常读取(cat、get命令)
    [hadoop@emr-header-1 ~]$ hadoop fs -cat jfs://test/testfile
    this is a test file
    # 查看目录
    [hadoop@emr-header-1 ~]$ hadoop fs -ls jfs://test/
    Found 3 items
    drwxrwxr-x   - root   root            0 2020-03-25 14:54 jfs://test/emr-header-1.cluster-50087
    -rw-r-----   1 hadoop hadoop          5 2020-03-25 14:50 jfs://test/haha-12096RANDOM.txt
    -rw-r-----   1 hadoop hadoop         20 2020-03-25 15:07 jfs://test/testfile
    
    # 只读状态,不可修改文件
    [hadoop@emr-header-1 ~]$ hadoop fs -rm jfs://test/testfile
    java.io.IOException: ErrorCode : 25021 , ErrorMsg: Namespace is under recovery mode, and is read-only.
  8. 修改配置,将集群设置为正常模式,开启OTS异步上传功能。

    SmartData服务的bigboot页签,设置以下参数。

    参数

    描述

    示例

    参数

    描述

    示例

    namespace.backend.raft.async.ots.enabled

    是否开启OTS异步上传,包括:

    • true

    • false

    true

    namespace.backend.raft.recovery.mode

    是否开启从OTS恢复元数据,包括:

    • true

    • false

    false

  9. 重启集群。

    1. 单击上方的集群管理页签。

    2. 集群管理页面,单击相应集群所在行的更多 > 重启

  • 本页导读 (1)
  • 前提条件
  • 背景信息
  • 配置本地raft后端
  • 从Tablestore恢复元数据信息
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等