本页介绍了如何在 Managed Service for Apache Spark with Ranger 集群上备份和恢复 Ranger 架构。
准备工作
如果需要,创建存储桶。您必须有权限访问 Cloud Storage 存储桶,并使用该存储桶来存储和恢复 Ranger 架构。
要创建存储桶,请按以下步骤操作:
- 在 Google Cloud 控制台中,前往 Cloud Storage 存储分区 页面。
- 点击 创建。
- 在创建存储桶 页面上,输入您的存储桶信息。要转到下一步
,请点击继续。
- 在开始使用 部分中,执行以下操作:
-
在选择存储数据的位置 部分中,执行以下操作:
- 选择位置类型。
- 从位置类型下拉菜单中选择一个位置,用于永久存储存储桶的数据。
- 如需设置 跨存储桶复制,请选择
通过 Storage Transfer Service 添加跨存储桶复制 ,然后
按照以下步骤操作:
设置跨存储桶复制
- 在存储桶 菜单中,选择一个存储桶。
在复制设置 部分中, 点击配置 以配置 复制作业的设置。
系统会显示配置跨存储桶复制 窗格 显示。
- 如需按对象名称前缀过滤要复制的对象, 请输入要用于包含或排除对象的前缀,然后点击 添加前缀。
- 如需为复制的对象设置存储类别, 请从存储类别菜单中选择一个存储类别。 如果您跳过此步骤,则复制的对象会默认使用 目标存储桶的存储类别。
- 点击完成 。
- 在选择存储数据的位置 部分中,执行以下操作:
- 在选择如何控制对对象的访问权限 部分中,选择 存储桶是否强制执行禁止公开访问, 然后为存储桶对象选择访问权限控制方法。
-
在选择如何保护对象数据 部分中,执行以下操作:
- 在数据保护 下,选择您要为存储桶设置的任何选项。
- 如需选择对象数据的加密方式,请展开 数据加密 部分 (),然后选择 数据加密 方法。
- 点击创建 。
备份 Ranger 架构
使用 SSH 连接到包含 Ranger 架构的集群的 Managed Service for Apache Spark 主节点。在主节点上运行的 SSH 终端会话中运行本部分中的命令。
设置环境变量。
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。
停止 Hive 服务。
sudo systemctl stop hive-metastore.service sudo systemctl stop hive-server2.service
防止对 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;将 Ranger 架构保存到
.sql文件中。mysqldump -u root -p${MYSQL_PASSWORD} ranger > ${SCHEMA_FILE}.sql重置 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;重启 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
将 Ranger 架构复制到 Cloud Storage。
gcloud storage cp ${SCHEMA_FILE}.sql gs://${BUCKET_NAME}
恢复 Ranger 架构
使用 SSH 连接到您要恢复集群架构的集群的 Managed Service for Apache Spark 主节点。在主节点上运行的 SSH 终端会话中运行本部分中的命令。
设置环境变量。
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 中。
停止 Hive 服务。
sudo systemctl stop hive-metastore.service sudo systemctl stop hive-server2.service
防止对 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;将 Cloud Storage 中的 Ranger 架构
.sql文件复制到集群的主节点。gcloud storage cp ${BUCKET_NAME}/${SCHEMA_FILE}.sql .恢复 Ranger 架构。此步骤会覆盖现有 Ranger 架构的内容。
mysqldump -u root -p${MYSQL_PASSWORD} ranger < ${SCHEMA_FILE}.sql重置 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;更新 Ranger 配置文件。在以下文件中将 Ranger DB 主机更改为具有以下属性的新数据库主机名:
文件 属性 ranger-hdfs-security.xmlranger.plugin.hdfs.policy.rest.urlranger-yarn-security.xmlranger.plugin.yarn.policy.rest.url重启 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