4GPU Server
8GPU Server
HGX Server
2GPU Workstation
4GPU Workstation
Compact AI
10GPU Server
Cloud
Open Source
NVIDIA
HCI
Backup
MLOps
HW/SW 유지보수
AS
저의 구성 환경 입니다. [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
GitHub에서 big-data-europe Hadoop Docker 저장소를 복제합니다.
# git clone https://github.com/big-data-europe/docker-hadoop.git
# cd docker-hadoop
docker-compose.ymldocker-compose.yml 파일을 열어서 클러스터 구성을 조정합니다. 다음 명령어를 사용하여 편집합니다.
# 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
SSH 키교환
# 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
터미널에서 Docker Compose를 사용하여 클러스터를 실행합니다.
# 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개의 노드가 묶인 것을 확인할 수 있습니다.
이전글
