Hadoop HA 구성하기 시리즈는 총 3편으로, HA의 의미 및 설치 방법 순으로 글을 작성할 예정입니다. 아래와 같은 순으로 글이 전개될 예정이니 순서대로 혹은 필요한 내용만 보시면 될 것 같습니다.
[1] HA 의미 및 Java, Hadoop, Zookeeper 설치
[2] Hadoop 설정 및 ssh, ufw 설정
[3] Zookeeper 설정 및 Hadoop 실행
우선적으로 용어 설명부터 해야하는데, HA란 High Availability로서 고가용성
으로 직역을 많이들 한다. 사실 고가용성이란 단어만 들었을 때는 그 의미가 와닿지 않는데, Hadoop이 오랜 시간동안 정상 작동하게끔 만드는 것이라고 이해하면 편하다.
HA 개념이 나오기 전에는?
Hadoop HA은 Hadoop 2.x 버전부터 나오기 시작했는데, 그 이전의 하둡은 클러스터 당 네임노드가 한 대 뿐이라 네임노드 머신이 다운되면 해당 머신을 재가동시키기 전까지는 하둡을 정상적으로 사용하기 어려운 문제점 등이 존재했다.
그렇다면 어떻게 하둡이 고가용성을 유지하게 만드는가?
Active
는 클러스터 안에서 실질적인 연산(읽기, 쓰기 등)의 역할을 하며, Standby
는 Active 네임노드와 싱크를 맞추기 위해서 Journalnode로부터 메타데이터의 변경 로그(EditLog)들을 읽어온다.사실 위의 설명에서 많은 것이 생략되었다. Active 네임노드가 죽으면 뿅하고 Standby가 Active가 되는 것이 아니라 이때의 Zookeeper, ZKFC의 역할이 중요하다.
Zookeeper
ZKFC
서버의 수적 열세로..(하둡을 위한 서버로 라즈베리파이 2대를 사용) 서버 2대에, 네임노드 2 데이터노드 2로 구성하였습니다.
당연히 서버 2대에 모든 노드를 몰아넣는 것보다 3대 이상으로 구성하는 것이 안정적입니다만, 서버 2대로 구성하고 싶은 사람들이 있을 수 있으니 글을 적어보겠습니다. 노드 구성은 아래 그림과 같습니다.
설치 파트는 모든 서버에서 진행하시면 됩니다.
sudo apt install openjdk-11-jdk
하둡은 자바 기반 오픈소스 프로그램이기 때문에, 자바를 우선적으로 설치해줘야 하는데 하둡 버전에 맞는 Java 버전은 이 사이트를 참고하면 된다.
Hadoop 3.3 이상부터는 Java 11을 사용해야 한다. 참고로 Hadoop 3.0 ~ 3.2는 Java 11이 지원되지 않으며, Java 8을 설치해야 한다.
# 다운로드
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
# 압축 풀기
tar xvzf hadoop-3.3.4.tar.gz
# 폴더 이동
sudo mv hadoop-3.3.4 /usr/local/hadoop
# Hadoop 디렉토리 사용자 그룹 변경
sudo chown -R $USER:$USER /usr/local/hadoop
하둡을 다운받기 위해서는 공식 문서를 참고하면 되는데, 해당 사이트의 binary
를 클릭하면 다운로드 받을 수 있는 링크가 나오게 된다.
# 다운로드
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
# 압축 풀기
tar xzvf apache-zookeeper-3.8.0-bin.tar.gz
# 폴더 이동
sudo mv apache-zookeeper-3.8.0-bin /usr/local/zookeeper
# Zookeeper 디렉토리 사용자 그룹 변경
sudo chown -R $USER:$USER /usr/local/zookeeper
Zookeeper는 해당 공식 문서에서 다운받을 수 있다.
프로그램을 실행하기 쉽도록 bashrc에 환경변수를 등록해주겠습니다. 먼저 vim으로 bashrc를 열어야 합니다.
sudo vim ~/.bashrc
아래의 환경변수들을 bashrc
에 등록해줍니다.
# java
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
# hadoop
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/etc/hadoop
환경 변수를 활성화해줍니다.
source ~/.bashrc
설치는 간단하게 끝이 났고, 다음 편에는 Hadoop HA 설정 및 property 의미에 대해 알아보겠습니다.