本頁說明如何在 Managed Service for Apache Spark with Ranger 叢集上備份及還原 Ranger 結構定義。
事前準備
視需要建立 bucket。您必須有權存取 Cloud Storage bucket,才能儲存及還原 Ranger 結構定義。
建立 bucket 的步驟如下:
- 前往 Google Cloud 控制台的 Cloud Storage「Buckets」(值區) 頁面。
- 點選 「Create」(建立)。
- 在「建立 bucket」頁面中,輸入 bucket 資訊。如要前往下一個步驟,請按一下「繼續」。
- 在「開始使用」部分,執行下列操作:
-
在「Choose where to store your data」(選擇資料的儲存位置) 專區中,執行下列操作:
- 選取「位置類型」。
- 從「位置類型」下拉式選單中,選擇要永久儲存 bucket 資料的位置。
- 如果您選取「雙區域」位置類型,也可以使用相關核取方塊啟用強化型複製。
- 如要設定跨值區複製,請選取「透過 Storage 移轉服務新增跨值區複製作業」,然後按照下列步驟操作:
設定跨 bucket 複製作業
- 在「Bucket」選單中選取 bucket。
在「複製設定」部分,按一下「設定」,設定複製作業的設定。
畫面上會顯示「Configure cross-bucket replication」窗格。
- 如要依物件名稱前置字串篩選要複製的物件,請輸入要納入或排除物件的前置字串,然後按一下「新增前置字串」。
- 如要為複製的物件設定儲存空間級別,請從「儲存空間級別」選單中選取儲存空間級別。如果略過這個步驟,複製的物件預設會使用目標值區的儲存空間級別。
- 按一下 [完成]。
- 在「選擇資料儲存方式」部分,執行下列操作:
- 在「選取如何控制物件的存取權」部分,選取 bucket 是否要強制執行禁止公開存取,並為 bucket 的物件選取存取控管方法。
-
在「選擇保護物件資料的方式」部分,執行下列操作:
- 選取「資料保護」下方的任何選項,為 bucket 設定所需項目。
- 如要啟用虛刪除,請按一下「虛刪除政策 (用於資料復原)」核取方塊,並指定要保留物件的天數 (刪除後)。
- 如要設定「物件版本管理」,請勾選「物件版本管理 (用於版本管控)」核取方塊,並指定每個物件的版本數量上限,以及非現行版本失效的天數。
- 如要為物件和 bucket 啟用資料保留政策,請勾選「保留 (符合法規)」核取方塊,然後執行下列操作:
- 如要啟用 Object Retention Lock,請按一下「啟用物件保留功能」核取方塊。
- 如要啟用 Bucket Lock,請按一下「Set bucket retention policy」(設定值區資料保留政策) 核取方塊,然後選擇保留期限的時間單位和長度。
- 如要選擇物件資料的加密方式,請展開「資料加密」部分 (),然後選取「資料加密」方法。
- 選取「資料保護」下方的任何選項,為 bucket 設定所需項目。
- 點選「建立」。
備份 Ranger 結構定義
使用 SSH 連線至叢集的 Managed Service for Apache Spark 主要節點,並使用 Ranger 結構定義。請在主節點上執行的 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 bucket 名稱。
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 bucket 名稱。
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