개요
2023.03.18 - Apache Hadoop 이란? 에서 간단히 Hadoop에 대해 소개했는데, 이 글에서는 직접 설치해보려고 한다.
테스트 환경이므로 단일 노드, 그리고 기본 모드인 비분산 모드(Standalone)로 설치해보려고 한다.
사용한 서버는 AWS EC2, Ubuntu 20.04 LTS이다.
지원 Java 버전
Hadoop은 Java 기반 오픈소스이기 때문에 Java 설치를 요구한다. Hadoop 버전 별 사용할 수 있는 Java 버전은 아래와 같다.
- Apache Hadoop 3.3 이상 : Java 8, Java 11
- Apache Hadoop 3.0.X ~ 3.2.X : Java 8
- Apache Hadoop 2.7.X ~ 3.10.X : Java 7, Java 8
참고 : https://cwiki.apache.org/confluence/display/HADOOP/Hadoop+Java+Versions
이 글에서는 버전에 영향을 받지 않도록 Java 8을 사용한다. Openjdk로 설치한다.
apt update
apt install openjdk-8-jdk
설치
1. 필요 패키지 설치
원격 Hadoop 데몬 관리 스크립트를 사용하기 위해 필요한 ssh, pdsh를 설치한다.
apt install ssh
apt install pdsh
2. hadoop 사용자 생성
일반적으로 hadoop은 서비스 계정으로 실행하는 경우가 많다. hadoop 계정으로 생성한다.
useradd hadoop -m -s /bin/bash
3. Hadoop 다운로드
Hadoop는 압축 파일을 내려받아 압축 파일을 해제하는 방식으로 설치할 수 있다.
아래 다운로드 사이트에서 적절한 버전을 다운로드한다. 이 글에서는 최신 버전인 3.3.4 버전을 설치한다.
설치 경로는 /opt/로, HADOOP_HOME은 /opt/hadoop이 된다.
다운로드 주소 : https://www.apache.org/dyn/closer.cgi/hadoop/common/
# 다운로드
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
# /opt/ 아래에 압축 해제
tar -zxvf hadoop-3.3.4.tar.gz -C /opt/
# 디렉터리 소유자 변경
chown hadoop:hadoop /opt/hadoop-3.3.4/ -R
# 심볼릭 링크 설정
ln -s /opt/hadoop-3.3.4 /opt/hadoop
4. Java 경로 설정
환경 변수 또는 구성 파일(etc/hadoop/hadoop-env.sh)에 Java 경로를 지정한다. 이 글에서는 구성 파일로 설정하겠다.
Java 경로 확인
readlink -f /usr/bin/java | sed "s:bin/java::"
구성 파일 편집
cd $HADOOP_HOME
echo 'export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")' >> etc/hadoop/hadoop-env.sh
5. 실행 확인
hadoop이 정상적으로 동작하는지 확인해본다. 이상이 없으면 명령어 사용법이 표시된다.
cd $HADOOP_HOME
./bin/hadoop
실행
아래 예제를 실행해본다.
conf 디렉토리를 input 디렉터리로 복사한 다음 지정된 정규식의 모든 일치 항목을 찾아 표시하는 예제이다. 출력은 output 디렉터리로 지정된다.
mkdir input
cp etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar grep input output 'dfs[a-z.]+'
cat output/*
참고 문서
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html