::: 데이터 분석 :::

[Ambari 6] CentOS 가상 이미지 복제와 Ambari 설치

곰탱이푸우 2023. 3. 20. 08:20
Ambari 설치 파일을 빌드 했으므로 Ambari 설치를 진행한다.
아래 과정으로 진행한다.
  • VirtualBox 가상 이미지 복제 및 설정 변경
  • SSH 설정 진행 (Master)
  • Worker Node에 Ambari 설치 (agent)
  • Master Node에 ambari 설치 (server, agent, mpack)
 
각 설치 파일들을 빌드하는 방법은 아래 포스팅 (문서)를 참고한다.
시간 단축을 위해 단일 가상 이미지를 복제해서 설치한다.
 
 

가상환경 복제 후 설정

지금까지 생성한 CentOS 7 가상 머신을 구성할 노드 개수만큼 복제한다.
 
테스트 목적이므로 단일 가상 머신을 복제해서 Master Node와 Worker Node를 구성한다.
필요에 따라 Master Node와 Worker Node의 가상머신을 구분해서 관리해도 된다.
 
가상 머신을 복제해서 동시에 실행하기 떄문에, 호스트 PC의 CPU 쓰레드 개수와 메모리 크기를 고려해야 한다.
총 3개의 노드를 구성하는 경우 필요한 총 자원은 다음과 같다.
  • Host PC 자원 - CPU 코어 4개 (8 쓰레드), 64G RAM, 1T HDD
  • 가상머신당 소요 자원 - vCPU 2개 (쓰레드 2개), 8G RAM, 80G HDD
  • 전체 소요 자원 (x3) - vCPU 6개 (쓰레드 6개), 24G RAM, 240G HDD
 
RAM은 여유가 있지만 CPU 코어가 부족해서 더 많은 노드를 생성할 수 없다.
가상머신의 설정을 아래와 같이 변경하면 최대 6대(Master 1개, Worker 5개) 정도까지 테스트 가능할 것으로 판단된다.
  • vCPU 개수 1개로 변경 x 6 = 총 6개 (전체 8개)
  • 메모리는 8G 유지 x 6 = 총 48G (전체 64G)
  • HDD도 80GB 유지 x 6 = 총 480GB (전체 1TB)
 
가상머신이 많으면 Vagrant 사용 권장
가상머신 5개 이상 동시에 실행하는 경우에는 수작업 보다는 Vagrant 같은 도구를 활용하는 것이 좋다.
코드 기반으로 다수의 가상 머신을 동시에 관리하고 운영할 수 있다.
공식 사이트는 다음과 같다.
https://www.vagrantup.com/
 

가상환경 복제

복제하려는 가상 머신을 선택하고 복제 버튼을 클릭한다.
 
생성할 가상 머신의 이름과 MAC 주소 옵션을 선택한다.
  • 이름 - 마지막 부분의 숫자를 변경한다.
  • MAC Address Policy - 모든 네트워크 어댑터의 새 MAC 주소를 선택한다.

 

 
복제하는 가상머신의 NIC에 새로운 MAC 주소를 부여한다.
MAC 주소의 충돌 문제를 해결할 수 있다.
 
가상 환경이지만 분산 환경을 구현하는 것이므로 복제 방식은 완전한 복제 방식을 선택한다.
기존 가상머신과 완전히 독립적으로 분리된다.
 
 
스냅샷을 현재 머신 상태만 복제하면 기존 스냅샷은 포함되지 않는다.
따라서 복제가 완료된 이후 스냅샷을 새로 생성해야 한다.
기존 가상 머신을 그대로 복제하기 위해 스냅샷 복제 옵션은 모두를 선택한다.
 
 
복제가 완료되면 복제 된 가상 머신이 추가된다.
구성할 노드 개수만큼 복제 과정을 반복한다.
 
