FROM ubuntu:latest
ENV DEBIAN_FRONTEND noninteractive ENV HADOOP_HOME /opt/hadoop ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
RUN apt-get update RUN apt-get install -y --reinstall build-essential #컴파일을 하기 위해 필요한 것들(gcc, make 등) RUN apt-get install -y ssh RUN apt-get install -y rsync RUN apt-get install -y vim RUN apt-get install -y net-tools RUN apt-get install -y openjdk-8-jdk #hadoop3 에서 필수적인 jdk8 을 설치. RUN apt-get install -y python2.7-dev #python 2.7 로 설치. RUN apt-get install -y libxml2-dev RUN apt-get install -y libkrb5-dev RUN apt-get install -y libffi-dev RUN apt-get install -y libssl-dev RUN apt-get install -y libldap2-dev RUN apt-get install -y python-lxml RUN apt-get install -y libxslt1-dev RUN apt-get install -y libgmp3-dev RUN apt-get install -y libsasl2-dev RUN apt-get install -y libsqlite3-dev RUN apt-get install -y libmysqlclient-dev
RUN \ if [ ! -e /usr/bin/python ]; then ln -s /usr/bin/python2.7 /usr/bin/python; fi #/usr/bin/python 파일이 있으면 /usr/bin/python2.7을 /usr/bin/python 으로 바로가기 할 수 있도록 심볼릭 링크를 만든다.
RUN \ wget https://archive.apache.org/dist/hadoop/core/hadoop-3.1.1/hadoop-3.1.1.tar.gz && \ tar -xzf hadoop-3.1.1.tar.gz && \ mv hadoop-3.1.1 $HADOOP_HOME && \ for user in hadoop hdfs yarn mapred; do \ useradd -U -M -d /opt/hadoop/ --shell /bin/bash ${user}; \ #hadoop, hdfs, yarn, mapred 라는 이름으로 사용자를 등록한다. home dir는 /opt/hadoop/ 이며 계정의 로그인쉘은 /bin/bash 이다. done && \ for user in root hdfs yarn mapred; do \ usermod -G hadoop ${user}; \ #위에서 만든 사용자들과 root를 hadoop 이란 그룹으로 묶는다. done && \ echo "export JAVA_HOME=$JAVA_HOME" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh && \ #각종 환경 변수들을 hadoop-env.sh에 넣는다. echo "export HDFS_DATANODE_USER=root" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh && \ # echo "export HDFS_DATANODE_SECURE_USER=hdfs" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh && \ echo "export HDFS_NAMENODE_USER=root" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh && \ echo "export HDFS_SECONDARYNAMENODE_USER=root" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh && \ echo "export YARN_RESOURCEMANAGER_USER=root" >> $HADOOP_HOME/etc/hadoop/yarn-env.sh && \ echo "export YARN_NODEMANAGER_USER=root" >> $HADOOP_HOME/etc/hadoop/yarn-env.sh && \ echo "PATH=$PATH:$HADOOP_HOME/bin" >> ~/.bashrc
RUN \ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa && \ #ssh를 위한 key를 생성한다. pw는 ''. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && \ #생성한 키를 저장한다. chmod 0600 ~/.ssh/authorized_keys #권한을 사용자만 읽고 쓸 수 있도록 바꾼다.
ADD *xml $HADOOP_HOME/etc/hadoop/
ADD ssh_config /root/.ssh/config
ADD start-all.sh start-all.sh
EXPOSE 8088 9870 9864 19888 8042 8888
CMD bash start-all.sh #Docker Container가 시작되었을 때 이 명령어를 실행하여 start all 한다.
ENV DEBIAN_FRONTEND teletype |