备份和恢复 Ranger 架构

本页介绍了如何备份和恢复 Ranger 架构 Dataproc 与 Ranger 集群

准备工作

  1. 根据需要创建存储桶。您必须有权访问 Cloud Storage 存储桶 用于存储和恢复 Ranger 架构。

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

    1. In the Google Cloud console, go to the Cloud Storage Buckets page.

      Go to Buckets page

    2. Click Create bucket.
    3. On the Create a bucket page, enter your bucket information. To go to the next step, click Continue.
      • For Name your bucket, enter a name that meets the bucket naming requirements.
      • For Choose where to store your data, do the following:
        • Select a Location type option.
        • Select a Location option.
      • For Choose a default storage class for your data, select a storage class.
      • For Choose how to control access to objects, select an Access control option.
      • For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
    4. Click Create.

备份 Ranger 架构

  1. 使用 SSH 进行连接 具有 Ranger 架构的集群的 Dataproc 主节点。 在运行 主节点

  2. 设置环境变量。

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

    替换以下内容:

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

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

    • schema filename:指定文件名。 不带有 .sql 文件扩展名。Ranger 架构已保存 复制到主节点上的此文件,然后保存到 bucket name 存储于 Cloud Storage 中。

  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 进行连接 您集群内的 Dataproc 主节点 系统会恢复集群架构 在运行 主节点

  2. 设置环境变量。

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

    替换以下内容:

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

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

    • 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