::: 데이터 분석 :::

[Ambari 3] CentOS 7 기본 설정

곰탱이푸우 2023. 3. 9. 08:20
가상환경에 CentOS  운영체제를 설치했으므로, 이후 필요한 기본 설정을 진행한다.
 
CentOS 설치를 위한 가상환경 설정은 아래 포스팅 (문서)를 참고한다.
 

[Ambari 2] CentOS 7 가상 환경 생성

Ambari 설치를 위한 CentOS7 가상 환경을 생성한다. Ambari 소개에 대한 내용은 다음 문서를 참고한다. [Ambari 1] Apache Ambari 소개 하둡 에코시스템을 설치하기 위해 각 구성요소들을 직접 개별 설치하는

www.bearpooh.com

 

아래 과정은 다음 작업을 수행하기 위한 설정이 섞여 있다.
  • Bigtop 설치와 Ambari 빌드
  • Ambari 설치와 Agent 연동
  • 하둡과 관련 서비스 설치
 
시간 단축을 위해 단일 가상 이미지를 만들고 복제해서 사용할 예정임을 참고한다.
 
 

사용자 계정 권한 변경

root 계정을 사용하면 이후 과정을 아주 수월하게 진행할 수 있다.
그러나 일반적으로 root 계정을 통한 작업은 지양하는 것이 좋다.
따라서 OS 설치하면서 생성한 사용자 계정(관리자 권한)을 사용하여 진행한다.
 

하둡 관련 계정 sudo 권한 설정

하둡 관련 서비스를 설치할 때 관리자 권한으로 진행하기 떄문에 sudo 명령을 패스워드 입력 없이 사용해야 한다.

CentOS 7을 설치하면서 ambari 계정을 관리자 권한으로 생성했으므로 아래와 같이 진행한다.

$ sudo visudo
[sudo] password for ambari: 비밀번호입력

# 아래 항목을 찾아서 ambari 계정을 추가하고 :wq로 저장하고 종료
# Allow root to run any commands anywhere
root ALL=(ALL) ALL
# 아래에 계정들을 추가한다.
ambari ALL=(ALL) ALL
zookeeper ALL=(ALL) ALL
hdfs ALL=(ALL) ALL
zeppelin ALL=(ALL) ALL
yarn ALL=(ALL) ALL
spark ALL=(ALL) ALL
hive ALL=(ALL) ALL
kakfa ALL=(ALL) ALL
ams ALL=(ALL) ALL
ambari-qa ALL=(ALL) ALL
tez ALL=(ALL) ALL
hcat ALL=(ALL) ALL
mapred ALL=(ALL) ALL

... (중략) ...

# Same thing without password 하단에 아래 내용 추가 # %wheel 앞에 주석 제거
%wheel ALL=(ALL) NOPASSWD: ALL#

# 완료했으면 :wq로 저장하고 종료

이후 exit로 로그아웃한 다음 다시 로그인한다. 

sudo visudo 를 실행해서 비밀번호 입력 없이 실행되는지 확인한다.

 

wheel 그룹에 하둡 관련 계정 추가

하둡 관련 계정들을 wheel 그룹에 추가하면 암호 입력 없이 sudo 실행이 가능하다. 

/etc/group 파일을 다음과 같이 수정한다.

$ sudo vi /etc/group

# wheel 그룹에 속할 계정들을 추가한다.
# - 하둡 관련 계정 (hive,zookeeper,spark,ams,ambari-qa,kafka,tez,hdfs,zeppelin,yarn,hcat,mapred)
# - OS 설치 계정 (ambari)
wheel:x:10:hive,zookeeper,spark,ams,ambari-qa,kafka,tez,hdfs,zeppelin,yarn,hcat,mapred,ambari

# hadoop 그룹을 추가하고 그룹에 속할 계정들을 추가한다.
# gid는 사용하지 않은 적절한 값을 사용한다.
# - 하둡 관련 계정 (hive,zookeeper,spark,ams,ambari-qa,kafka,tez,hdfs,zeppelin,yarn,hcat,mapred)
# - OS 설치 계정 (ambari)
# - 이후 HDFS를 사용할 일반 계정 (hadmin, huser)
hadoop:x:1002:hive,zookeeper,spark,ams,ambari-qa,kafka,tez,hdfs,zeppelin,yarn,hcat,mapred,ambari,hadmin,huser

# 완료했으면 :wq로 저장하고 종료

 

 

HDFS 일반 계정 생성

