このページでは、Ranger クラスタを使用した Dataproc で Ranger スキーマをバックアップおよび復元する方法について説明します。
始める前に
必要に応じてバケットを作成します。Ranger スキーマの保存と復元に使用する Cloud Storage バケットにアクセスできる必要があります。
バケットを作成するには:
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create bucket.
- 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.
- Click Create.
Ranger スキーマをバックアップする
SSH を使用して、Ranger スキーマを持つクラスタの Dataproc マスターノードに接続します。 マスターノードで実行されている 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 を使用して、クラスタ スキーマを復元するクラスタの Dataproc マスターノードに接続します。 マスターノードで実行されている 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: Cloud Storage の bucket name に保存される Ranger スキーマのファイル名(ファイル名の拡張子は
.sql
なし)。
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.xml
ranger.plugin.hdfs.policy.rest.url
ranger-yarn-security.xml
ranger.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