VirtualBox 7.0 버그 존재
VirtualBox 7.0의 복제 기능에 버그가 존재한다.
전문가 모드에서 전체 복제를 하면 스냅샷도 복제 되어야 하지만, 정상 동작하지 않는다.
가이드 모드에서 진행하면 정상 동작한다
 
 

네트워크 설정 변경

복제 된 가상머신들은 동일한 IP 주소가 할당되어 있으므로 IP 주소를 변경해야 한다.
또한 원본 가상머신의 hostname이 지정되어 있으므로, 새로운 hostname으로 변경한다.
 
기존에 hosts 설정을 변경한 방법은 아래 문서를 참고한다.
아래 내용은 기존 설정을 전제로 진행한다.
$ cat /etc/hosts    # hosts에 설정한 IP 주소와 hostname 확인
192.168.56.51    node01.bearpooh.com
192.168.56.52    node02.bearpooh.com
192.168.56.53    node03.bearpooh.com

$ sudo vi /etc/sysconfig/network-script/ifcfg-enp0s8    # IP 주소 변경
# 마지막 부분의 IP 주소를 변경하고 :wq로 저장하고 종료
DEVICE=enp0s8 
ONBOOT=yes    # 부팅할때 자동으로 시작 (no인 경우 yes로 변경)
IPADDR=192.168.56.52    # IP 주소 변경 (hosts 참고) 
PREFIX=24   

$ sudo vi /etc/hostname    # hostname 이름
# hostname을 변경하고 :wq로 저장하고 종료
node02.bearpooh.com  # 기존은 node01

$ sudo reboot now    # 시스템 재시작
 
복제한 가상머신에 모두 적용하고, 중복 된 hostname과 IP 주소가 없어야 한다.
Ambari의 Agent와 하둡 노드들은 해당 정보들을 기반으로 통신하기 때문이다.

 

위의 예제는 총 3개 노드를 구성했다. 만약 노드 개수를 늘리고자 한다면 다음과 같이 진행한다.

복제 전에 추가하려는 경우

만약 가상머신 복제 이후 추가하고자 하는 경우 다음과 같이 진행한다.
  1. 원본 가상머신의 hosts를 수정한다.
  2. 원본 가상머신을 필요한 개수만큼 복제한다.
  3. 개별 hostname과 IP 주소를 변경한다.
 
복제 이후 추가하려는 경우
만약 가상머신 복제 이후 추가하고자 하는 경우 다음과 같이 진행한다.
  1. 원본 가상머신을 필요한 개수만큼 복제한다.
  2. 모든 가상머신의 hosts를 수정한다.
  3. 추가한 가상머신의 IP 주소와 hostname을 수정한다.
 
 

Master에서 SSH 설정

Master Node로 사용할 가상머신에서 SSH 설정을 진행한다.
 
SSH는 원격으로 명령을 실행할때 자주 사용되는 방식이다.
Jenkins 빌드 에이전트를 구성하는 방법에서 이미 다룬 적이 있다.

ambari 계정의 ssh-key 생성

아래 방법으로 ambari 계정의 ssh-key를 생성한다.
$ su ambari    # ambari 계정으로 전환
$ cd ~    # ambari 홈 계정으로 이동
$ ssh-keygen    # phrase는 필요하면 입력
# 나머지는 엔터엔터 진행

$ ls -al ~/.ssh/id_rsa    # 파일이 존재하는지 확인
 

ambari  계정의 ssh-key 복사

ambari 계정의 ssh-key를 각 node에 복사한다.
파일과 폴더의 권한을 변경하고 ssh-copy-id를 이용하여 복사한다.
 
다음과 같이 진행한다.
## Master에서 ambari 계정의 ssh-key 복사
$ su ambari    # ambari 계정으로 전환
$ cd ~/.ssh    # ambari 홈 계정으로 이동

