1. 사전 준비 및 역할 할당
리소스 다운로드:
링크: 네이버 클라우드
1.1. 서버 및 역할 계획
다음과 같이 3대의 서버를 준비하고 역할을 분담합니다:
- hadoop01 (192.168.1.136): CM Server, NameNode, ResourceManager
- hadoop02 (192.168.1.137): DataNode, NodeManager
- hadoop03 (192.168.1.138): DataNode, NodeManager
1.2. 방화벽 및 SELinux 비활성화
모든 노드에서 방화벽과 SELinux를 중지합니다:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
1.3. 필요 패키지 설치 (Server 노드)
yum install -y cyrus-sasl-plain cyrus-sasl-gssapi portmap fuse-libs bind-utils libxslt fuse
yum install -y redhat-lsb-core createrepo deltarpm python-deltarpm mod_ssl openssl-devel python-psycopg2 MySQL-python
1.4. 호스트 파일 설정
모든 노드의 /etc/hosts에 다음 내용을 추가합니다:
192.168.1.136 hadoop01
192.168.1.137 hadoop02
192.168.1.138 hadoop03
1.5. Cloudera Manager YUM 저장소 구성 (Server 노드)
서버 측:
yum install nginx -y
mkdir -p /usr/share/nginx/html/cm6/
# RPM 파일을 /usr/share/nginx/html/cm6/ 디렉토리로 이동
createrepo -pdo /usr/share/nginx/html/cm6/ /usr/share/nginx/html/cm6/
vi /etc/nginx/nginx.conf
# server 블록 내에 다음 내용 추가
root /usr/share/nginx/html/cm6/;
autoindex on;
systemctl restart nginx
systemctl enable nginx
클라이언트 측 (모든 노드):
vi /etc/yum.repos.d/cm.repo
[cm-repo]
name=cm
baseurl=http://192.168.1.136
gpgcheck=0
enabled=1
yum repolist
yum list | grep cloudera
1.6. cloudera-scm 사용자 생성 (Server 노드)
useradd cloudera-scm
echo "cloudera-scm" | passwd --stdin cloudera-scm
echo "cloudera-scm ALL=(root)NOPASSWD:ALL" >> /etc/sudoers
1.7. MySQL 데이터베이스 설치 및 설정 (클러스터 내 한 노드)
MySQL 설치 후 다음 SQL을 실행합니다:
CREATE DATABASE scm DEFAULT CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Qwer@123' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'Qwer@123' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'hadoop01' IDENTIFIED BY 'Qwer@123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
1.8. 모든 노드에 JDK 설치
중요: 기본 설치 방식을 사용해야 합니다. 사용자 지정 경로로 설치하지 마세요.
yum install oracle-j2sdk1.8 -y
2. CM Server 및 Agent 설치
2.1. CM 패키지 설치 (Server 노드)
yum install -y enterprise-debuginfo-6.2.1-1426065.el7.x86_64
yum install -y cloudera-manager-server-6.2.1-1426065.el7.x86_64
yum install -y cloudera-manager-server-db-2-6.2.1-1426065.el7.x86_64
# MySQL JDBC 드라이버 복사
cp mysql-connector-java-5.1.40.jar /opt/cloudera/cm/lib/
# 데이터베이스 초기화
/opt/cloudera/cm/schema/scm_prepare_database.sh -h 192.168.1.136 mysql scm root Qwer@123
# 설정 확인
cat /etc/cloudera-scm-server/db.properties
# CM Server 시작
systemctl start cloudera-scm-server
netstat -tnlp | grep 7180
2.2. 로컬 Parcel 패키지 구성 (Server 노드)
데이터베이스 초기화 후에 다음 작업을 수행합니다:
# CDH Parcel 파일을 /opt/cloudera/parcel-repo 디렉토리로 이동
cp CDH-6.2.1-* allkeys.asc /opt/cloudera/parcel-repo
# SHA 파일명 수정 (끝의 1 제거)
mv CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1 CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha
2.3. CM 웹 콘솔 접속
브라우저에서 http://hadoop01:7180으로 접속합니다. 기본 계정은 admin/admin입니다.
2.4. Parcel 배포 설정
웹 콘솔에서 Parcel 업데이트 주기를 기본 1시간에서 1분으로 변경합니다. 1분 후 Parcel 파일이 표시되는지 확인합니다.
2.5. 클러스터 생성
라이선스는 무료 버전을 선택하고, 클러스터 이름을 지정한 후 호스트를 추가합니다. Agent는 자동으로 설치됩니다.
2.6. 시스템 점검 및 문제 해결
다음 설정을 모든 노드에 적용합니다:
# 임시 적용
sysctl -w vm.swappiness=10
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 영구 적용
echo "vm.swappiness=10" >> /etc/sysctl.conf
echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
2.7. 호스트 추가
필요시 추가 호스트를 등록합니다. 절차는 기존과 동일합니다.
3. CM 관리 서비스 설치
3.1. 서비스 개요
CM은 다음과 같은 관리 역할을 제공합니다:
- Activity Monitor: MapReduce 작업 정보 수집 (기본 비활성화, 프로덕션에서 불필요)
- Host Monitor: 호스트 상태 및 메트릭 수집
- Service Monitor: YARN 및 Impala 서비스 메트릭 수집
- Event Server: 이벤트 집계 및 알림 제공
- Alert Publisher: 특정 이벤트에 대한 알림 생성 (프로덕션에서 사용 빈도 낮음)
3.2. 디렉토리 생성 및 권한 설정 (Server 노드)
mkdir -p /var/lib/cloudera-host-monitor
mkdir -p /var/lib/cloudera-service-monitor
chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-host-monitor
chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-service-monitor/
3.3. 서비스 설치
CM 웹 콘솔에서 관리 서비스를 설치합니다. 설치 후 메트릭 수집이 정상적으로 이루어지는지 확인합니다.
4. HDFS 서비스 설치
기본 설정을 유지하고 설치를 진행합니다. 설치 완료 후 dfs.permissions 설정을 수정하여 HDFS에서 파일 생성 및 디렉토리 생성을 허용합니다.
테스트: HDFS에 데이터를 쓰고 읽어서 정상 동작을 확인합니다.
5. YARN 서비스 설치
HDFS 설치와 유사하게 지시에 따라 기본 설정으로 설치합니다. 설치 후 테스트를 수행합니다:
cd /opt/cloudera/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1425774/lib/hadoop-mapreduce/
hadoop jar hadoop-mapreduce-examples-3.0.0-cdh6.2.1.jar pi 2 4
6. Hive 서비스 설치 (ZooKeeper 필요)
6.1. Hive용 데이터베이스 생성
CREATE DATABASE hive DEFAULT CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive_password';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'localhost' IDENTIFIED BY 'hive_password';
FLUSH PRIVILEGES;
6.2. MySQL 드라이버 복사
cp mysql-connector-java-5.1.40.jar /opt/cloudera/parcels/CDH/lib/hive/lib/
6.3. Hive 서비스 설치
CM 웹 콘솔에서 Hive 서비스를 추가하고 ZooKeeper와 연동합니다. 설치 후 기능을 확인합니다:
# Hive CLI 테스트
hive
SELECT from_unixtime(1583781807, 'yyyy-MM-dd');
# Hive 웹 UI 접속
http://hadoop01:10002/