# Creates pseudo distributed hadoop 3.0.0-alpha2-SNAPSHOT on Ubuntu 16.04 # # docker build -t sequenceiq/hadoop-ubuntu:3.0.0-alpha2-SNAPSHOT . FROM sequenceiq/pam:ubuntu-14.04 MAINTAINER SequenceIQ USER root # install dev tools RUN apt-get update RUN apt-get install -y curl tar sudo openssh-server openssh-client rsync # passwordless ssh RUN ssh-keygen -q -N "" -t rsa -f /root/.ssh/id_rsa RUN cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys # java COPY jdk-8u66-linux-x64.tar.gz /usr/local RUN cd /usr/local && ls RUN cd /usr/local && tar -xzf jdk-8u66-linux-x64.tar.gz RUN cd /usr/local && mv jdk1.8.0_66 default RUN cd /usr/local/default && ls ENV JAVA_HOME /usr/local/default ENV PATH $PATH:$JAVA_HOME/bin RUN ln -s $JAVA_HOME/bin/java /usr/bin/java # hadoop ADD hadoop-3.0.0-alpha2-SNAPSHOT.tar.gz /usr/local RUN cd /usr/local && ls RUN cd /usr/local && ln -s ./hadoop-3.0.0-alpha2-SNAPSHOT hadoop ENV HADOOP_HOME /usr/local/hadoop ENV HADOOP_PREFIX /usr/local/hadoop ENV HADOOP_COMMON_HOME /usr/local/hadoop ENV HADOOP_HDFS_HOME /usr/local/hadoop ENV HADOOP_MAPRED_HOME /usr/local/hadoop ENV HADOOP_YARN_HOME /usr/local/hadoop ENV HADOOP_CONF_DIR /usr/local/hadoop/etc/hadoop ENV YARN_CONF_DIR $HADOOP_PREFIX/etc/hadoop RUN echo "export JAVA_HOME=/usr/local/default" >> $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh RUN echo "export HADOOP_PREFIX=/usr/local/hadoop" >> $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh RUN echo "export HADOOP_HOME=/usr/local/hadoop" >> $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh RUN echo "export JAVA_HOME=/usr/local/default" >> $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh RUN echo "export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop/" >> $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh #RUN . $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh RUN mkdir $HADOOP_PREFIX/input RUN cp $HADOOP_PREFIX/etc/hadoop/*.xml $HADOOP_PREFIX/input # pseudo distributed ADD core-site.xml.template $HADOOP_PREFIX/etc/hadoop/core-site.xml.template RUN sed s/HOSTNAME/localhost/ /usr/local/hadoop/etc/hadoop/core-site.xml.template > /usr/local/hadoop/etc/hadoop/core-site.xml ADD hdfs-site.xml $HADOOP_PREFIX/etc/hadoop/hdfs-site.xml ADD mapred-site.xml $HADOOP_PREFIX/etc/hadoop/mapred-site.xml ADD yarn-site.xml $HADOOP_PREFIX/etc/hadoop/yarn-site.xml RUN rm -rf /tmp/hadoop-root RUN $HADOOP_PREFIX/bin/hdfs namenode -format ADD ssh_config /root/.ssh/config RUN chmod 600 /root/.ssh/config RUN chown root:root /root/.ssh/config ADD bootstrap.sh /etc/bootstrap.sh RUN chown root:root /etc/bootstrap.sh RUN chmod 700 /etc/bootstrap.sh # Adding user yarn RUN mkdir /home/yarn RUN groupadd hadoop RUN useradd yarn -G hadoop RUN chown yarn:hadoop /home/yarn USER yarn WORKDIR /home/yarn # password less for yarn RUN ssh-keygen -q -N "" -t rsa -f /home/yarn/.ssh/id_rsa RUN cp /home/yarn/.ssh/id_rsa.pub /home/yarn/.ssh/authorized_keys USER root ENV BOOTSTRAP /etc/bootstrap.sh # workingaround docker.io build error RUN ls -la /usr/local/hadoop/etc/hadoop/*-env.sh RUN chmod +x /usr/local/hadoop/etc/hadoop/*-env.sh RUN ls -la /usr/local/hadoop/etc/hadoop/*-env.sh # fix the 254 error code RUN sed -i "/^[^#]*UsePAM/ s/.*/#&/" /etc/ssh/sshd_config RUN echo "UsePAM no" >> /etc/ssh/sshd_config RUN echo "Port 2122" >> /etc/ssh/sshd_config CMD ["/etc/bootstrap.sh", "-d"] # Hdfs ports EXPOSE 50010 50020 50070 50075 50090 8020 9000 # Mapred ports EXPOSE 10020 19888 #Yarn ports EXPOSE 8030 8031 8032 8033 8040 8042 8088 #Other ports EXPOSE 49707 2122