CDH 6.0 설치 - noweaver/odds-and-ends GitHub Wiki

사전작업

# grep . /etc/*-release
/etc/centos-release:CentOS Linux release 7.4.1708 (Core) 
/etc/os-release:NAME="CentOS Linux"
/etc/os-release:VERSION="7 (Core)"
/etc/os-release:ID="centos"
/etc/os-release:ID_LIKE="rhel fedora"
/etc/os-release:VERSION_ID="7"
/etc/os-release:PRETTY_NAME="CentOS Linux 7 (Core)"
/etc/os-release:ANSI_COLOR="0;31"
/etc/os-release:CPE_NAME="cpe:/o:centos:centos:7"
/etc/os-release:HOME_URL="https://www.centos.org/"
/etc/os-release:BUG_REPORT_URL="https://bugs.centos.org/"
/etc/os-release:CENTOS_MANTISBT_PROJECT="CentOS-7"
/etc/os-release:CENTOS_MANTISBT_PROJECT_VERSION="7"
/etc/os-release:REDHAT_SUPPORT_PRODUCT="centos"
/etc/os-release:REDHAT_SUPPORT_PRODUCT_VERSION="7"
/etc/redhat-release:CentOS Linux release 7.4.1708 (Core) 
/etc/system-release:CentOS Linux release 7.4.1708 (Core) 

클라이언트 설정 1(개인 PC 또는 랩탑)

$ sudo vi /etc/hosts

#
## sprak test node
#
10.12.14.215	spark-manager1
10.12.14.220	spark-manager2
10.12.14.210	spark-node1
10.12.14.211	spark-node2
10.12.14.212	spark-node3
10.12.14.213	spark-node4
10.12.14.214	spark-node5
10.12.14.219	spark-node6

클러스터 설정(8대 노드 동일, 호스트 이름만 변경)

$ ssh -i dev-bigdata.pem centos@spark-manager1

$ sudo vi /etc/ssh/sshd_config
#PasswordAuthentication no
PasswordAuthentication yes

$ sudo systemctl restart sshd
$ sudo systemctl status sshd

$ sudo adduser spark
$ sudo passwd spark

$ sudo vi /etc/hostname 
spark-manager1

$ sudo vi /etc/sysconfig/network
HOSTNAME spark-manager1

$ sudo hostnamectl set-hostname spark-node1
$ exit

클라이언트 설정 2(개인 PC 또는 랩탑)

아래처럼 설정하면 앨리어스 이름만으로 간단히 접속할 수 있다.

$ vi ~/.bash_profile
alias spark-manager1='sshpass -p'spark!01' ssh -o StrictHostKeyChecking=no spark-manager1 -lspark'

병렬설정 작업

사용자 클라이언트에서 spark-manager1 로 접속한다.

$ spark-manager1

spark-manager1 접속 후 작업한다. 이후 모든 작업은 spark-manager1 접속 후, root권한으로 실행함을 유의한다.

$ su - root

# ssh-keygen -t rsa

# ssh-copy-id -i ~/.ssh/id_rsa.pub spark-manager1
# ssh-copy-id -i ~/.ssh/id_rsa.pub spark-manager2
# ssh-copy-id -i ~/.ssh/id_rsa.pub spark-node1
# ssh-copy-id -i ~/.ssh/id_rsa.pub spark-node2
# ssh-copy-id -i ~/.ssh/id_rsa.pub spark-node3
# ssh-copy-id -i ~/.ssh/id_rsa.pub spark-node4
# ssh-copy-id -i ~/.ssh/id_rsa.pub spark-node5
# ssh-copy-id -i ~/.ssh/id_rsa.pub spark-node6

# scp -r ~/.ssh/* spark-manager1:~/.ssh/
# scp -r ~/.ssh/* spark-manager2:~/.ssh/
# scp -r ~/.ssh/* spark-node1:~/.ssh/
# scp -r ~/.ssh/* spark-node2:~/.ssh/
# scp -r ~/.ssh/* spark-node3:~/.ssh/
# scp -r ~/.ssh/* spark-node4:~/.ssh/
# scp -r ~/.ssh/* spark-node5:~/.ssh/
# scp -r ~/.ssh/* spark-node6:~/.ssh/

# cd /usr/local/src
# wget http://parallel-ssh.googlecode.com/files/pssh-2.1.1.tar.gz
# tar xvf pssh-2.1.1.tar.gz
# cd pssh-2.1.1

# wget 'http://peak.telecommunity.com/dist/ez_setup.py'
# python ez_setup.py
# python setup.py install

# cd ~

# vi /etc/hosts
192.168.2.53    spark-manager1
192.168.2.54    spark-manager2
192.168.2.20    spark-node1
192.168.2.21    spark-node2
192.168.2.22    spark-node3
192.168.2.23    spark-node4
192.168.2.24    spark-node5
192.168.2.25    spark-node6

# touch clusters.text nodes.text

# vi clusters.text
spark-manager1
spark-manager2
spark-node1
spark-node2
spark-node3
spark-node4
spark-node5
spark-node6

# vi nodes.text
spark-node1
spark-node2
spark-node3
spark-node4
spark-node5
spark-node6

# pscp -h ~/clusters.text /etc/hosts /etc/hosts

방화벽 해제

# pssh -h ~/clusters.text systemctl status fiirewalld
# pssh -h ~/clusters.text chkconfig iptables off

# vi /etc/sysconfig/selinux
#SELINUX=enforcing
SELINUX=disabled

# pscp -h ~/clusters.text /etc/sysconfig/selinux /etc/sysconfig/selinux 
# pssh -h ~/clusters.text 'setenforce 0'

swappiness 설정

# pssh -h ~/clusters.text  'sysctl -w vm.swappiness=0'
# echo 'vm.swappiness=0' >> /etc/sysctl.conf
# pscp -h ~/nodes.text  /etc/sysctl.conf   /etc/sysctl.conf

transparent_hugepage 설정

# pssh -h ~/clusters.text   echo never > /sys/kernel/mm/transparent_hugepage/defrag
# pssh -h ~/clusters.text   echo never > /sys/kernel/mm/transparent_hugepage/enabled

# echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local
# echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local

# pscp -h ~/nodes.text /etc/rc.local  /etc/rc.local

ntp 동기화

서버 주소는 http://www.pool.ntp.org/ 에서 지역을 아시아로 했을 때의 서버 주소 확인할 수 있다.

server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org
# pssh -h ~/clusters.text yum install -y ntp

# vi /etc/ntp.conf

#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
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org

# pscp -h ~/clusters.text /etc/ntp.conf   /etc/ntp.conf 
# pssh -h ~/clusters.text service ntpd stop
# pssh -h ~/clusters.text ntpdate kr.pool.ntp.org
# pssh -h ~/clusters.text service ntpd start
# pssh -h ~/clusters.text chkconfig ntpd on

file descriptor 변경

# vi /etc/security/limits.conf
*    hard nofile 131072
*    soft nofile 131072
root hard nofile 131072
root soft nofile 131072


# pscp -h ~/nodes.text /etc/security/limits.conf  /etc/security/limits.conf

클러스터 리부팅

# pssh -h ~/clusters.text  reboot