하둡 에코시스템 중 하나인 Hue 설치 방법을 정리합니다.
Hue
휴(Hue)는 보통 하둡 기반의 플랫폼에서 많이 사용하는 사용자 인터페이스이다. 오픈소스로 코드가 공개되어 있으며, 필요한 사람은 누구나 사용할 수 있다. 휴는 하이브나 임팔라, 스파크, 트리노 등 빅데이터 SQL 엔진과의 연동을 지원하며 그 외에 일반적인 RDB와도 연동할 수 있다. 그래서 사용자에게 다양한 SQL 환경을 제공하기에 적합한 플랫폼이라고 생각한다. 또 쿼리 뿐만 아니라 테이블 스키마나 작업(Job) 현황 확인도 가능하다. 자세한 내용은 공식 홈페이지에서 확인할 수 있다.
설치 가이드
이번 설치 가이드에서는 휴를 도커 컨테이너에 올리는 과정을 정리하고자 한다. 따라서 아래의 사전 조건이 준비되어야 한다.
- OS 종류: Linux 기반
- Docker 설치 완료
- Git 설치 완료 (선택)
소스코드 가져오기
설치를 하기 위해서 먼저 휴 깃허브 레파지토리에서 소스코드를 클론해오자.
1 | git clone https://github.com/cloudera/hue.git |
만약 Git 사용이 아예 불가능할 경우에는 깃허브 페이지에서 zip으로 다운로드 받을 수 있다.
그다음 아래의 경로로 이동한다.
1 | cd hue/tools/docker/hue |
그러면 아래와 같은 파일들이 보인다.
1 | drwxrwxr-x 2 ec2-user ec2-user 64 Jun 23 11:04 conf |
휴는 메타데이터를 저장하고 관리하는 RDB가 필요하다. 그래서 도커 환경에서는 docker-compose
를 통해 휴가 사용할 RDB와 웹 서버 2개의 컨테이너를 생성한다. RDB의 경우 sqlite3, mysql, postgesql 이렇게 3가지가 가능한데 개인적으로는 mysql을 추천한다. 왜냐하면 이미 누군가 mysql을 같이 설치하는 파일을 개발해두었기 때문이다. (변경도 어렵지는 않다. 그냥 docker-compose.yml
파일을 수정해주면 된다.)
소스코드 수정하기
이 글에서도 mysql을 그대로 사용할 예정이다. 현재 오픈소스에 올라가 있는 mysql 셋업 환경을 확인해보자. 그리고 컨테이너를 올리기 전에 조금 수정해야 할 사항들이 있다. 먼저 docker-compose.yml
파일에 mysql 계정 비밀번호를 수정한다.
1 | version: '3' |
다음으로 init.sql
파일을 열어서 아래의 내용을 추가하자.
1 | CREATE DATABASE IF NOT EXISTS hue; |
추가하는 부분은 휴와 RDB를 연동할 때 사용할 유저에게 권한을 주는 코드이다. 여기까지 추가해준 뒤 본격적으로 컨테이너를 올려보자.
컨테이너 생성하기
아래의 명령어를 입력하여 컨테이너를 생성한다.
1 | docker-compose up -d |
그러면 사용할 도커 이미지들을 다운로드 받고 컨테이너가 올라간다. 아래의 명령어로 컨테이너가 올라왔는지 확인할 수 있다.
1 | ❯ docker-compose ps |
정상적으로 컨테이너들이 올라왔다.
메타데이터 마이그레이션하기
휴는 기본적으로 sqlite3를 RDB로 사용하도록 설정되어 있다. 따라서 컨테이너 내부에 접속해서 같이 올려둔 mysql로 메타데이터 마이그레이션을 진행한다.
휴 컨테이너에 접속한다.
1 | docker exec -itu 0 <container ID> /bin/bash |
그다음 conf 파일을 수정하기 위해서 vim을 설치해준다.
1 | apt-get update |
설치가 완료되면 desktop/conf/hue.ini
파일에서 아래의 내용을 수정해준다.
1 | [[database]] |
수정이 완료되었다면 아래의 명령어를 사용하여 마이그레이션을 진행한다.
1 | ./build/env/bin/pip install mysqlclient |
마이그레이션이 완료되었다면 확인을 위해 휴 서버에서 나온 뒤 mysql 컨테이너에 접속한다.
1 | # 컨테이너 접속 |
그다음 휴 서버에서 사용할 테이블을 정상적으로 이관했는지 확인해보자.
1 | mysql> use hue |
정상적으로 테이블 리스트가 나오는 걸 확인할 수 있다.
1 | +--------------------------------+ |
마지막으로 휴에 접속해보자.
위 사진과 같은 페이지가 보인다면 성공적으로 설치된 것이다.