Hadoop 계열(HDFS · YARN · Hive · Kafka · ZooKeeper 등) 클러스터를 올리기 전에 모든 노드에서 같은 상태로 맞춰야 하는 호스트 준비 작업이다. 여기서 빠뜨린 것은 나중에 "특정 노드만 이상한" 형태로 나타나 찾기 어렵다. 순서대로 한다.
| 순서 | 작업 | 문서 |
|---|---|---|
| 1 | OS 설치 | Linux 설치 |
| 2 | 호스트 이름 확정 | 호스트 네임 수정 |
| 3 | 이름 풀이 | Hosts 파일 수정 |
| 4 | SELinux · 방화벽 | 아래 |
| 5 | IPv6 | IPv6 비활성화 |
| 6 | 계정 | 사용자 · group 관리 |
| 7 | SSH 키 | SSH Key pair 생성 |
| 8 | Java · 환경 변수 | 아래 |
클러스터 설치 시 호스트명이 매우 중요하므로 미리 정하고 바꾸지 않는다. FQDN(hdp01.example.com)으로 두고 hostname -f 가 그 값을 돌려줘야 한다.
/etc/hosts 를 맞춘다. Linux · Windows.Cloudera · Hadoop 공식 문서는 SELinux 를 permissive 또는 disabled 로 둘 것을 요구한다. 방화벽은 끄지 말고 필요한 포트만 연다 — 포트 목록은 각 제품 문서에 있다.
# 현재 상태
getenforce
# 즉시 permissive
sudo setenforce 0
# 영구 (재부팅 후 적용)
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
Hadoop 을 구동하는 호스트에서 workers 노드로 비밀번호 없이 접근이 필요하다(start-dfs.sh 등이 ssh 로 데몬을 띄운다). 생성한 키쌍을 Hadoop 을 구동할 계정에 맞도록 설정한다. 각 데몬을 systemd 로 따로 띄우면 이 단계는 필요 없다.
Hadoop 3.4 는 Java 8 · 11 을, Hive 4.x 는 Java 8 · 11 · 17 을 요구한다. 제품마다 다르므로 각 문서의 요구사항을 따른다.
$HADOOP_HOME/etc/hadoop/hadoop-env.sh 에 JAVA_HOME 을 반드시 적는다 — 셸의 JAVA_HOME 은 ssh 로 띄운 데몬에 전달되지 않는다.
# /etc/profile.d/hadoop.sh
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# $HADOOP_HOME/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
vm.swappiness=1, Transparent Huge Pages 끔(never), nofile 65536 이상 — 데이터 노드 계열 공통 권장값이다.sudo tee /etc/sysctl.d/90-hadoop.conf > /dev/null <<'EOF'
vm.swappiness = 1
EOF
sudo sysctl --system