이 페이지에서는 Ranger 클러스터로 Managed Service for Apache Spark에서 Ranger 스키마를 백업하고 복원하는 방법을 보여줍니다.
시작하기 전에
필요한 경우 버킷을 만듭니다. Ranger 스키마를 저장하고 복원하는 데 사용할 Cloud Storage 버킷에 액세스할 수 있어야 합니다.
버킷을 만드는 방법은 다음과 같습니다.
- Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
- 만들기를 클릭합니다.
- 버킷 만들기 페이지에서 버킷 정보를 입력합니다. 다음 단계로 이동하려면 계속을 클릭합니다.
-
시작하기 섹션에서 다음을 수행합니다.
- 버킷 이름 요구사항을 충족하는 전역적으로 고유한 이름을 입력합니다.
- 버킷 라벨을 추가하려면 라벨 섹션 ()을 펼치고 add_box
라벨 추가를 클릭한 다음 라벨에
key및value를 지정합니다.
-
데이터 저장 위치 선택 섹션에서 다음을 수행합니다.
- 위치 유형을 선택합니다.
- 위치 유형 드롭다운 메뉴에서 버킷의 데이터가 영구적으로 저장될 위치를 선택합니다.
- 버킷 간 복제를 설정하려면 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}.sqlRanger 권한을 재설정합니다.
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: Cloud Storage의 bucket name에 저장된
.sql파일 확장자가 없는 Ranger 스키마 파일 이름입니다.
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}.sqlRanger 권한을 재설정합니다.
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.urlHive 및 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