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