备份和恢复 Ranger 架构

本页介绍了如何在 Managed Service for Apache Spark with Ranger 集群上备份和恢复 Ranger 架构。

准备工作

  1. 如果需要,创建存储桶。您必须有权限访问 Cloud Storage 存储桶,并使用该存储桶来存储和恢复 Ranger 架构。

    要创建存储桶,请按以下步骤操作:

    1. 在 Google Cloud 控制台中,前往 Cloud Storage 存储分区 页面。

      进入“存储分区”

    2. 点击 创建
    3. 创建存储桶 页面上,输入您的存储桶信息。要转到下一步 ,请点击继续
      1. 开始使用 部分中,执行以下操作:
        • 输入符合 存储桶命名要求的全局唯一的名称。
        • 如需添加 存储桶标签, 请展开 标签 部分 (), 点击 添加标签,并为标签指定 keyvalue
      2. 选择存储数据的位置 部分中,执行以下操作:
        1. 选择位置类型
        2. 位置类型下拉菜单中选择一个位置,用于永久存储存储桶的数据。
        3. 如需设置 跨存储桶复制,请选择 通过 Storage Transfer Service 添加跨存储桶复制 ,然后 按照以下步骤操作:

          设置跨存储桶复制

          1. 存储桶 菜单中,选择一个存储桶。
          2. 复制设置 部分中, 点击配置 以配置 复制作业的设置。

            系统会显示配置跨存储桶复制 窗格 显示。

            • 如需按对象名称前缀过滤要复制的对象, 请输入要用于包含或排除对象的前缀,然后点击 添加前缀
            • 如需为复制的对象设置存储类别, 请从存储类别菜单中选择一个存储类别。 如果您跳过此步骤,则复制的对象会默认使用 目标存储桶的存储类别。
            • 点击完成
      3. 选择存储数据的位置 部分中,执行以下操作:
        1. 为存储桶选择默认存储类别,或者选择Autoclass对存储桶数据进行自动存储类别管理。
        2. 如需启用 分层命名空间,请在 针对数据密集型工作负载优化存储 部分中,选择 在此存储桶上启用分层命名空间
      4. 选择如何控制对对象的访问权限 部分中,选择 存储桶是否强制执行禁止公开访问, 然后为存储桶对象选择访问权限控制方法
      5. 选择如何保护对象数据 部分中,执行以下操作:
        • 数据保护 下,选择您要为存储桶设置的任何选项。
          • 如需启用 软删除,请点击 软删除政策(用于数据恢复) 复选框, 然后指定您希望在删除对象后保留对象的天数。
          • 如需设置 对象版本控制,请点击 对象版本控制(用于版本控制) 复选框, 然后指定每个对象的最大版本数以及非当前版本过期的天数。
          • 如需对对象和存储分区启用保留政策,请点击保留(用于合规性) 复选框,然后执行以下操作:
            • 如需启用 对象保留锁定,请点击 启用对象保留 复选框。
            • 如需启用存储桶锁,请点击设置存储桶保留政策 复选框,然后为保留期限选择时间单位和时间长度。
        • 如需选择对象数据的加密方式,请展开 数据加密 部分 (),然后选择 数据加密 方法
    4. 点击创建

