Data Engineering/HDFS

[BigTop Ambari 설치] 1. 환경 세팅

쟈누이 2023. 1. 31. 09:40
반응형

1. Apache Bigtop Ambari 사용 이유


  • 이번에 BigTop Ambari Hadoop 을 사용할 기회가 생김
  • CDP / HDP 가 2년전부터 막혀있기 때문에 선택
  • 아직은 프로젝트가 미성숙해서 안되는 부분들이 많기는 하지만 클라우데라, 호튼웍스 하둡 패키지 처럼 한번에 간단하게 설치/관리/모니터링 이 가능하다는 장점이 있음
  • 하지만, NameNode HA 구성, Ubuntu 에 암바리 패키지가 설치가 안된다는 단점이 있음..(해당 내용은 계속 파악중..) 
  • 본 작업은 centos 7.9 에서 진행을했으며, ubuntu 를 이용해 설치할 경우 ambari-pkg 세팅때 에러가 나서 설치가 안되었다..

 

 

2. 설치 전 설정


 

1. 네트워크 설정

Step 1. Hostname : localhost 이외 다른 이름으로 설정. hostname은 FQDN(fully qualified domain name) 으로 설정.

[root@node] $ sudo hostnamectl set-hostname <hostname>

Step 2. /etc/hosts 편집. 호스트의 각 클러스터에 IP주소, FQDN설정

  • ifconfig를 통해 ip 확인 후 적용
  • Standalone이므로 NAT ip address(enp0s3 확인. 기본값 10.0.2.15) 적용.
  • ifconfig 작동 불능 시 yum install net-tools 설치 또는 ip addr로 ip 확인
[root@node] $ sudo vi /etc/hosts

→ data 노드들에도 똑같은 설정을 해준다.

  • 저장한 뒤 reboot 를 통해 시스템을 재시작한 뒤에 변경된 내역 확인

2. passwordless ssl

Step 1. SSH key pair 생성

[root@node] $ ssh-keygen

Step 2. Key 저장 위치, passphrase 입력(key 저장 위치 -> 기본값, passphrase -> 없으므로 엔터)

Step 3. 다른 host들에 SSH Public Key 복사. (Stand alone의 경우 생략)

※ name node에서만 진행 - data node 는 할 필요가 없다

[root@node] $ ssh-copy-id -i /root/.ssh/id_rsa.pub <remote_username>@<server_ip_address>

Step 4. SSH 접속

  • 접속 후 비밀번호 없이 다른노드에 접속이 가능한 것을 확인.

3. 방화벽 해제 - 만약에 이미 해제되어 있다면 4번으로 넘어갈 것

Step 1. Iptables에 existing rule set 저장

[root@node] $ sudo iptables-save > ~/firewall.rules

Step 2. 방화벽 해제

[root@node] $ sudo systemctl disable firewalld

[root@node] $ sudo systemctl stop firewalld

4. SELinux mode 설정

Step 1. SELinux 상태 확인

[root@node] $ getenforce

