BLOG

Amazon EMR 클러스터에서 HUE 데이터베이스를 마이그레이션하는 방법
작성일: 2018-04-13

Hadoop User Experience (Hue)Amazon EMR 및 Apache Hadoop에서 사용할 수 있는 오픈 소스 웹 기반 그래픽 사용자 인터페이스입니다. HUE 데이터베이스는 사용자, 그룹, 권한 승인, Apache Hive 쿼리, Apache Oozie 워크플로우 등을 저장합니다.

 

HUE 데이터베이스를 새 EMR 클러스터로 마이그레이션 해야 하는 경우가 있을 것 입니다. 예를 들면, Amazon EMR AMI (Amazon Machine Image)의 이전 버전에서 업그레이드 할 수 있지만 HUE 응용 프로그램과 해당 데이터베이스에는 많은 사용자 정의가 포함되어 있을 수 있습니다. 기존 HUE 데이터베이스 또는 remote database in Amazon RDS를 새 클러스터로 마이그레이션하는 방법으로 이러한 사용자 개체를 다시 만들어 HUE에서 쿼리/워크플로우 기록을 유지하는 것을 피할 수 있습니다.

 

기본적으로 HUE 사용자 정보 및 쿼리 기록은, EMR 클러스터의 마스터 노드에 있는 로컬 MySQL 데이터베이스에 저장됩니다. 그러나, Amazon S3에 저장된 구성과 Amazon RDS의 원격 MySQL 데이터베이스를 사용하여 하나 이상의 HUE 지원 클러스터를 만들 수 있습니다. 이렇게 하면 Amazon EMR 클러스터를 계속 실행하지 않고도 HUE가 생성한 사용자 정보 및 쿼리 기록을 보존할 수 있습니다. 이번 포스팅은 기존 EMR 클러스터에서 HUE 데이터베이스를 마이그레이션하는 단계별 프로세스를 설명합니다.

 

참고: Amazon EMR은 AMI releases에 따라 서로 다른 HUE 버전을 지원합니다. 이 마이그레이션 작업은 이전 클러스터와 새 클러스터 간의 HUE 버전 호환성을 염두에 두어야 합니다. 현재 HUE 3.x.x 버전은 HUE 4.x.x 버전과 호환되지 않으므로 이 두 HUE 버전 간의 마이그레이션으로 인해 문제가 발생할 수 있습니다. 또한 HUE 3.10.0 은 이전 3.x.x 버전과 역 호환되지 않습니다.

 

시작하기 전에

먼저 다음과 같이 기존 EMR 클러스터의 HUE에 새 testUser를 만듭니다.

 

 

이 자격 증명을 사용하여 나중에 새 EMR 클러스터에서 HUE에 로그인하여 HUE 데이터베이스를 성공적으로 마이그레이션했는지 확인할 수 있습니다.

자, 이제 시작하겠습니다.

 

마이그레이션 방법

다음 단계에 따라 데이터베이스를 새 EMR 클러스터로 마이그레이션한 다음 마이그레이션 프로세스의 유효성을 검사하십시오.

 

1.) 기존 HUE 데이터베이스를 백업 합니다.

다음과 같이(Linux / Unix / macOS를 사용하는 경우) SSH를 사용하여 이전 클러스터의 마스터 노드에 연결하고 HUE 데이터베이스를 JSON 파일에 덤프합니다.

 

$ ssh -i ~/key.pem hadoop@ec2-xx-xxx-xxx-228.us-west-2.compute.amazonaws.com

$ /usr/lib/hue/build/env/bin/hue dumpdata > ./hue-mysql.json

 

model 필드에 useradmin.userprofile이 있는 모든 JSON 객체를 제거하여 HUE-mysql.json 출력 파일을 편집하고 파일을 저장 합니다. 아래와 같이 오브젝트를 제거하는 예시가 있습니다.

 

Json

{

“pk”: 1,

“model”: “useradmin.userprofile”,

“fields”: {

“last_activity”: “2018-01-10T11:41:04”,

“creation_method”: “HUE”,

“first_login”: false,

“user”: 1,

“home_directory”: “/user/hue_admin”

}

},

 

2.) hue-mysql.json 파일을 Amazon S3와 같은 영구 저장소에 저장 합니다.

AWS CLI 또는 Secure Copy(SCP) 클라이언트를 사용하여 이전 EMR 클러스터의 파일을 Amazon S3에 복사 할 수 있습니다. 다음은 AWS CLI 를 사용한 예시 입니다.

 

$ aws s3 cp ./hue-mysql.json s3://YourBucketName/folder/

 

