CentOS 7 환경에서 CDH를 활용한 Hadoop 클러스터 구축 가이드

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/

참고 자료: Cloudera Enterprise 6.2 공식 문서

태그: cdh Cloudera Manager hadoop HDFS yarn

6월 27일 22:44에 게시됨