Step 2. output이 enforcing인 경우 계속 진행. ( output이 Permissive나 Disable인 경우, ‘2.5 NTP Service 활성화’ 부터 진행

Step 3. /etc/selinux/config 파일 열기

[root@node] $ sudo vi /etc/selinux/config 

Step 4. SELINUX=enforcing을 SELINUX=permissive로 수정 후 저장, 닫기.

Step 5. SELinux 비활성화

[root@node] $ sudo setenforce 0

설치 종료 후 SELinux 재활성화

5. NTP Service 활성화

Step 1. ntp package 설치

[root@node] $ sudo yum install ntp -y 

Step 2. /etc/ntp.conf 파일 수정 (예시)

[root@node] $ sudo vi /etc/ntp.conf

server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org

Step 3. ntpd service 실행

[root@node] $ sudo systemctl start ntpd

Step 4. 부팅시 ntpd가 작동되도록 설정

[root@node] $ sudo systemctl enable ntpd

Step 5. Ntpd가 정상 작동중인지 확인

[root@node] $ sudo systemctl status ntpd

Step 6. NTP 서버와 시스템 시간 동기화

[root@node] $ sudo ntpdate -u pool.ntp.org

Step 7. 하드웨어 시간과 시스템 시간 동기화

[root@node] $ sudo hwclock --systohc

 

 

 

3. BigTop Ambari 설치 전 의존성 설치


Step 1. Open JDK 설치

  • open-jdk 1.8 설치
    • 설치가 완료되면 /usr/bin 경로에 java가 생성됨
[root@node] $ yum install java-1.8.0-openjdk -y
[root@node] $ yum install java-1.8.0-openjdk-devel -y
  • 환경 변수 등록
    • /usr/bin/java 경로에 심볼릭 링크가 걸려 있으므로 실제 경로를 찾아 환경변수 등록해야 함
[root@node] $ readlink -f /usr/bin/java
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64/jre/bin/java
  • 실제 경로는 찾으면 /etc/profile 을 열고 JAVA_HOME, PATH, CLASSPATH 를 등록할 것
[root@node] $ vi /etc/profile
...
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
...
  • 등록 완료 후, 아래 명령어 입력
[root@node] $ source /etc/profile
  • 등록한 환경 변수가 제대로 적용되었는지 테스트
[root@node] $ echo $JAVA_HOME
[root@node] $ echo $PATH
[root@node] $ echo $CLASSPATH
  • java 버전 확인
[root@node] $ java -version
  • 참고 링크

[Linux] CentOS 7에 OpenJDK 1.8 설치

Step 2. Maven 및 다른 패키지 설치 ( name node / data node 공통)

  • name node 및 data node 에서도 진행
[root@node] $ sudo yum install -y rpm-build
[root@node] $ sudo yum install -y python-devel
[root@node] $ sudo yum install -y git
[root@node] $ sudo yum install -y gcc
[root@node] $ sudo yum install -y gcc-c++
[root@node] $ sudo yum install -y wget
[root@node] $ cd /home
[root@node] $ wget <https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz>
[root@node] $ tar -xvzf apache-maven-3.6.3-bin.tar.gz
[root@node] $ mv apache-maven-3.6.3 /usr/local/
  • maven 설치 끝난 후 /etc/profile 에 MAVEN_HOME 을 설정
[root@node] $ sudo vi /etc/profile
...
export MAVEN_HOME=/usr/local/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
...

[root@node] $ source /etc/profile
[root@node] $ mvn -version
  • mvn -version 으로 설치 여부 및 버전 확인

Step 3. Database 설치 - mysql ( namenode 01 에서 진행)

  • ambari 의 메타 데이터를 저장하기 위한 mysql 을 설치
  • mysql 설치
[root@node] $ cd ~
[root@node] $ wget <https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm>
# (-i : 설치, -v : 상세항목 확인, -h : 패키지를 설치할 때 # 표시출력
[root@node] $ sudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm
  • mysql-community-server 설치
# (아래 에러 발생시에만 실행하고 다시 mysql-community-server 설치)
# 되도록이면 아래 새로운 GPG-KEY를 발급 받는 것이 좋다
# "The GPG keys listed for the "MySQL 5.7 Community Server" 
# repository are already installed but they are not correct for this package.
# Check that the correct key URLs are configured for this repository." 
# 라는 에러가 발생하면 새로운 GPG-KEY를 발급받는다
[root@node] $ rpm --import <https://repo.mysql.com/RPM-GPG-KEY-mysql-2022>

# mysql-community-server 설치
[root@node] $ yum -y install mysql-community-server
  • mysql 서비스 시작
#mysql 서비스 시작
[root@node] $ systemctl start mysqld
#mysql 서비스 enable
[root@node] $ systemctl enable mysqld
# mysql 임시 비밀번호 가져오기
[root@node] $ awk '/temporary password/{print $11}' /var/log/mysqld.log
# mysql 접속확인
[root@node] $ mysql -u root -p
[root@node] $ password: {임시 비밀 번호}
...

# 접속 종료
exit
  • mysql 설정
# /etc/my.cnf 파일에 아래 설정 추가.
# mysql 비밀번호 간소화, UTF8 설정.

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

#비밀번호 관련 보안 설정.
validate_password-policy=LOW
validate_password-length=4
  • mysql 재시작 후, 비밀번호 변경
# mysql 재시작
[root@node] $ sudo systemctl restart mysqld

# mysql 접속
[root@node] $ mysql -u root -p 
[root@node] $ password : {임시비밀번호}
...
# 비밀번호 변경
ALTER USER "root"@"localhost" IDENTIFIED BY "root";

# 재접속
exit
...

[root@node] $ mysql -u root -p 
[root@node] $ Enter password : "root"
  • database 생성하기
# database 생성.
create database ambari;
create database hive;

# ambari 계정 생성 (hive 계정생성은 하지 않아도 된다.)
create user 'ambari'@'localhost' identified by 'ambari';
create user 'ambari'@'%' identified by 'ambari';
grant all privileges on *.* to 'ambari'@'localhost' identified by 'ambari' with grant option;
grant all privileges on *.* to 'ambari'@'%' identified by 'ambari' with grant option;
flush privileges;

# hive 계정 생성 
create user 'hive'@'localhost' identified by 'hive';
create user 'hive'@'%' identified by 'hive';
grant all privileges on *.* to 'hive'@'localhost' identified by 'hive' with grant option;
grant all privileges on *.* to 'hive'@'%' identified by 'hive' with grant option;
flush privileges;
반응형