::: IT인터넷 :::

Hadoop Edge 노드 구성하기 (2) - 하둡 클라이언트 설정

곰탱이푸우 2023. 10. 9. 08:20
HDFS를 CLI 환경에서 사용하기 위해서는 하둡 클라이언트가 반드시 설치되어 있어야 한다.
Docker 컨테이너의 설정 변경이 완료되면 컨테이너 내부에 하둡 클라이언트를 설정한다.
 
하둡 클러스터 구성 방법은 아래 문서를 참고한다.
에지 노드 구성을 위한 컨테이너 설정 변경 방법은 아래 포스팅을 참고한다.
 

Hadoop 클라이언트

하둡 클러스터에 접근하기 위해서는 아래 과정을 진행한다.
  • 하둡 클라이언트 설치
  • 하둡 클러스터의 환경 설정 파일 적용
  • 하둡 클러스터에 포트포워딩 설정
  • 에지 노드에 하둡 환경 변수 설정
 
하둡 클러스터를 구성하는 방법은 아래 문서를 참고한다.

Hadoop 클라이언트 설치

Apache Bigtop 3.2.0에 포함 된 Hadoop의 버전은 3.3.4이다.
따라서 하둡 3.3.4 버전을 에지 노드에 설치해야 한다.
 
Apache Bigtop 3.2.0 관련 내용은 아래 문서를 참고한다.
하둡 3.3.4 버전 관련 내용과 다운로드 경로는 아래를 참고한다.

 

특정 경로에 hadoop 경로를 만들고, 다운로드한 하둡 파일의 압축을 해제한다.
$ mkdir ~/hadoop
$ cd ~/hadoop
$ wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
$ tar xvfz hadoop-3.3.4.tar.gz
$ exit
 
 

HDFS 설정

하둡 관련 설정은 HDFS, MapReduce, Yarn 등 여러가지가 있다.
데이터 파이프라인에서는 HDFS에 접근하는 것이 가장 중요하므로 HDFS 설정 파일만 활용한다.
 

HDFS 설정 파일 다운로드

호스트 환경에서 Hadoop 클러스터의 HDFS의 설정 파일을 다운로드한다.
아래 그림과 같이 HDFS - ACTIONS 메뉴로 이동해서 Download Client Configs 버튼을 클릭한다.
 
HDFS_CLIENT-configs.tar.gz 이름의 파일이 로컬에 다운로드 된다.
 

에지 노드에 HDFS 설정 파일 복사

다운로드한 설정 파일을 에지 노드 Docker 컨테이너 내부로 전달해야 한다.
컨테이너를 생성할 때 설정한 공유 볼륨을 활용한다.
 
공유 볼륨 경로에 다운로드한 파일을 복사하고, 컨테이너 내부의 하둡 설정 파일을 교체한다.
# 호스트에서 다운로드한 설정 파일을 Docker 공유 볼륨으로 복사
$ cp ~/Download/HDFS_CLIENT-configs.tar.gz /data2/docker/hadoop-edge/workspace

# 컨테이너 내부로 진입
$ docker exec -it -u hadoop hadoop-edge /bin/bash

