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;
'Data Engineering > HDFS' 카테고리의 다른 글
[Ambari] Unable to lookup the cluster by ID; assuming that there is no cluster and therefore no configs for this execution command: Cluster not found error (0) | 2023.03.08 |
---|---|
[HDFS] apache Tez 란? (0) | 2022.04.06 |
[ Zookeeper ] 주키퍼(Zookeeper) 에 대한 간단한 스터디 (0) | 2021.06.11 |
[Kafka] 카프카(Kafka) 에 대한 간단 스터디 (0) | 2021.06.11 |
[Flume] 아파치 플럼( Flume ) 스터디 (0) | 2021.06.11 |