*Hadoop3 를 Docker container에 올려서 실행하는 방법은 아래 링크 참고.
http://eyeballs.tistory.com/14
Hadoop 3 깃허브에서 만든 Dockerfile 을 해부해보는 시간을 갖겠습니다.
몇몇 명령어들은 커스터마이징 되어 있기 때문에 본래의 Dockerfile과 다릅니다.
*참고로 아래 Dockerfile 을 그대로 build 하면 돌아가지 않습니다.
제대로 된 Dockerfile은 가장 위에 있는 14번 글 안에 있습니다.
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
|
'Hadoop' 카테고리의 다른 글
[hadoop3] 하둡 3 버전의 example jar 위치 (0) | 2018.11.26 |
---|---|
[hadoop] Error: Could not find or load main class 에러 (0) | 2018.11.26 |
[Hadoop3] 하둡3 Docker container 로 올려서 실행하기 (0) | 2018.11.03 |
Hadoop-MongoDB Connector 사용하기 (0) | 2018.09.06 |
[Hadoop] Ubuntu 에서 eclipse + maven + hadoop 세팅 및 word count jar 파일 만들기 (0) | 2018.09.04 |