$ mkdir ~/hadoop/conf
$ cd ~/hadoop/conf
$ cp /var/workspace/HDFS_CLIENT-configs.tar.gz ~/hadoop/conf
$ tar xvfz HDFS_CLIENT-configs.tar.gz
$ cp ~/hadoop/conf/*.xml ~/hadoop/hadoop-3.3.4/etc/hadoop/

 

 

HDFS 설정 파일 주요 내용

설정 파일에서 확인해야 하는 항목은 아래 내용을 참고한다.
해당 설정 값들은 Ambari의 UI에서 수정해야 한다.
 
core-site.xml - HDFS와의 연결 구성 관리
구분
설명
fs.defaultFS
hdfs://bdp01.bearpooh.com:8020
HDFS의 네임노드 주소로 설정
hadoop.proxyuser.<proxyuser>.hosts
*
외부에서 접근하는 사용자의 이름
(허용된 호스트 및 그룹 설정)
hadoop.proxyuser.<proxyuser>.groups: <proxyuser>
*
 
hdfs-site.xml - HDFS와 관련 설정 지정
구분
설명
dfs.permissions.enabled
false
접근제어 사용하면 true
dfs.namenode.name.dir
/data/hadoop/hdfs/namenode
네임노드의 디렉토리 경로
dfs.datanode.data.dir
/data/hadoop/hdfs/data
데이터노드의 디렉토리 경로
dfs.replication
2
HDFS의 파일 복제 개수 (기본 값은 3)
dfs.blocksize
134217728
HDFS 블록크기 (기본값 128MB)
dfs.webhdfs.enabled
true
웹 HDFS 활성화 여부 (기본값 true)
 
각 설정 값에 대한 내용은 아래 문서를 참고한다.
 
 

포트포워딩 설정

하둡 클러스터의 각 노드들은 VirtualBox 기반으로 구성했으므로, 포트포워딩 설정은 VirtualBox에서 진행한다.
 
하둡 노드 구성을 위해 가상 환경을 생성하는 방법은 아래 문서를 참고한다.
네임노드 (보통 1번) 가상 머신을 우클릭하고 Settings - Network - Adapter 1 탭으로 이동한다.
NAT 어댑터로 지정되어 있으며, 하단의 Advanced를 클릭하여 펼침 메뉴를 확대한다.
가장 하단에 있는 Port Forwarding을 클릭하면 아래와 같은 포트 포워딩 설정 화면이 출력된다.
 
아래와 같이 포트를 지정한다.

 

각 포트별 의미는 다음과 같다.
  • 8020 - hadoop 명령어가 하둡 클러스터의 네임노드와 통신
  • 50070 - 하둡 클러스터의 네임노드 UI (HDFS의 파일 탐색기도 사용 가능)
  • 50010 - 하둡 클러스터의 데이터 노드 통신에 사용 (네임노드의 IP 지정)
  • 8080 - Ambari의 웹 UI
 
IP는 192.168.56.201이며, 호스트 전용 어댑터로 구성한 첫번째 노드의 IP 주소이다.
다른 호스트에도 하둡 클러스터를 구성했다면 해당 서버에도 미리 설정해둔다.
 
 

환경 변수 추가

bash_profile에 환경 변수를 추가한다.
  • HADOOP_HOME 환경 변수 설정
  • PATH 환경 변수에 JAVA_HOME과 HADOOP_HOME 환경 변수 추가 (마지막에 /bin 추가 필요)
  • .bashrc가 실행되지 않은 경우 .bashrc 실행 (업데이트)
 
bash_profile에 적용한 이유는 SSH로 접근할 때도 해당 환경 변수를 사용하기 위함이다.
 
진행 과정은 아래 내용을 참고한다.
$ vi ~/.bash_profile

# 사용자 지정 환경 변수 및 PATH 설정 등을 추가
export HADOOP_HOME=/home/hadoop/hadoop/hadoop-3.3.4
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH

# .bashrc 파일 실행
if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

# 다른 초기화 스크립트 또는 설정 추가

$ source ~/.bash_profile
 

HDFS 정상 접근 확인

hadoop 명령어와 임의의 파일을 사용하여 HDFS에 정상 접근 되는지 확인한다.
 

호스트의 hosts에 에지 노드 추가

IP가 아닌 FQDN을 사용하기 위해 호스트의 hosts에 IP와 FQDN을 추가한다.
 
에지 노드가 아닌 호스트 환경임을 명심한다.
$ sudo vi /etc/hosts

192.168.56.201 bdp01.bearpooh.com
192.168.56.202 bdp02.bearpooh.com
192.168.56.203 bdp03.bearpooh.com
호스트의IP주소 bdp-edge.bearpooh.com
 

HDFS 접근 확인

아래 명령을 실행하여 정상적으로 파일 목록이 출력되는지 확인한다.
# 에지 노드 내부 진입
$ ssh -p 2222 hadoop@bdp-edge.bearpooh.com

# HDFS 루트 경로의 파일 목록 출력
$ hadoop fs -ls /
 
아래와 같이 목록이 출력되면 정상적으로 연결된 것이다.
 
이어서 임의 파일로 hadoop 업로드와 삭제 명령어를 테스트한다.
$ hadoop fs -copyFromLocal /path/to/file /target/hdfs/path/
$ hadoop fs -ls /target/hdfs/path/
$ hadoop fs -rm -r -f /target/hdfs/path/file/
# 휴지통에 백업하지 않고 바로 삭제를 원하는 경우
$ hadoop fs -rm -r -f -skipTrash /target/hdfs/path/file
 
아래와 같이 업로드와 삭제가 진행되면 정상이다.

 

 

MinIO 클라이언트

에지 노드는 MinIO와 HDFS를 중계하기 위해 구성한다.
MinIO 클라이언트 구성 방법은 아래 포스팅을 참고한다.