• 김영찬

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/<java-version>으로 /lib/jvm/<java-version>을 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 계정이면 암호를 묻지 않음)

조회수 12회댓글 0개

최근 게시물

전체 보기