CDP PvC Install #1 - Server Prerequsite
작성자: 김영찬
Cloudera PvC를 설치하기 위해 사전에 준비해야할 업무에 대해서 설명합니다.
// Cloudera CDP Private Cloude Base Trial 관련 자료
- CDP Private Cloud Trial Version 다운로드 : https://www.cloudera.com/downloads/cdp-private-cloud-trial.html
- CDP Private Cloud 설치 문서 : https://surgach.tistory.com/62
- CDP Private Cloud 문서 : https://docs.cloudera.com/cdp-private-cloud/latest/index.html
// CDP OS Requirements
-
CDP Operating System Requirements
-
파일시스템은 표준 파티션으로 해야하고 LVM 으로하면 안됨
-
File System : ext3, ext4, xfs, s3
-
Kudu File System : ext4, xfs
-
/etc/fstab noatime option 설정(file read시 metadata write 금지)
-
/dev/sdb1 /data1 ext4 defaults,noatime 0
-
mount -o remount /data
-
/etc/security/limits.d/20-nproc.conf 가 /etc/security/limits.conf 의 설정을 override
-
nproc을 65536 혹은 262144로 설정
// 사전 준비사항
-- File System Partition Sizing
- /usr 1GB
- /var 5GB ~ 1TB -- /var/log 에 hadoop application log가 생성됨
- /opt 15GB
- /data datanode dfs 영역(가능한 최대 용량 설정, 없으면 /dfs에 생성됨)
-- Hostname 설정
- sudo hostnamectl set-hostname hadoop1 : 호스트명 설정, hostname(hadoop1.futuresoft.co.kr)으로 설정 확인
-- DNS 서비스 혹은 hosts 파일 설정
- DNS 서버 구축
- sudo vi /etc/hosts 에 최소 3대의 클러스터 서버들을 IP FQDN hostname 형식으로 등록
192.168.0.151 hadoop1.futuresoft.co.kr hadoop1
- Microsoft Windows PC의 경우 \windows\system32\drivers\etc의 hosts 파일 수정
-- NTP 서비스 설정
- NTP 서버 구축
-- Apply latest update to linux system
- sudo yum update –y 모든 프로그램을 최신 프로그램으로 업데이트
- sudo reboot : 재부팅하여 설치를 위한 준비 완료
// CDP Configuration Sell Script 복사 및 설정 : 아래 STEP 1 ~ STEP 10의 내용을 실행하는 shell script
- CDP 설치 계정(hadoop)에 파일 복사(혹은 root 계정에 복사하고 root 권한으로 실행)
- chmod +x cdp_preconfiure.sh //실행 옵션 설정
- sudo ./cdp_preconfigure.sh // 아래 구성 내용 자동 설정
- shell script 실행 후 설정 적용을 위해 재부팅됨
cdp_preconfigure.sh // 파일 실행
-- STEP 1: Setup IPv6 disable in /etc/sysctl.onf
- ip addr | grep inet6 로 IPv6 설정 여부 확인(inet 정보가 나오면 enable)
- echo "net.ipv6.conf.ens33.disable_ipv6 = 1" >> /etc/sysctl.conf
- /etc/sysctl.conf 파일에 아래 내용 추가
net.ipv6.conf.ens33.disable_ipv6=1 // 안해도 될듯
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1 // 안해도 될듯
- sysctl -p 로 변경사항 적용
- ip addr | grep inet6로 빈 결과가 나오는지 확인
-- STEP 2: Setup vm.swappiness in /etc/sysctl.conf
- sudo vi /etc/sysctl.conf 파일에 vm.swappiness=1 추가(1은 swap 사용 최소화, 60이 기본값, 100은 적극 사용)
혹은 sed -i "$ a\sysctl -w vm.swappiness=1 " /etc/sysctl.conf 로 추가
- sudo sysctl -w vm.swappiness=1 실행중 설정
- cat /proc/sys/vm/swappiness 로 설정값 확인
- sysctl -p로 변경사항 적용
-- STEP 3: Disable firewall daemon
- systemctl list-unit-files | grep firewalld : 방화벽 설정 확인
- sudo systemctl stop firewalld : 방화벽 중지
- sudo systemctl mask firewalld : 방화벽을 다른 프로세스가 실행 금지
- sudo systemctl disable firewalld : 방화벽 init에서 실행 금지
- sudo systemctl status firewalld
-- STEP 4: Modify secure linux configuration in /sec/selinus/config
- setenforce 0 : 설치중에만 해제(0 : Permissive, 1 : Enforcing)
- 또는 sudo vi /etc/selinux/config 파일에 SELINUX=disabled 추가(영구 해제 설정)
- sestatus로 설정 확인(disabled)
-- STEP 5: Modify THP(Transparent Huge Page) configuration in /etc/rc.d/rc.local
- vi /etc/rc.d/rc.local 아래 내용 반영 (/etc/rc.local로 symbolic link)
- echo never > /sys/kernel/mm/transparent_hugepage/defrag
- echo never > /sys/kernel/mm/transparent_hugepage/enabled
- chmod +x /etc/rc.d/rc.local 로 실행 권한 부여
- cat /proc/meminfo | grep -i hugepages_total 로 설정값이 0인지 확인)
- sudo systemctl restart network 네트워크를 재부팅하여 설정값 적용
-- STEP 6: Modify ulimit configuration in /etc/security/limits.conf
-
- soft nofile 1048576
-
- hard nofile 1048576
-
- soft nproc 65536
-
- hard nproc 65536
-- STEP 7: Configure JDK environments in /usr/java
- /usr/java/으로 /lib/jvm/을 symbolic link
- cd /usr
- mkdir java
- ln -s /lib/jvm//java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64 /usr/java/jdk1.8
- java -version -- JAVA 설정 및 사용 버전 확인
-- STEP 8: Configure JAVA environment in /etc/profile
-
/etc/profile 혹은 /etc/profile.d/cloudera.sh 에 아래 JAVA 환경정보 설정
-
/etc/profile에 아래 환경정보 설정(모든 계정에 동일한 환경 설정)
-
export JAVA_HOME=/usr/java/jdk1.8
- export PATH=$JAVA_HOME/bin:$PATH // PATH에 JAVA bin 디렉토리를 등록
-
export CLASSPATH=/opt/jara:$CLASSPATH // CLASSPATH에 사용자 jar 디렉토리 추가
-
source /etc/profile -- profile에 환경 정보를 설정한 경우
-
echo $JAVA_HOME -- JAVA_HOME 설정 확인
-
echo $PATH -- PATH 설정 확인
-
which java / -- java가 제대로 설치되었는지 확인
-- STEP 9: Remove preinstalled PostgreSQL DBMS
- yum remove postgresql* -y
- yum list installed postgresql*
-- STEP 10: tree utility 설치
- yum install tree
// Modify ulimits default in /etc/security/limits.d/20-nproc.conf
- vi /etc/security/limits.d/20-nproc.conf
-
- soft nproc 4096 --> 65536
// Copy Hive JDBC Driver to /usr/share/java directory
- Cloudera hive JDBC driver 최신버전을 다운받아 /usr/share/java 디렉토리에 복사
- https://cloudera.com/downloads/connectors/hive/jdbc/2-6-15.html 에서 목록 중 최신버전 다운로드
- Cloudera_Hive_JDBC_jdbc_2.6.15.108.zip // 참고용이며 최신버전 확인 필요
// Copy DBMS JDBC driver to /usr/share/java directory
- MySQL은 MySQL JDBC Driver 에서 "Platform Independant" --> "just start my download"클릭하여 다운로드
- mysql-connector-java-8.0.27.jar // 참고용 최신버전 확인 필요
- mv mysql-connector-java-8.0.27.jar mysql-connector-java.jar // JDBC connector의 이름에서 버전을 제거
// Configure /etc/sudoers with install account(CDP 설치 계정에 root 권한 부여)
- root로 로그인
- chmod +x /etc/sudoers // sudoers 파일에 대한 편집 권한 부여
- vi /etc/sudoers // sudoers 파일을 편집(사용자 계정에 권한 추가)
hadoop ALL=(ALL) NOPASSWD: ALL // hadoop 계정에 sudo 권한 부여(root 암호 없이 자신 암호로 sudo 사용)
%wheel ALL=(ALL) NOPASSWD: ALL // wheel 그룹에 대해서도 코멘트 #(comment)을 제거
- chmod -x /etc/sudoers // sudoers 파일에 대한 권한 해제(설치후 권한 해제)
- hadoop 계정으로 로그인
- sudo cat /etc/sudoers // root 암호 없이 파일 내용이 보이면 sudoers 설정 성공
// Generate ssh key in cloudera manager host and copy to all cluster hosts
-
ssh-keygen -t rsa -P "“ : cloudera manager hos(cmhost)t에서 ssh private/public key set 생성(사용자 계정 홈의 .ssh 폴더에 생성됨)
-
.ssh 폴더 파일
-
id_rsa : private key file
-
id_rsa_pub : public key file(접속할 서버의 authorized_keys 파일에 이 내용 추가하면 암호없이 ssh 로그인 가능)
-
authorized_keys : 접속 허용 서버의 공개키(접속할 서버에 id_rsa.pub 내용 추가)
-
ssh-copy-id –i ~/.ssh/id_rsa.pub hadoop@worker1 : worker1 서버의 hadoop 계정에 cmhost의 public key를 authorized_keys 파일에 추가
-
Cloudera Manager Server(cloudera manager host)가 설치되는 서버 자신(cmhost)도 반드시 ssh key를 복사해야 함(localhost)
-
ssh localhost : localhost로 ssh 접속 확인(암호를 묻지 않음) ssh hadoop@worker1.futuresoft.co.kr : cmhost에서 worker1 서버의 hadoop 계정으로 ssh 접속(암호를묻지 않음)
ssh worker1 : 현재 cmhost 로그인 계정과 동일한 계정으로 worker1 서버에 ssh 접속 (hadoop 계정이면 암호를 묻지 않음)