## ssh-key 권한 변경
$ cat id_rsa.pub >> authorized_keys    # SSH 연결에 필요한 파일 복사
$ chmod 600 ~/.ssh/authorized_keys    # authorized_keys 파일 권한 변경
$ chmod 700 ~/.ssh/    # .ssh 폴더 권한을 700으로 변경
$ sudo chmod 700 ~/    # 만약 ambari 홈 경로의 권한이 700이 아닌 경우 700으로 변경

## ambari의 ssh-key를 Node에 복사
$ ssh-copy-id ambari@node01.bearpooh.com    # Master Node
$ ssh-copy-id ambari@node02.bearpooh.com    # Worker Node (암호를 물어보면 정상)
$ ssh-copy-id ambari@node03.bearpooh.com    # Master Node (암호를 물어보면 정상)
 

SSH 정상 접속 테스트

아래 명령으로 접속을 시도했을 때, 비밀번호를 물어보지 않으면 성공한 것이다.
$ ssh ambari@node02.bearpooh.com
$ ssh ambari@node03.bearpooh.com
 
 

id_rsa 파일 로컬 복사 (선택)

이번 테스트의 호스트 운영체제는 윈도우이다. (Windows의 WSL 환경에서 진행)
윈도우의 줄 바꿈은 \r\n (Carrage Return & New Line), 리눅스의 줄바꿈은 \n (New Line)이다.
 
Ambari의 설치 과정에서 id_rsa 파일의 값을 입력해야 한다.
Copy & Paste를 하는 경우 이러한 줄바꿈 문자 차이로 인해 정상 입력이 되지 않아 오류가 발생한다.
 
Ambari 설치 과정에서 id_rsa 파일 자체를 업로드할 수 있는 기능을 지원한다.
따라서 해당 파일을 로컬에 저장하고 id_rsa 파일의 값을 입력할때 업로드하면 오류가 발생하지 않는다.
 
로컬 PC에서 다음과 같이 진행한다.
$ scp -P 22 ambari@192.168.56.51:/home/ambari/.ssh/id_rsa .
$ mv id_rsa id_rsa_node01    # 파일명 변경
$ pwd    # 현재 경로 확인
$ ls -al id_rsa_node01

 

Worker에서 SSH 설정

위와 같이 설정하면 Ambari 설치는 정상적으로 진행된다.
하둡의 경우 모든 노드들의 연결이 SSH 설정되어 있어야 정상적으로 동작한다.
따라서 위의 과정을 모든 Worker 노드에도 동일하게 적용한다.
## Worker 노드에서 ambari 계정의 ssh-key 복사
$ ssh ambari@node02.bearpooh.com

## ssh-key 권한 변경
$ chmod 600 ~/.ssh/authorized_keys # authorized_keys 파일 권한 변경
$ chmod 700 ~/.ssh/ # .ssh 폴더 권한을 700으로 변경
$ sudo chmod 700 ~/ # 만약 ambari 홈 경로의 권한이 700이 아닌 경우 700으로 변경

$ ssh-keygen # phrase는 필요하면 입력
# 나머지는 엔터엔터 진행

## ambari의 ssh-key를 Node에 복사
$ ssh-copy-id ambari@node01.bearpooh.com # Master Node
$ ssh-copy-id ambari@node02.bearpooh.com # Worker Node
$ ssh-copy-id ambari@node03.bearpooh.com # Wokker Node

 

아래 명령으로 접속을 시도했을 때, 비밀번호를 물어보지 않으면 성공한 것이다.
$ ssh ambari@node01.bearpooh.com
$ ssh ambari@node03.bearpooh.com
 
나머지 Worker 노드에도 동일하게 진행한다.
 

MySQL 설치는 생략

Ambari의 경우 메타 정보를 저장하기 위한 데이터베이스가 필요하다.
이미 사용 중인 데이터베이스가 있는 경우 사용할 수 있다.
별도로 설정하지 않으면 Ambari 설치 과정에서 PostgreSQL을 자동으로 설치한다.
 
