| |
| # 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. |
| |
| |
| ## Presto docker setup is based on https://github.com/smizy/docker-presto |
| |
| ARG HADOOP_VERSION=2.8.4 |
| ARG HIVE_VERSION=2.3.3 |
| FROM apachehudi/hudi-hadoop_${HADOOP_VERSION}-base:latest as hadoop-base |
| |
| ARG PRESTO_VERSION=0.217 |
| |
| ENV PRESTO_VERSION ${PRESTO_VERSION} |
| ENV PRESTO_HOME /opt/presto-server-${PRESTO_VERSION} |
| ENV PRESTO_CONF_DIR ${PRESTO_HOME}/etc |
| ENV PRESTO_LOG_DIR /var/log/presto |
| ENV PRESTO_JVM_MAX_HEAP 2G |
| ENV PRESTO_QUERY_MAX_MEMORY 1GB |
| ENV PRESTO_QUERY_MAX_MEMORY_PER_NODE 512MB |
| ENV PRESTO_DISCOVERY_URI http://presto-coordinator-1:8090 |
| ENV PATH $PATH:${PRESTO_HOME}/bin |
| |
| RUN set -x \ |
| && DEBIAN_FRONTEND=noninteractive apt-get -yq update \ |
| && apt-get -yq install \ |
| bash \ |
| less \ |
| python \ |
| tar \ |
| wget \ |
| ## - hadoop native dependency lib |
| bzip2 \ |
| fts \ |
| fuse \ |
| libtirpc1 \ |
| libsnappy1v5 \ |
| zip \ |
| cron \ |
| gosu \ |
| && rm -rf /var/lib/apt/lists/* \ |
| ## presto-server |
| && wget -q -O - https://repo1.maven.org/maven2/com/facebook/presto/presto-server/${PRESTO_VERSION}/presto-server-${PRESTO_VERSION}.tar.gz \ |
| | tar -xzf - -C /opt/ \ |
| && mkdir -p /var/hoodie/ws/docker/hoodie/hadoop/prestobase/target/ \ |
| ## presto-client |
| && wget -q -O /usr/local/bin/presto https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/${PRESTO_VERSION}/presto-cli-${PRESTO_VERSION}-executable.jar \ |
| && chmod +x /usr/local/bin/presto \ |
| ## user/dir/permmsion |
| && adduser --shell /sbin/nologin --uid 1000 docker \ |
| && adduser --shell /sbin/nologin presto \ |
| && mkdir -p \ |
| ${PRESTO_CONF_DIR} \ |
| ${PRESTO_LOG_DIR} \ |
| && chmod -R 777 \ |
| ${PRESTO_HOME} \ |
| ${PRESTO_LOG_DIR} \ |
| ## cleanup |
| && rm -rf /tmp/nativelib |
| |
| COPY etc/ ${PRESTO_CONF_DIR}/ |
| COPY bin/* /usr/local/bin/ |
| COPY lib/* /usr/local/lib/ |
| RUN chmod +x /usr/local/bin/entrypoint.sh |
| |
| ADD target/ /var/hoodie/ws/docker/hoodie/hadoop/prestobase/target/ |
| ENV HUDI_PRESTO_BUNDLE /var/hoodie/ws/docker/hoodie/hadoop/prestobase/target/hudi-presto-bundle.jar |
| RUN cp ${HUDI_PRESTO_BUNDLE} ${PRESTO_HOME}/plugin/hive-hadoop2/ |
| |
| VOLUME ["${PRESTO_LOG_DIR}"] |
| |
| WORKDIR ${PRESTO_HOME} |
| |
| ENTRYPOINT ["entrypoint.sh"] |