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.)