4GPU Server
8GPU Server
10GPU Server
나라장터 등록제품
2GPU Workstation
4GPU Workstation
WEB Server
WAS Server
고성능 DB
타워형서버
나라장터 등록제품
1CPU Workstation
2CPU Workstation
나라장터 등록제품
Cloud
Open Source
NVIDIA
HCI
Backup
MLOps
프레임워크의 핵심 컴포넌트 중 하나로, 대용량 데이터를 분산 저장하는 분산 파일 시스템입니다. HDFS는 다음과 같은 특징을 가지고 있습니다:
HDFS는 주로 대규모 데이터 분석 및 처리를 위해 사용되며, Apache Hadoop 생태계에서 많은 다른 도구들과 통합되어 데이터 처리 및 분석 작업을 수행합니다.
저의 구성 환경 입니다. [node1, node2 동일]
OS:[VM]Ubuntu20.04 CLI
CPU:8core
DISK:50GB
DISK1:100GB
MEMORY:16GB
SSH 키교환
# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa ID@IP
docker 설치
# sudo apt update
# sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
# sudo apt update
# apt-cache policy docker-ce
# sudo apt install docker-ce
# curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# sudo apt install docker-compose
docker 상태를 확인해 줍니다.
# sudo systemctl status docker
docker-compose 확인
# docker-compose -v
# git clone https://github.com/big-data-europe/docker-hadoop.git
# cd docker-hadoop
# sudo vi docker-compose.yml
[파일 내의 services 섹션을 수정하여 클러스터 노드 수 및 다른 구성을 조정합니다. 예를 들어, namenode, datanode1, datanode2 등의 서비스를 확인하고 필요한 경우 수정합니다. ]
[아래는 예시로, datanode, datanode1로 2개의 datanode로 구성해 두었습니다.]
namenode:
image: bde2020/hadoop-namenode:2.0.0-hadoop3.2.1-java8
container_name: namenode
restart: always
ports:
- 9870:9870
- 9000:9000
volumes:
- hadoop_namenode:/hadoop/dfs/name
environment:
- CLUSTER_NAME=test
env_file:
- ./hadoop.env
datanode:
image: bde2020/hadoop-datanode:2.0.0-hadoop3.2.1-java8
container_name: datanode
restart: always
volumes:
- hadoop_datanode:/hadoop/dfs/data
environment:
SERVICE_PRECONDITION: "namenode:9870"
env_file:
- ./hadoop.env
datanode1:
image: bde2020/hadoop-datanode:2.0.0-hadoop3.2.1-java8
container_name: datanode
restart: always
volumes:
- hadoop_datanode:/hadoop/dfs/data
environment:
SERVICE_PRECONDITION: "namenode:9870"
env_file:
- ./hadoop.env
# vi /etc/docker/daemon.json
{
"data-root": "<신규_생성한_디렉터리>"
}
저같은 경우, 100GB를 /data로 마운트 해두었으므로 아래와 같이 설정 하였습니다.
{
"data-root": "/data"
}
# sudo systemctl daemon-reload
# sudo systemctl start docker.service
아래는 저장소가 바뀌었는지 확인하는 명령어 입니다.
# sudo docker info | grep -i "docker root dir"
WARNING: No swap limit support
Docker Root Dir: /data
# cd docker-hadoop
# sudo docker stack deploy -c docker-compose.yml hadoop
이 명령은 백그라운드에서 컨테이너를 실행합니다.
# sudo docker stack ps hadoop
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
xw8rpi0bib1r hadoop_datanode1.1 bde2020/hadoop-datanode:2.0.0-hadoop3.2.1-java8 node2 Running Running 20 minutes ago
olexn28o81nl hadoop_datanode.1 bde2020/hadoop-datanode:2.0.0-hadoop3.2.1-java8 node1 Running Running 20 minutes ago
eevd107ae5vn hadoop_historyserver.1 bde2020/hadoop-historyserver:2.0.0-hadoop3.2.1-java8 node1 Running Running 19 minutes ago
z936zksvot9t hadoop_namenode.1 bde2020/hadoop-namenode:2.0.0-hadoop3.2.1-java8 node2 Running Running 20 minutes ago
hhs73be43q09 hadoop_nodemanager1.1 bde2020/hadoop-nodemanager:2.0.0-hadoop3.2.1-java8 node2 Running Running 19 minutes ago
7myf76ile88o hadoop_resourcemanager.1 bde2020/hadoop-resourcemanager:2.0.0-hadoop3.2.1-java8 node1 Running
우선, 해당 namenode 컨테이너로 접속해 줍니다.
# sudo docker exec -ti [container ID] /bin/bash
아래는 예시 입니다.
# sudo docker exec -ti d20bda7bbb41 /bin/bash
TEST 방법 [HDFS에 간단한 텍스트 파일을 업로드해보기]
# hdfs dfs -mkdir /test [HDFS에 디렉토리를 생성]
# echo "Hello, HDFS!" > hello.txt [HDFS에 간단한 텍스트 파일을 업로드]
# hdfs dfs -copyFromLocal hello.txt /test/
# hdfs dfs -ls /test/ [업로드한 파일이 HDFS에 올바르게 저장되었는지 확인]
# hdfs dfs -copyToLocal /test/hello.txt . [HDFS에서 파일을 다운로드하여 내용을 확인]
# cat hello.txt
아래 이미지처럼, 웹 인터페이스에서도, 해당 텍스트 파일을 찾아볼 수 있습니다.
웹 인터페이스 확인 방법
http://localhost:9870
아래 이미지처럼 2개의 노드가 묶인 것을 확인할 수 있습니다.