HDFS 구성한 이후 사용할 계정을 생성한다. 관리 목적의 admin 계정과 사용 목적의 user 계정을 구분하여 생성한다. 

Ambari를 설치할때 생성되는 계정과 그룹들은 해당 서비스가 동작하기 위한 것이다. 

따라서 일반적인 목적으로 사용할 계정은 별도로 생성해서 사용하는 것이 좋다. 아래와 같이 진행한다.

# 계정 생성
$ sudo useradd hadmin
$ sudo useradd huser

# 비밀번호 설정
$ sudo passwd hadmin
$ sudo passwd huser
 

yum 기본 설정

프록시 설정

폐쇄망에서 프록시를 이용한 인터넷이 가능한 경우 아래와 같이 설정한다.
$ sudo vi /etc/yum.conf

# 아래 설정 추가
proxy=http://프록시서버주소:포트

# 입력 완료 후 :wq로 저장하고 종료
인터넷 환경인 경우 생략한다.
 

yum 패키지 설치

설치를 진행하기 위해서는 최신 배포 패키지를 설치할 수 있는 epel 저장소를 활성화 해야 한다.
아래와 같이 진행한다.
$ sudo yum update    # yum 업데이트 설치
$ sudo yum install epel-release  # epel 저장소 활성화
$ sudo yum install yum-utils  # yum 확장도구 설치
$ sudo yum-complete-transaction  # 정상 실행 확인
 
 

네트워크 설정 변경

어댑터의 설정과 hosts 설정을 변경한다.
 

어댑터 설정 변경

호스트 전용 어댑터로 추가한 enp0s8의 설정을 변경한다.
설치 과정에서 IP 주소는 할당했지만 부팅할때 자동으로 시작하는 옵션을 활성화하고, IPv6 옵션을 비활성화 한다.
아래와 같이 진행한다.
$ sudo cp /etc/sysconfig/network-script/ifcfg-enp0s8 /etc/sysconfig/network-script/ifcfg-enp0s8.bak  # 원본 파일 백업
$ sudo vi /etc/sysconfig/network-script/ifcfg-enp0s8

# 아래 내용으로 수정하고 :wq로 저장하고 종료
TYPE=Ethernet 
PROXY_METHOD=none 
BROWSER_ONLY=no 
BOOTPROTO=static    # 기본값 none (고정 IP는 none / static 상관 없음)
DEFROUTE=yes 
IPV4_FAILURE_FATAL=no 
IPV6INIT=no  # 기본값 yes (IPv6 비활성화)
IPV6_AUTOCONF=no    # 기본값 yes (IPv6 비활성화)
IPV6_DEFROUTE=no    # 기본값 yes (IPv6 비활성화)
IPV6_FAILURE_FATAL=no 
IPV6_ADDR_GEN_MODE=eui64 
NAME=enp0s8 
UUID=dabd9eeb-1a10-46dc-8a13-1048e489d611    # 시스템마다 다름
DEVICE=enp0s8 
ONBOOT=yes    # 기본값 no  (부팅할때 자동으로 시작)
IPADDR=192.168.56.51
PREFIX=24    # Netmask 255.255.255.0 의미

$ systemctl restart NetworkManager    # 네트워크 어댑터 재시작
 

hosts 변경

hosts 변경은 가상머신을 복제하고 나서 해도 되지만, 클러스터 구성 계획이 정해진 경우라면 초반에 해도 된다.
먼저 hostname을 확인하고 변경한다.
$ sudo vi /etc/hostname

node01.bearpooh.com 
# 위와 같이 FQDN 형태가 아니라면 변경한다.
# 설치 과정에 입력한대로 되어 있으면 두어도 된다.
 
hosts 파일을 변경한다.
이미 Name Node 1개, Data Node 3개로 구성할 계획이 정해져 있으므로 먼저 수정해둔다.
먼저 수정하면 이후 노드를 복제할 때 수정하지 않아도 되므로 편리하다.
$ sudo vi /etc/hosts    # hosts변경

# 아래 항목은 삭제한다.
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

# 마지막 부분에 아래 내용을 추가하고 :wq로 저장하고 종료
# 가상머신 4개로 테스트하는 경우
192.168.56.51 node01.bearpooh.com    # Name Node
192.168.56.52 node02.bearpooh.com    # Data Node 1
192.168.56.53 node03.bearpooh.com    # Data Node 2
192.168.56.54 node04.bearpooh.com    # Data Node 3
 
