hadoop, zookeeper docker compose
docker compose
docker 구성
https://velog.io/@4e5ung/Hadoop-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EA%B5%AC%EC%84%B1
전체 구성과 동일 docker-compose 형태로 재정의
docker-compose
hadoop, zookeeper, ssh, 사용자 계정 등 기본 설치는 진행 이후 해당 이미지를 토대로 docker-compose 형태 생성, 총 5개의 docker-compose 필요
- docker-compose.yml
networks:
hadoop_network:
external:
name: hadoop_network
services:
hadoop:
container_name: hadoop_nn0
build:
context: hadoop/
volumes:
- type: bind
source: ./hadoop/hadoop_config/workers
target: /home/hduser/hadoop-3.3.1/etc/hadoop/workers
- type: bind
source: ./hadoop/hadoop_config/hdfs-site.xml
target: /home/hduser/hadoop-3.3.1/etc/hadoop/hdfs-site.xml
- type: bind
source: ./hadoop/hadoop_config/hadoop-env.sh
target: /home/hduser/hadoop-3.3.1/etc/hadoop/hadoop-env.sh
- type: bind
source: ./hadoop/hadoop_config/yarn-site.xml
target: /home/hduser/hadoop-3.3.1/etc/hadoop/yarn-site.xml
- type: bind
source: ./hadoop/hadoop_config/core-site.xml
target: /home/hduser/hadoop-3.3.1/etc/hadoop/core-site.xml
- type: bind
source: ./hadoop/zookeeper_config/myid
target: /home/zookeeper/data/myid
- type: bind
source: ./hadoop/zookeeper_config/zoo.cfg
target: /home/zookeeper/zookeeper-3.4.6/conf/zoo.cfg
- type: bind
source: /etc/localtime
target: /etc/localtime
- type: bind
source: ./hadoop/sshd_config
target: /etc/ssh/sshd_config
- type: bind
source: ./hadoop/startStep1.sh
target: /home/startStep1.sh
- type: bind
source: ./hadoop/startStep2.sh
target: /home/startStep2.sh
- type: bind
source: ./hadoop/startStep3.sh
target: /home/startStep3.sh
- type: bind
source: ./hadoop/startStep4.sh
target: /home/startStep4.sh
# - type: volume
# source: hadoop
# target: /home
working_dir: /home
extra_hosts:
- "test-nn1:172.19.0.3"
- "test-jn0:172.19.0.4"
- "test-dn0:172.19.0.5"
- "test-dn1:172.19.0.6"
hostname: test-nn0
ports:
- "51970:51070"
- "58920:58020"
# - "51070:51070"
#- "51022:22"
networks:
- hadoop_network
stdin_open: true
tty: true
-
container_name: 컨테이너 이름 설정 (Dockerfile 빌드가 우선 순위라 build 이후 compose를 통해 container name 이 설정 됨)
-
type: 형태로 바인드 해서 로컬과 도커 파일 연동
-
volume 의 경우 docker 자체 volume 으로 바인드 이후 해당 파일을 덮어쓰게 됨
(Dockerfile 빌드 -> dockercompose 바인드 이후 볼륨마운트-> Dockerfile 에 entry,cmd 실행) -
extra_hosts: 도커 호스트 설정
-
networks: 임의의 네트워크 설정(모든 도커를 하나의네트워크 안에 포함시키기 위해(단일pc))
-
startStep: 최대 4개로 구성되며
(entrypoint.sh : docker compose 이후 최초 실행되면서 ssh 서비스 실행 및 zookeeper 실행)
step1: ssh 키 복사 (모든 docker-compose에서 실행되어야함)
step2: journalnode 실행 (3개의 journalnode에서 실행)
step3: namenode 실행(2개의 namenode에서 실행, activate, standby 순으로)
step4: 전체 hadoop 서비스 종료 이후 재실행( activate namenode 에서 실행)
Dockerfile
- Dockerfile
FROM hadoop_image:latest
USER hduser
RUN rm -f /home/hduser/.ssh/id_rsa /home/hduser/.ssh/id_rsa.pub /home/hduser/.ssh/authorized_keys
RUN ssh-keygen -q -N "" -C "hduser@test-nn0" -t rsa -f /home/hduser/.ssh/id_rsa
RUN cp /home/hduser/.ssh/id_rsa.pub /home/hduser/.ssh/authorized_keys
USER root
COPY ./entrypoint.sh /home
RUN chmod 755 /home/entrypoint.sh
ENTRYPOINT ["sh", "/home/entrypoint.sh"]
- FROM: 기존에 만들어 놓은 도커 이미지
- USER: 계정 변경
- RUN: 명령어 실행(SSH 키 생성 - 임의로 comment 를 입력하여 복사 이후 해당 호스트 구분)
- ENTRYPOINT : ENTRYPOINT 및 CMD 명령어는 1개만 호출됨, entrypoint.sh 를 임의로 만들어서 실행 함으로써 2가지 이상의 서비스를 실행(ssh, zookeeper 실행)
github : https://github.com/4e5ung/hadoop_docker_compose
Author And Source
이 문제에 관하여(hadoop, zookeeper docker compose), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@4e5ung/hadoop-zookeeper-docker-compose저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)