추가적으로 데이터베이스는 Hive, Oozie를 사용하는 경우 필요하다고 한다.
 
다른 블로그나 게시물들에서는 MySQL 5.8 버전 또는 PostgreSQL을 별도 구성하는 것을 가이드하고 있다.
Hive나 Oozie 사용 계획이 없으므로 별도의 데이터베이스 구성은 생략하고 진행한다.
 
Hive의 경우 반드시 설치하도록 되어 있어 데이터베이스가 필요하다.
Hive의 경우 Ambari 설치 과정 중 자동 설치되는 PostgreSQL을 활용한다.
 
 

Ambari 설치

이제 모든 준비 과정을 마쳤으므로 Ambari를 설치하는 과정을 진행한다.
  • Master Node - Ambari Server/Agent, Bigtop Utils, Bigtop Ambari mpack 설치
  • Worker Node - Ambari Agent만 설치
 

Worker에 Ambari 설치

Worker Node에는 Ambari Agent만 설치한다.

구성 요소 설치

아래 명령으로 Ambari Agent를 설치한다.
$ sudo yum install /rpm파일경로/ambari-agent-2.7.5.0-1.el7.noarch.rpm

# 앞서 설치할 rpm 파일들을 ambari 계정의 홈 경로로 복사한 파일을 활용한다.
# /home/ambari/ambari-agent-2.7.5.0-1.el7.noarch.rpm

 

스냅샷 생성

각 Worker 노드에 ambari 계정으로 로그인하고 아래 명령어를 실행해서 전원을 끈다.
$ sudo shutdown now
스냅샷 - 찍기 버튼을 클릭해서 스냅샷을 생성한다.
  • 스냅샷 이름 - Step 5
  • 스냅샷 설명 - 이미지 복제, IP/Hostname 수정, SSH 설정, Ambari Agent 설치
 
 

Master에 Ambari 설치

Master Node에는 Ambari Server/Agent, Bigtop Utils, Bigtop Ambari mpack을 설치한다.

구성 요소 설치

아래 명령으로 설치한다.
$ sudo yum install /rpm파일경로/ambari-agent-2.7.5.0-1.el7.noarch.rpm
$ sudo yum install /rpm파일경로/ambari-server-2.7.5.0-1.el7.noarch.rpm
$ sudo yum install /rpm파일경로/bigtop-utils-3.2.0-1.el7.noarch.rpm
$ sudo yum install /rpm파일경로/bigtop-ambari-mpack-2.7.5.0-1.el7.noarch.rpm

# 앞서 설치할 rpm 파일들을 ambari 계정의 홈 경로로 복사한 파일을 활용한다.
# rpm 파일 경로 부분은 /home/ambari가 된다.
 

실행 옵션 구성

Ambari 서버의 서비스를 시작하기 전에 상세 설정을 진행한다.
yum install은 파일만 복사한 것이고, 이 과정은 Ambari가 시작하기 전에 상세 설정을 진행한다.
 
다음 명령으로 진행한다. 필요한 부분만 표시했음을 참고한다.
$ sudo ambari-server setup
# 아래와 같은 선택화면이 나오면 입력한다.
... 중략 ...
Customize user account for ambari-server daemon [y/n] (n)?  y 선택
Enter user account for ambari-server daemon (root): ambari 입력
... 중략 ...
Checking JDK...  Enter choice (1): Custom JDK 선택 (로컬에 설치되어 있으므로)
... 중략 ...
Path to JAVA_HOME:  /usr/lib/jvm/java
... 중략 ...
Enable Ambari Server to download and install GPL Licensed LZO packages [y/n] (n)?  n 선택
... 중략 ...
Enter advanced database configuration [y/n] (n)?  n 선택
... 중략 ...
# PostgreSQL이 자동 설치 된다.
... 중략 ...
Ambari Server 'setup' completed successfully.
$
 
successfully 메시지가 출력되면 정상적으로 설정이 완료된 것이다.
 