hostname, hosts 관련 참고사항
이후 가이드 문서에서 hostname과 hosts의 이름이 node01이 아닌 bdp01으로 표시 될 수 있다.
캡처를 진행한 테스트 환경에 달라 발생한 것으로, 이 부분에서 작성한 hostname을 기준으로 이후 과정을 진행한다.
 
 

ssh 설정 변경

ambari와 Hadoop 설치는 ssh를 통해 개별 노드에 접근하여 진행한다.
ssh 설정을 먼저 바꿔두면 가상머신 복제한 다음에 수정하지 않아도 되므로 편리하다.
ssh 접근에 필요한 암호화 키는 가상머신 복제 이후에 진행한다.
$ sudo vi /etc/ssh/sshd_config

# 아래 설정 값을 찾아서 확인하고 다르면 수정한다.
# 수정이 완료되면 :wq로 저장하고 종료
PermitRootLogin no    # ambari 계정을 사용하므로 no 유지 (root 계정을 사용하는 경우는 yes로 변경)
PubkeyAuthentication yes    # 암호화 키를 사용하여 비밀번호 입력을 하지 않을 것이므로 yes로 변경
AuthorizedKeyFile .ssh/authorized_keys    # 파일명과 경로가 올바른지 확인
PasswordAuthentication yes    # 관리 목적으로 물리 PC에서 접근하는 경우도 있으니 yes 유지

# 아래 항목은 기본 값이 변경되어 있는지만 확인
ChallengeResponseAuthentication no    # no가 아니면 no로 변경
UsePAM yes    # yes가 아니면 yes로 변경
X11Forwarding yes    # yes가 아니면 yes로 변경

$ sudo systemctl restart sshd
 

방화벽 설정 변경

하둡의 경우 Name Node와 Data Node의 통신이 진행되어야 하므로 방화벽 정책을 꺼야 한다.
정석으로 접근하면 하둡과 관련 서비스들이 사용하는 포트를 조사하고 각각 오픈하는 정책을 적용해야 하나 현실적으로 가능하지 않다.
 
일반적으로 빅데이터 시스템은 외부와 분리 된 환경에서 운용하기 때문에 저수준의 정책을 적용하는 편이다.
따라서 방화벽 설정을 비활성화 하고, 나중에 필요한 경우 활성화 하는 것으로 진행한다.
 
방화벽이 이미 중단되었거나 사용하지 않는 경우는 생략한다.
$ sudo systemctl disable firewalld    # 방화벽 서비스 비활성화
$ sudo systemctl stop firewalld    # 방화벽 서비스 중단
$ sudo systemctl status firewalld    # inactive 인지 확인 (중단 성공 여부)
 
아래와 같이 inactive로 표시되어야 한다.

 

 

시스템 설정 변경

ntp 설정

하둡은 분산 환경으로 동작하고, 하둡에 저장되는 데이터의 신뢰성을 보장하기 위해 서버 (노드)들의 시간을 동기화 해야 한다.
일반적으로 ntp를 사용하며 아래와 같이 진행한다.
LG유플러스에서 제공하는 서버를 사용했으며, 필요에 따라 다른 ntp 서버를 사용해도 무방하다. (구글링하면 나온다.)
$ sudo yum install ntp    # ntp 서비스 설치
$ sudo vi /etc/ntp.conf

# server 0~3은 주석 처리하고 아래에 한줄 추가 (:wq로 저장하고 종료)
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
time.bora.net iburst    # LG 유플러스 ntp 서버

# ntp는 일정시간 이상 차이나면 동기화를 시도하는데, iburst 옵션은 바로 동기화를 적용한다.
 
$ sudo systemctl enable ntpd    # ntp 서비스 활성화
$ sudo systemctl enable chronyd     # chronyd 서비스 활성화
$ sudo systemctl start ntpd    # ntp 서비스 시작
$ sudo systemctl start chronyd    # chronyd 서비스 시작
$ sudo systemctl status ntpd    # ntp 시작 상태 확인

$ timedatectl set-ntp y    # 시간 동기화 설정
$ timedatectl    # ntp 동작 여부 확인
 
아래와 같이 NTP 항목이 yes로 표시되어야 한다.
 

SELinux 설정 해제

