blob: c6784a1453a46dd63cf7d1026487ee577f20c441 [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
FROM openjdk:8
WORKDIR /root/
ARG PREBUILD=true
ARG HADOOP_VERSION=2.7.7
ARG HIVE_VERSION=2.3.3
ENV BASE_URL='https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename='
ENV HADOOP_HOME='/usr/local/hadoop'
ENV HIVE_HOME='/usr/local/hive'
ENV HIVEMALL_PATH='/opt/hivemall'
ENV HADOOP_OPTS=' \
-Dsystem:java.io.tmpdir=/tmp \
-Dsystem:user.name=root \
-Dderby.stream.error.file=/root/derby.log'
ENV PATH="${HADOOP_HOME}/bin:${HIVE_HOME}/bin:${PATH}"
ENV JAVA_HOME='/usr/lib/jvm/java-8-openjdk-amd64'
COPY . ${HIVEMALL_PATH}/
RUN set -eux && \
apt-get update && \
apt-get install -y --no-install-recommends openssh-server maven g++ make ruby && \
curl -sL https://deb.nodesource.com/setup_10.x | bash - && \
apt-get install -y nodejs && \
npm install -g gitbook-cli && \
\
wget ${BASE_URL}hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz -O - \
| tar xz && \
mv hadoop-${HADOOP_VERSION} ${HADOOP_HOME} && \
sed -i -e 's!${JAVA_HOME}!'"${JAVA_HOME}!" ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh && \
ssh-keygen -q -P '' -f ~/.ssh/id_rsa && \
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && \
echo 'host *\n StrictHostKeyChecking no' > ~/.ssh/config && \
mv ${HIVEMALL_PATH}/resources/docker/etc/hadoop/*.xml ${HADOOP_HOME}/etc/hadoop && \
hdfs namenode -format && \
\
wget ${BASE_URL}hive/hive-${HIVE_VERSION}/apache-hive-${HIVE_VERSION}-bin.tar.gz -O - \
| tar xz && \
mv apache-hive-${HIVE_VERSION}-bin ${HIVE_HOME} && \
cat ${HIVE_HOME}/conf/hive-default.xml.template \
| sed -e 's!databaseName=metastore_db!databaseName=/root/metastore_db!' \
> ${HIVE_HOME}/conf/hive-site.xml && \
\
cd ${HIVEMALL_PATH} && \
HIVEMALL_VERSION=`cat VERSION` && \
\
(if ${PREBUILD}; then \
cd ${HIVEMALL_PATH} && bin/build.sh; \
fi) && \
\
mkdir -p /root/bin /root/hivemall && \
find ${HIVEMALL_PATH}/resources/docker/home/bin -mindepth 1 -maxdepth 1 \
-exec sh -c 'f={} && ln -s $f /root/bin/${f##*/}' \; && \
ln -s ${HIVEMALL_PATH}/resources/docker/home/.hiverc /root && \
ln -s ${HIVEMALL_PATH}/resources/ddl/define-all.hive /root/hivemall/define-all.hive && \
ln -s ${HIVEMALL_PATH}/target/hivemall-all-${HIVEMALL_VERSION}.jar \
/root/hivemall/hivemall-all.jar && \
rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/* /root/.m2/* /root/.npm/*
VOLUME ["/opt/hivemall/", "/root/data/"]
EXPOSE 8088 19888 50070
CMD ["sh", "-c", "./bin/init.sh && bash"]