备份 Ranger 架构

  1. 使用 SSH 连接到包含 Ranger 架构的集群的 Managed Service for Apache Spark 主节点。在主节点上运行的 SSH 终端会话中运行本部分中的命令。

  2. 设置环境变量。

    BUCKET_NAME=bucket name \
      MYSQL_PASSWORD=MySQL password
      SCHEMA_FILE=schema filename
    

    替换以下内容:

    • MySQL password:您可以在集群的主节点上打开 /etc/mysql/my.cnf 来复制 MySQL 密码。

    • bucket name:用于存储 Ranger 架构的 Cloud Storage 存储桶名称。

    • schema filename:指定文件名,不含 .sql 文件扩展名。Ranger 架构会保存到主节点上的此文件中,然后保存到 Cloud Storage 中的 bucket name

  3. 停止 Hive 服务。

    sudo systemctl stop hive-metastore.service
    sudo systemctl stop hive-server2.service
    

  4. 防止对 Ranger 架构表的更改。

    mysql -u root -p${MYSQL_PASSWORD}
    REVOKE ALL PRIVILEGES ON ranger.* from 'rangeradmin'@'localhost';
    GRANT SELECT ON ranger.* TO 'rangeradmin'@'localhost';
    FLUSH PRIVILEGES;
    SHOW GRANTS FOR 'rangeradmin'@'localhost';
    exit;
    
  5. 将 Ranger 架构保存到 .sql 文件中。

    mysqldump -u root -p${MYSQL_PASSWORD} ranger > ${SCHEMA_FILE}.sql
    
  6. 重置 Ranger 权限。

    mysql -u root -p${MYSQL_PASSWORD}
    REVOKE SELECT ON ranger.* from 'rangeradmin'@'localhost';
    GRANT ALL PRIVILEGES ON ranger.* to 'rangeradmin'@'localhost';
    FLUSH PRIVILEGES;
    SHOW GRANTS FOR 'rangeradmin'@'localhost';
    exit;
    
  7. 重启 Hive 和 Ranger 服务。

    sudo systemctl start hive-metastore.service
      sudo systemctl start hive-server2.service
      sudo systemctl restart ranger-admin.service
      sudo systemctl restart ranger-usersync.service
    
  8. 将 Ranger 架构复制到 Cloud Storage。

    gcloud storage cp ${SCHEMA_FILE}.sql gs://${BUCKET_NAME}
    

恢复 Ranger 架构

  1. 使用 SSH 连接到您要恢复集群架构的集群的 Managed Service for Apache Spark 主节点。在主节点上运行的 SSH 终端会话中运行本部分中的命令。

  2. 设置环境变量。

    BUCKET_NAME=bucket name \
      MYSQL_PASSWORD=MySQL password
      SCHEMA_FILE=schema filename
    

    替换以下内容:

    • MySQL password:您可以在集群的主节点上打开 /etc/mysql/my.cnf 来复制 MySQL 密码。

    • bucket name:包含已保存 Ranger 架构的 Cloud Storage 存储桶名称。

    • schema filename:Ranger 架构文件名(不带 .sql 文件扩展名),保存在 Cloud Storage 中的 bucket name 中。

  3. 停止 Hive 服务。

    sudo systemctl stop hive-metastore.service
    sudo systemctl stop hive-server2.service
    

  4. 防止对 Ranger 架构表的更改。

    mysql -u root -p${MYSQL_PASSWORD}
    REVOKE ALL PRIVILEGES ON ranger.* from 'rangeradmin'@'localhost';
    GRANT SELECT ON ranger.* TO 'rangeradmin'@'localhost';
    FLUSH PRIVILEGES;
    SHOW GRANTS FOR 'rangeradmin'@'localhost';
    exit;
    
  5. 将 Cloud Storage 中的 Ranger 架构 .sql 文件复制到集群的主节点。

    gcloud storage cp ${BUCKET_NAME}/${SCHEMA_FILE}.sql .
    
  6. 恢复 Ranger 架构。此步骤会覆盖现有 Ranger 架构的内容。

    mysqldump -u root -p${MYSQL_PASSWORD} ranger < ${SCHEMA_FILE}.sql
    
  7. 重置 Ranger 权限。

    mysql -u root -p${MYSQL_PASSWORD}
    REVOKE SELECT ON ranger.* from 'rangeradmin'@'localhost';
    GRANT ALL PRIVILEGES ON ranger.* to 'rangeradmin'@'localhost';
    FLUSH PRIVILEGES;
    SHOW GRANTS FOR 'rangeradmin'@'localhost';
    exit;
    
  8. 更新 Ranger 配置文件。在以下文件中将 Ranger DB 主机更改为具有以下属性的新数据库主机名:

    文件 属性
    ranger-hdfs-security.xml ranger.plugin.hdfs.policy.rest.url
    ranger-yarn-security.xml ranger.plugin.yarn.policy.rest.url
  9. 重启 Hive 和 Ranger 服务。

    sudo systemctl start hive-metastore.service
      sudo systemctl start hive-server2.service
      sudo systemctl restart ranger-admin.service
      sudo systemctl restart ranger-usersync.service