SELinux는 리눅스의 접근 제어 보안 정책을 지원하는 기능이다.
하둡은 분산 환경에서 각 노드 (서버)에 접근해서 설치와 파일 생성을 진행해야 한다.
만약 접근 제어가 활성화 되어 있는 경우 원활한 진행이 어렵고 성능 문제가 발생한다.
따라서 아래와 같이 해당 기능을 해제한다.
$ sudo setenforce 0    # SELinux 강제 옵션 해제
$ sudo vim /etc/selinux/config   

# 아래 항목을 disabled로 변경 (:wq로 저장하고 종료)
# SELINUX=enforcing    # 기존
SELINUX=disabled    # 변경

$ sestatus    # 비활성화 여부 확인

 

 
아래와 같이 SELinux 항목이 disabled로 표시되어야 한다.
 

umask 설정 변경

umask는 파일이나 폴더(디렉토리)에 대한 기본적인 권한 (Permission) 을 설정하는 값이다.
  • chmod가 권한 부여 개념이라면 umask는 권한 박탈의 개념이다.
  • umask 0022는 디렉토리인 경우 755 ( rwx r-x r-x), 파일인 경우 644 (rw- r-- r--)를 의미한다.
 
아래와 같이 설정한다.
$ umask  # 현재 시스템의 umask 값 확인
0002

# umask의 실행 값이 0022가 아닌 경우 진행

$ sudo vi /etc/profile 
# 가장 하단에 아래 내용 추가 (:wq 저장 후 종료)
umask 0022

$ sudo vi /etc/bashrc
# 가장 하단에 아래 내용 추가 (:wq 저장 후 종료)
umask 0022

$ source /etc/profile
$ umask    # 출력 값이 0022인지 확인
 
아래와 같이 출력값이 0022로 표시되어야 한다.

 

 

기타 설정 변경

절전 모드 해제

분산 환경은 여러 대의 서버 (또는 가상환경)가 동작하는 환경이기 때문에, 일부 서버는 입력 없이 장시간 대기하는 경우가 많다.
절전 모드에 진입하게 되는 경우 Master 서버와 연결이 끊어지거나 연결이 불안정해지는 문제가 발생할 수 있다.
따라서 모든 서버의 절전 모드를 해제해야 한다.
# 시스템 절전 모드 해제
$ sudo systemctl mask sleep.target suspend.target hibernate.target hybird-sleep.target
 

시스템 자원 제한 설정

하둡에서 데이터 처리를 하게 되면 동시에 접근하는 파일수가 많아지게 된다.
시스템의 기본 설정은 무한대로 되어 있는데, 성능에 영향을 줄 수 있어 동시에 오픈하는 파일 수를 제한하는 것이 권장 사항이다.
너무 많아도 안되고 적어도 안된다. (Out of Memory가 자주 발생할 수 있다고 한다.)
가이드에 따라 차이가 있지만 보통 10000 또는 65535로 설정하는 편이다.
 
ambari 계정으로 하둡을 설치하고 운영할 것이기 때문에 해당 계정만 적용한다.
$ sudo vi /etc/security/limits.conf

# 가장 마지막 줄에 아래와 같이 입력한다. (:wq로 저장하고 종료)
ambari soft nofile 65535    # open file 수
ambari hard nofile 65535    # open file 수

$ exit    # 쉘 로그아웃 하고 재로그인

$ ulimit -a

 

아래와 같이 출력 값에 open files 값이 65535로 표시되어야 한다.
 

Locale 확인

시스템의 언어 설정인 Locale을 확인한다.
테스트 환경에서는 영문 Locale (en_US.utf8) 설정 그대로 진행했다.
한글 사용이 필요한 경우 아래와 같이 변경한다.
$ sudo vi /etc/bashrc

# 가장 아래에 다음과 같이 입력 (:wq로 저장 후 종료)
LANG=ko_KR.utf8

$ sudo reboot now

$ locale
 
재부팅 후 로그인 한 다음 locale 명령을 실행하면 ko_KR로 변경되어야 한다.

 

 

스냅샷 생성

생성한 계정으로 로그인하고 아래 명령어를 실행해서 전원을 끈다.
$ sudo shutdown now
 
스냅샷 - 찍기 버튼을 클릭해서 스냅샷을 생성한다.
  • 스냅샷 이름 - Step 2
  • 스냅샷 설명 - CentOS 7 기본 설정
 
생성한 스냅샷은 이후 설정 과정에서 문제가 발생했을 경우 복원 지점으로 활용한다.
OS를 재설치하지 않고 특정 지점으로 복귀 할 수 있기 때문에 매우 중요하다.

 

이후 과정은 다음 포스팅(문서)로 진행한다.