3.) 백업 된 HUE 데이터베이스를 새로운 EMR 클러스터로 복구/리로드 합니다.

a.) SSH를 사용하여 새 EMR 클러스터의 마스터 노드에 연결하고 이미 실행중인 HUE 서비스를 중지 합니다.

$ ssh -i ~/key.pem hadoop@ec2-xx-xxx-xxx-229.us-west-2.compute.amazonaws.com

$ sudo stop hue

hue stop/waiting

b.) HUE 데이터베이스에 연결하십시오. mysql 클라이언트를 사용하여 다음과 같이 클러스터에 대한 Amazon RDS의 로컬 MySQL 데이터베이스 또는 원격 데이터베이스 중 하나를 선택합니다.

$ mysql -h HOST –u USER –pPASSWORD

로컬 MySQL 데이터베이스의 경우 마스터 노드의 /etc/hue/conf/hue.ini 파일에서 데이터베이스에 연결하기 위한 호스트 이름, 사용자 이름 및 암호를 찾을 수 있습니다.

[[database]]

engine = mysql

name = huedb

case_insensitive_collation = utf8_unicode_ci

test_charset = utf8

test_collation = utf8_bin

host = ip-172-31-37-133.us-west-2.compute.internal

user = hue

test_name = test_huedb

password = QdWbL3Ai6GcBqk26

port = 3306

위의 예제 구성을 기반으로 한 커맨드 샘플은 다음과 같습니다. (EMR 클러스터 설정에 따라 호스트, 사용자 및 암호 세부 정보를 바꿉니다.)

$ mysql -h ip-172-31-37-133.us-west-2.compute.internal -u hue -pQdWbL3Ai6GcBqk26

c) MySQL 서버에서 이름이 huedb 인 기존 HUE 데이터베이스를 드랍 합니다.

mysql> DROP DATABASE IF EXISTS huedb;

d.) 동일한 이름인 huedb로 빈 데이터베이스를 새로 만듭니다.

mysql> CREATE DATABASE huedb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE=utf8_bin;

e) HUE와 데이터베이스 huedb를 동기화 합니다.

$ sudo /usr/lib/hue/build/env/bin/hue syncdb –noinput

$ sudo /usr/lib/hue/build/env/bin/hue migrate

(이것은 새로운 huedb를 필요로 하는 모든 HUE 테이블로 채워집니다.)

f.) MySQL에 다시 로그인하고 외래 키를 새로운 테이블에 드랍 합니다.

mysql> SHOW CREATE TABLE huedb.auth_permission;

 

 

다음의 예시에서, <id value>를 이전 출력의 실제 값으로 바꿉니다.

mysql> ALTER TABLE huedb.auth_permission DROP FOREIGN KEY

content_type_id_refs_id_<id value>;

g.) django_content_type의 내용을 삭제합니다.

mysql> DELETE FROM huedb.django_content_type;

h.) Amazon S3에서 백업 된 HUE 데이터베이스 덤프를 새 EMR 클러스터에 다운로드 하여 HUE로 로드 합니다.

$ aws s3 cp s3://YourBucketName/folder/hue-mysql.json ./

$ sudo /usr/lib/hue/build/env/bin/hue loaddata ./hue-mysql.json

i.) MySQL에서, 외래 키인 content_type_id를 auth_permission에 다시 추가합니다

mysql> use huedb;

mysql> ALTER TABLE huedb.auth_permission ADD FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`);

j.) HUE 서비스를 다시 시작 합니다.

$ sudo start hue

hue start/running, process XXXX

이제 되었습니다. HUE UI에 성공적으로 액세스 할 수 있는지에 대한 여부를 확인하고 기존 testUser 자격 증명을 사용하여 로그인 합니다.

 

 

새 EMR 클러스터에서 testUser로 HUE에 로그인하면, 다음과 같이 유사한 HUE 홈페이지가 표시됩니다.

 

마무리하며

기존 HUE 데이터베이스를 새로운 Amazon EMR 클러스터로 마이그레이션 하고 프로세스를 검증하는 방법에 대해 알아보았습니다. 향후 게시물에서 다루고자 하는 Amazon EMR 케이스가 있다면 문의 부탁 드립니다.

 

추가 컨텐츠

이 게시물이 유용하다고 생각이 든다면, 아마존 EMR에서 PySpark, Hive 및 Hue를 사용하여 이상 탐지Amazon EMR 웹 인터페이스에 친숙한 URL을 동적으로 생성 도 확인해 보시기 바랍니다.

 

원문 URL: https://aws.amazon.com/ko/blogs/big-data/how-to-migrate-a-hue-database-from-an-existing-amazon-emr-cluster/

** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.