mpack 설치

Ambari를 통해 하둡과 관련 서비스를 설치해야 하므로 mpack을 추가 설치한다.
 
아래 명령으로 진행한다.
$ sudo ambari-server install-mpack \
  --mpack=/usr/lib/bigtop-ambari-mpack/bgtp-ambari-mpack-1.0.0.0-SNAPSHOT-bgtp-ambari-mpack.tar.gz \
  --verbose
 
successfully 메시지가 출력되면 정상적으로 설정이 완료된 것이다.

 

 

PostgreSQL 설정

Ambari 서버를 실행하기에 앞서 PostgreSQL 추가 설정을 진행한다.
하둡 관련 서비스를 구성하기 전에 Hive 관련 데이터베이스 설정에 필요한 부분이다.
$ su root    # root 계정으로 전환
$ su postgres    # postgres 계정으로 전환
$ psql --u postgres    # postgres 계정으로 PostgreSQL 쉘 실행
> create user hive password 'test123';    # hive 계정 생성 (비밀번호는 test123)
> create database hive;    # hive 데이터베이스 생성
> \q    # psql 종료

$ sudo vi /var/lib/pgsql/data/pg_hba.conf    # 생성한 hive 계정에 대한 권한 부여
# 제일 마지막에 아래와 같이 추가 (:wq로 저장 후 종료)
# ambari와 mapred만 있으므로 앞에 hive 계정 추가
local  all  hive,ambari,mapred md5
host  all  hive,ambari,mapred 0.0.0.0/0  md5
host  all  hive,ambari,mapred ::/0 md5

$ sudo systemctl restart postgresql    # PostgreSQL 재시작
 

jdbc 드라이버 설정

Ambari에서 PostgreSQL 데이터베이스에 접근하기 위해서는 JDBC 드라이버가 필요하다.
 
먼저 아래 사이트로 접속한다.
다운로드 버튼을 클릭한다.
 
가장 좌측의 Java 8 버전 파일을 다운로드한다.
2023-02-26 현재 최신 버전은 42.5.4이다.
 
다운로드 받은 파일을 Master Node에 업로드한다.
$ scp -P 22 ./postgresql-42.5.4.jar ambari@192.168.56.51:/home/ambari/

 

Master Node에서 아래 명령을 실행한다.
$ ambari-server setup --jdbc-db=postgres --jdbc-driver=postgresql-42.5.4.jar

 

스냅샷 생성

스냅샷 - 찍기 버튼을 클릭해서 스냅샷을 생성한다.
  • 스냅샷 이름 - Step 5
  • 스냅샷 설명 - SSH 설정, Ambari Server/Agent 설치, mpack 설치, jdbc 설치
 
 

Ambari 시작(재시작)

Ambari Server를 구동하기 위한 설정을 마쳤으므로 Ambari를 시작한다.
 

Ambari Agent 시작

먼저 모든 Worker Node의 전원을 켠다.
Worker Node의 Ambari Agent가 정상 동작중인지 확인한다.
$ sudo ambari-agent status
 
아래와 같이 표시 되어야 한다.
 
만약 Ambari Agent가 실행중이 아니라면 아래 명령으로 시작한다.
$ sudo ambari-agent start
 

Ambari Server 시작

Master Node의 전원을 켠다.
Ambari Server가 정상 동작중인지 확인한다.
$ sudo ambari-server status
 
정상 실행되면 아래와 같이 8080 포트로 서비스가 시작되었다는 메시지가 출력된다.
 
아래와 같이 표시된다면 이미 실행중인 상태이다.

 

 
만약 Ambari Server가 실행 중이 아니라면 아래 명령으로 시작한다.
# restart는 현재 실행 중인 서비스를 종료하고 재시작한다.
# 만약 실행 중인 서비스가 없다면 새로 시작한다.

$ sudo ambari-server restart
 
이후 과정은 다음 포스팅(문서)로 진행한다.