Docker Container Build and Run setup with foundations for adding docker integration tests. Docker images built with Hadoop 2.8.4 Hive 2.3.3 and Spark 2.3.1 and published to docker-hub
Look at quickstart document for how to setup docker and run demo
This commit is contained in:
committed by
vinoth chandar
parent
9710b5a3a6
commit
f3418e4718
45
docker/hoodie/hadoop/base/Dockerfile
Normal file
45
docker/hoodie/hadoop/base/Dockerfile
Normal file
@@ -0,0 +1,45 @@
|
||||
FROM frolvlad/alpine-oraclejdk8
|
||||
MAINTAINER Hoodie
|
||||
USER root
|
||||
|
||||
# Default to UTF-8 file.encoding
|
||||
ENV LANG C.UTF-8
|
||||
|
||||
# Updating & Installing packages
|
||||
RUN apk add net-tools curl bash perl procps
|
||||
|
||||
ARG HADOOP_VERSION=2.8.4
|
||||
ARG HADOOP_URL=https://www.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz
|
||||
ENV HADOOP_VERSION ${HADOOP_VERSION}
|
||||
ENV HADOOP_URL ${HADOOP_URL}
|
||||
|
||||
RUN set -x \
|
||||
&& echo "Fetch URL2 is : ${HADOOP_URL}" \
|
||||
&& curl -fSL "${HADOOP_URL}" -o /tmp/hadoop.tar.gz \
|
||||
&& curl -fSL "${HADOOP_URL}.asc" -o /tmp/hadoop.tar.gz.asc \
|
||||
&& mkdir -p /opt/hadoop-$HADOOP_VERSION/logs \
|
||||
&& tar -xvf /tmp/hadoop.tar.gz -C /opt/ \
|
||||
&& rm /tmp/hadoop.tar.gz* \
|
||||
&& ln -s /opt/hadoop-$HADOOP_VERSION/etc/hadoop /etc/hadoop \
|
||||
&& cp /etc/hadoop/mapred-site.xml.template /etc/hadoop/mapred-site.xml \
|
||||
&& mkdir /hadoop-data
|
||||
|
||||
ENV HADOOP_PREFIX=/opt/hadoop-$HADOOP_VERSION
|
||||
ENV HADOOP_CONF_DIR=/etc/hadoop
|
||||
ENV MULTIHOMED_NETWORK=1
|
||||
ENV HADOOP_HOME=${HADOOP_PREFIX}
|
||||
ENV HADOOP_INSTALL=${HADOOP_HOME}
|
||||
ENV USER=root
|
||||
ENV PATH /usr/bin:/bin:$HADOOP_PREFIX/bin/:$PATH
|
||||
|
||||
# Exposing a union of ports across hadoop versions
|
||||
# Well known ports including ssh
|
||||
EXPOSE 0-1024 4040 7000-10100 5000-5100 50000-50200 58188 58088 58042
|
||||
|
||||
ADD entrypoint.sh /entrypoint.sh
|
||||
ADD export_container_ip.sh /usr/bin/
|
||||
RUN chmod a+x /usr/bin/export_container_ip.sh \
|
||||
&& chmod a+x /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
|
||||
|
||||
91
docker/hoodie/hadoop/base/entrypoint.sh
Normal file
91
docker/hoodie/hadoop/base/entrypoint.sh
Normal file
@@ -0,0 +1,91 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
#######################################################################################
|
||||
## COPIED FROM ##
|
||||
## https://github.com/big-data-europe/docker-hadoop/blob/master/base/entrypoint.sh ##
|
||||
# ##
|
||||
#######################################################################################
|
||||
|
||||
# Set some sensible defaults
|
||||
export CORE_CONF_fs_defaultFS=${CORE_CONF_fs_defaultFS:-hdfs://`hostname -f`:8020}
|
||||
|
||||
function addProperty() {
|
||||
local path=$1
|
||||
local name=$2
|
||||
local value=$3
|
||||
|
||||
local entry="<property><name>$name</name><value>${value}</value></property>"
|
||||
local escapedEntry=$(echo $entry | sed 's/\//\\\//g')
|
||||
sed -i "/<\/configuration>/ s/.*/${escapedEntry}\n&/" $path
|
||||
}
|
||||
|
||||
function configure() {
|
||||
local path=$1
|
||||
local module=$2
|
||||
local envPrefix=$3
|
||||
|
||||
local var
|
||||
local value
|
||||
|
||||
echo "Configuring $module"
|
||||
for c in `printenv | perl -sne 'print "$1 " if m/^${envPrefix}_(.+?)=.*/' -- -envPrefix=$envPrefix`; do
|
||||
name=`echo ${c} | perl -pe 's/___/-/g; s/__/@/g; s/_/./g; s/@/_/g;'`
|
||||
var="${envPrefix}_${c}"
|
||||
value=${!var}
|
||||
echo " - Setting $name=$value"
|
||||
addProperty /etc/hadoop/$module-site.xml $name "$value"
|
||||
done
|
||||
}
|
||||
|
||||
configure /etc/hadoop/core-site.xml core CORE_CONF
|
||||
configure /etc/hadoop/hdfs-site.xml hdfs HDFS_CONF
|
||||
configure /etc/hadoop/yarn-site.xml yarn YARN_CONF
|
||||
configure /etc/hadoop/httpfs-site.xml httpfs HTTPFS_CONF
|
||||
configure /etc/hadoop/kms-site.xml kms KMS_CONF
|
||||
|
||||
if [ "$MULTIHOMED_NETWORK" = "1" ]; then
|
||||
echo "Configuring for multihomed network"
|
||||
|
||||
# HDFS
|
||||
addProperty /etc/hadoop/hdfs-site.xml dfs.namenode.rpc-bind-host 0.0.0.0
|
||||
addProperty /etc/hadoop/hdfs-site.xml dfs.namenode.servicerpc-bind-host 0.0.0.0
|
||||
addProperty /etc/hadoop/hdfs-site.xml dfs.namenode.http-bind-host 0.0.0.0
|
||||
addProperty /etc/hadoop/hdfs-site.xml dfs.namenode.https-bind-host 0.0.0.0
|
||||
addProperty /etc/hadoop/hdfs-site.xml dfs.client.use.datanode.hostname true
|
||||
addProperty /etc/hadoop/hdfs-site.xml dfs.datanode.use.datanode.hostname true
|
||||
|
||||
# YARN
|
||||
addProperty /etc/hadoop/yarn-site.xml yarn.resourcemanager.bind-host 0.0.0.0
|
||||
addProperty /etc/hadoop/yarn-site.xml yarn.nodemanager.bind-host 0.0.0.0
|
||||
addProperty /etc/hadoop/yarn-site.xml yarn.nodemanager.bind-host 0.0.0.0
|
||||
addProperty /etc/hadoop/yarn-site.xml yarn.timeline-service.bind-host 0.0.0.0
|
||||
|
||||
# MAPRED
|
||||
addProperty /etc/hadoop/mapred-site.xml yarn.nodemanager.bind-host 0.0.0.0
|
||||
fi
|
||||
|
||||
if [ -n "$GANGLIA_HOST" ]; then
|
||||
mv /etc/hadoop/hadoop-metrics.properties /etc/hadoop/hadoop-metrics.properties.orig
|
||||
mv /etc/hadoop/hadoop-metrics2.properties /etc/hadoop/hadoop-metrics2.properties.orig
|
||||
|
||||
for module in mapred jvm rpc ugi; do
|
||||
echo "$module.class=org.apache.hadoop.metrics.ganglia.GangliaContext31"
|
||||
echo "$module.period=10"
|
||||
echo "$module.servers=$GANGLIA_HOST:8649"
|
||||
done > /etc/hadoop/hadoop-metrics.properties
|
||||
|
||||
for module in namenode datanode resourcemanager nodemanager mrappmaster jobhistoryserver; do
|
||||
echo "$module.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31"
|
||||
echo "$module.sink.ganglia.period=10"
|
||||
echo "$module.sink.ganglia.supportsparse=true"
|
||||
echo "$module.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both"
|
||||
echo "$module.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40"
|
||||
echo "$module.sink.ganglia.servers=$GANGLIA_HOST:8649"
|
||||
done > /etc/hadoop/hadoop-metrics2.properties
|
||||
fi
|
||||
|
||||
# Save Container IP in ENV variable
|
||||
/usr/bin/export_container_ip.sh
|
||||
|
||||
exec "$@"
|
||||
13
docker/hoodie/hadoop/base/export_container_ip.sh
Executable file
13
docker/hoodie/hadoop/base/export_container_ip.sh
Executable file
@@ -0,0 +1,13 @@
|
||||
interfaces=( "en0" "eth0" )
|
||||
|
||||
ipAddr=""
|
||||
for interface in "${interfaces[@]}"
|
||||
do
|
||||
ipAddr=`ifconfig $interface | grep -Eo 'inet (addr:)?([0-9]+\.){3}[0-9]+' | grep -Eo '([0-9]+\.){3}[0-9]+' | grep -v '127.0.0.1' | head`
|
||||
if [ -n "$ipAddr" ]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Container IP is set to : $ipAddr"
|
||||
export MY_CONTAINER_IP=$ipAddr
|
||||
90
docker/hoodie/hadoop/base/pom.xml
Normal file
90
docker/hoodie/hadoop/base/pom.xml
Normal file
@@ -0,0 +1,90 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (c) 2016 Uber Technologies, Inc. (hoodie-dev-group@uber.com)
|
||||
~
|
||||
~ Licensed 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.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>hoodie-hadoop-docker</artifactId>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<version>0.4.5-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>pom</packaging>
|
||||
<artifactId>hoodie-hadoop-base-docker</artifactId>
|
||||
|
||||
<description>Base Docker Image with Hoodie</description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<checkstyle.skip>true</checkstyle.skip>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<artifactId>hoodie-hadoop-docker</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>hoodie</finalName>
|
||||
<plugins>
|
||||
<!-- Build Docker image -->
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
<version>${dockerfile.maven.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>tag-latest</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-base</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>latest</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>tag-version</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-base</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>${project.version}</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
14
docker/hoodie/hadoop/datanode/Dockerfile
Normal file
14
docker/hoodie/hadoop/datanode/Dockerfile
Normal file
@@ -0,0 +1,14 @@
|
||||
ARG HADOOP_VERSION=2.8.4
|
||||
ARG HADOOP_DN_PORT=50075
|
||||
FROM varadarb/hudi-hadoop_${HADOOP_VERSION}-base:latest
|
||||
|
||||
ENV HADOOP_DN_PORT ${HADOOP_DN_PORT}
|
||||
|
||||
ENV HDFS_CONF_dfs_datanode_data_dir=file:///hadoop/dfs/data
|
||||
RUN mkdir -p /hadoop/dfs/data
|
||||
VOLUME /hadoop/dfs/data
|
||||
|
||||
ADD run_dn.sh /run_dn.sh
|
||||
RUN chmod a+x /run_dn.sh
|
||||
|
||||
CMD ["/run_dn.sh"]
|
||||
89
docker/hoodie/hadoop/datanode/pom.xml
Normal file
89
docker/hoodie/hadoop/datanode/pom.xml
Normal file
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (c) 2016 Uber Technologies, Inc. (hoodie-dev-group@uber.com)
|
||||
~
|
||||
~ Licensed 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.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>hoodie-hadoop-docker</artifactId>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<version>0.4.5-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>pom</packaging>
|
||||
<artifactId>hoodie-hadoop-datanode-docker</artifactId>
|
||||
|
||||
<description>Base Docker Image with Hoodie</description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<checkstyle.skip>true</checkstyle.skip>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<artifactId>hoodie-hadoop-base-docker</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<!-- Build Docker image -->
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
<version>${dockerfile.maven.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>tag-latest</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-datanode</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>latest</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>tag-version</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-datanode</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>${project.version}</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
9
docker/hoodie/hadoop/datanode/run_dn.sh
Normal file
9
docker/hoodie/hadoop/datanode/run_dn.sh
Normal file
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
datadir=`echo $HDFS_CONF_dfs_datanode_data_dir | perl -pe 's#file://##'`
|
||||
if [ ! -d $datadir ]; then
|
||||
echo "Datanode data directory not found: $datadir"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
$HADOOP_PREFIX/bin/hdfs --config $HADOOP_CONF_DIR datanode
|
||||
14
docker/hoodie/hadoop/historyserver/Dockerfile
Normal file
14
docker/hoodie/hadoop/historyserver/Dockerfile
Normal file
@@ -0,0 +1,14 @@
|
||||
ARG HADOOP_VERSION=2.8.4
|
||||
ARG HADOOP_HISTORY_PORT=8188
|
||||
FROM varadarb/hudi-hadoop_${HADOOP_VERSION}-base:latest
|
||||
|
||||
ENV HADOOP_HISTORY_PORT ${HADOOP_HISTORY_PORT}
|
||||
|
||||
ENV YARN_CONF_yarn_timeline___service_leveldb___timeline___store_path=/hadoop/yarn/timeline
|
||||
RUN mkdir -p /hadoop/yarn/timeline
|
||||
VOLUME /hadoop/yarn/timeline
|
||||
|
||||
ADD run_history.sh /run_history.sh
|
||||
RUN chmod a+x /run_history.sh
|
||||
|
||||
CMD ["/run_history.sh"]
|
||||
89
docker/hoodie/hadoop/historyserver/pom.xml
Normal file
89
docker/hoodie/hadoop/historyserver/pom.xml
Normal file
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (c) 2016 Uber Technologies, Inc. (hoodie-dev-group@uber.com)
|
||||
~
|
||||
~ Licensed 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.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>hoodie-hadoop-docker</artifactId>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<version>0.4.5-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>pom</packaging>
|
||||
<artifactId>hoodie-hadoop-history-docker</artifactId>
|
||||
|
||||
<description>Base Docker Image with Hoodie</description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<checkstyle.skip>true</checkstyle.skip>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<artifactId>hoodie-hadoop-base-docker</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<!-- Build Docker image -->
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
<version>${dockerfile.maven.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>tag-latest</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-history</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>latest</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>tag-version</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-history</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>${project.version}</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
3
docker/hoodie/hadoop/historyserver/run_history.sh
Normal file
3
docker/hoodie/hadoop/historyserver/run_history.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
$HADOOP_PREFIX/bin/yarn --config $HADOOP_CONF_DIR historyserver
|
||||
51
docker/hoodie/hadoop/hive_base/Dockerfile
Normal file
51
docker/hoodie/hadoop/hive_base/Dockerfile
Normal file
@@ -0,0 +1,51 @@
|
||||
ARG HADOOP_VERSION=2.8.4
|
||||
FROM varadarb/hudi-hadoop_${HADOOP_VERSION}-base:latest
|
||||
|
||||
ENV HIVE_HOME /opt/hive
|
||||
ENV PATH $HIVE_HOME/bin:$PATH
|
||||
ENV HADOOP_HOME /opt/hadoop-$HADOOP_VERSION
|
||||
|
||||
WORKDIR /opt
|
||||
|
||||
ARG HIVE_VERSION=2.3.3
|
||||
ARG HIVE_URL=https://archive.apache.org/dist/hive/hive-$HIVE_VERSION/apache-hive-$HIVE_VERSION-bin.tar.gz
|
||||
ENV HIVE_VERSION ${HIVE_VERSION}
|
||||
ENV HIVE_URL ${HIVE_URL}
|
||||
|
||||
#Install Hive MySQL, PostgreSQL JDBC
|
||||
RUN echo "Hive URL is :${HIVE_URL}" && wget ${HIVE_URL} -O hive.tar.gz && \
|
||||
tar -xzvf hive.tar.gz && mv *hive*-bin hive && \
|
||||
ln -s /usr/share/java/mysql-connector-java.jar $HIVE_HOME/lib/mysql-connector-java.jar && \
|
||||
wget https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar -O $HIVE_HOME/lib/postgresql-jdbc.jar && \
|
||||
rm hive.tar.gz && mkdir -p /var/hoodie/ws/docker/hoodie/hadoop/hive_base/target/
|
||||
|
||||
#Spark should be compiled with Hive to be able to use it
|
||||
#hive-site.xml should be copied to $SPARK_HOME/conf folder
|
||||
|
||||
#Custom configuration goes here
|
||||
ADD conf/hive-site.xml $HADOOP_CONF_DIR
|
||||
ADD conf/beeline-log4j2.properties $HIVE_HOME/conf
|
||||
ADD conf/hive-env.sh $HIVE_HOME/conf
|
||||
ADD conf/hive-exec-log4j2.properties $HIVE_HOME/conf
|
||||
ADD conf/hive-log4j2.properties $HIVE_HOME/conf
|
||||
ADD conf/ivysettings.xml $HIVE_HOME/conf
|
||||
ADD conf/llap-daemon-log4j2.properties $HIVE_HOME/conf
|
||||
|
||||
# Setup Hoodie Library jars
|
||||
ADD target/ /var/hoodie/ws/docker/hoodie/hadoop/hive_base/target/
|
||||
|
||||
ENV HUDI_HADOOP_BUNDLE=/var/hoodie/ws/docker/hoodie/hadoop/hive_base/target/hoodie-hadoop-mr-bundle.jar
|
||||
ENV HUDI_HIVE_BUNDLE=/var/hoodie/ws/docker/hoodie/hadoop/hive_base/target/hoodie-hive-bundle.jar
|
||||
ENV HUDI_SPARK_BUNDLE=/var/hoodie/ws/docker/hoodie/hadoop/hive_base/target/hoodie-spark-bundle.jar
|
||||
ENV HUDI_UTILITIES_BUNDLE=/var/hoodie/ws/docker/hoodie/hadoop/hive_base/target/hoodie-utilities.jar
|
||||
|
||||
COPY startup.sh /usr/local/bin/
|
||||
RUN chmod +x /usr/local/bin/startup.sh
|
||||
|
||||
COPY entrypoint.sh /usr/local/bin/
|
||||
RUN chmod +x /usr/local/bin/entrypoint.sh
|
||||
|
||||
ENV PATH $HIVE_HOME/bin/:$PATH
|
||||
|
||||
ENTRYPOINT ["entrypoint.sh"]
|
||||
CMD startup.sh
|
||||
@@ -0,0 +1,45 @@
|
||||
# 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.
|
||||
|
||||
status = INFO
|
||||
name = BeelineLog4j2
|
||||
packages = org.apache.hadoop.hive.ql.log
|
||||
|
||||
# list of properties
|
||||
property.hive.log.level = WARN
|
||||
property.hive.root.logger = console
|
||||
|
||||
# list of all appenders
|
||||
appenders = console
|
||||
|
||||
# console appender
|
||||
appender.console.type = Console
|
||||
appender.console.name = console
|
||||
appender.console.target = SYSTEM_ERR
|
||||
appender.console.layout.type = PatternLayout
|
||||
appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} [%t]: %p %c{2}: %m%n
|
||||
|
||||
# list of all loggers
|
||||
loggers = HiveConnection
|
||||
|
||||
# HiveConnection logs useful info for dynamic service discovery
|
||||
logger.HiveConnection.name = org.apache.hive.jdbc.HiveConnection
|
||||
logger.HiveConnection.level = INFO
|
||||
|
||||
# root logger
|
||||
rootLogger.level = ${sys:hive.log.level}
|
||||
rootLogger.appenderRefs = root
|
||||
rootLogger.appenderRef.root.ref = ${sys:hive.root.logger}
|
||||
54
docker/hoodie/hadoop/hive_base/conf/hive-env.sh
Normal file
54
docker/hoodie/hadoop/hive_base/conf/hive-env.sh
Normal file
@@ -0,0 +1,54 @@
|
||||
# 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.
|
||||
|
||||
# Set Hive and Hadoop environment variables here. These variables can be used
|
||||
# to control the execution of Hive. It should be used by admins to configure
|
||||
# the Hive installation (so that users do not have to set environment variables
|
||||
# or set command line parameters to get correct behavior).
|
||||
#
|
||||
# The hive service being invoked (CLI/HWI etc.) is available via the environment
|
||||
# variable SERVICE
|
||||
|
||||
|
||||
# Hive Client memory usage can be an issue if a large number of clients
|
||||
# are running at the same time. The flags below have been useful in
|
||||
# reducing memory usage:
|
||||
#
|
||||
# if [ "$SERVICE" = "cli" ]; then
|
||||
# if [ -z "$DEBUG" ]; then
|
||||
# export HADOOP_OPTS="$HADOOP_OPTS -XX:NewRatio=12 -Xms10m -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:+UseParNewGC -XX:-UseGCOverheadLimit"
|
||||
# else
|
||||
# export HADOOP_OPTS="$HADOOP_OPTS -XX:NewRatio=12 -Xms10m -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:-UseGCOverheadLimit"
|
||||
# fi
|
||||
# fi
|
||||
|
||||
# The heap size of the jvm stared by hive shell script can be controlled via:
|
||||
#
|
||||
# export HADOOP_HEAPSIZE=1024
|
||||
#
|
||||
# Larger heap size may be required when running queries over large number of files or partitions.
|
||||
# By default hive shell scripts use a heap size of 256 (MB). Larger heap size would also be
|
||||
# appropriate for hive server (hwi etc).
|
||||
|
||||
|
||||
# Set HADOOP_HOME to point to a specific hadoop install directory
|
||||
# HADOOP_HOME=${bin}/../../hadoop
|
||||
|
||||
# Hive Configuration Directory can be controlled by:
|
||||
# export HIVE_CONF_DIR=
|
||||
|
||||
# Folder containing extra ibraries required for hive compilation/execution can be controlled by:
|
||||
# export HIVE_AUX_JARS_PATH=
|
||||
@@ -0,0 +1,66 @@
|
||||
# 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.
|
||||
|
||||
status = INFO
|
||||
name = HiveExecLog4j2
|
||||
packages = org.apache.hadoop.hive.ql.log
|
||||
|
||||
# list of properties
|
||||
property.hive.log.level = INFO
|
||||
property.hive.root.logger = FA
|
||||
property.hive.query.id = hadoop
|
||||
property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name}
|
||||
property.hive.log.file = ${sys:hive.query.id}.log
|
||||
|
||||
# list of all appenders
|
||||
appenders = console, FA
|
||||
|
||||
# console appender
|
||||
appender.console.type = Console
|
||||
appender.console.name = console
|
||||
appender.console.target = SYSTEM_ERR
|
||||
appender.console.layout.type = PatternLayout
|
||||
appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} [%t]: %p %c{2}: %m%n
|
||||
|
||||
# simple file appender
|
||||
appender.FA.type = File
|
||||
appender.FA.name = FA
|
||||
appender.FA.fileName = ${sys:hive.log.dir}/${sys:hive.log.file}
|
||||
appender.FA.layout.type = PatternLayout
|
||||
appender.FA.layout.pattern = %d{ISO8601} %-5p [%t]: %c{2} (%F:%M(%L)) - %m%n
|
||||
|
||||
# list of all loggers
|
||||
loggers = NIOServerCnxn, ClientCnxnSocketNIO, DataNucleus, Datastore, JPOX
|
||||
|
||||
logger.NIOServerCnxn.name = org.apache.zookeeper.server.NIOServerCnxn
|
||||
logger.NIOServerCnxn.level = WARN
|
||||
|
||||
logger.ClientCnxnSocketNIO.name = org.apache.zookeeper.ClientCnxnSocketNIO
|
||||
logger.ClientCnxnSocketNIO.level = WARN
|
||||
|
||||
logger.DataNucleus.name = DataNucleus
|
||||
logger.DataNucleus.level = ERROR
|
||||
|
||||
logger.Datastore.name = Datastore
|
||||
logger.Datastore.level = ERROR
|
||||
|
||||
logger.JPOX.name = JPOX
|
||||
logger.JPOX.level = ERROR
|
||||
|
||||
# root logger
|
||||
rootLogger.level = ${sys:hive.log.level}
|
||||
rootLogger.appenderRefs = root
|
||||
rootLogger.appenderRef.root.ref = ${sys:hive.root.logger}
|
||||
73
docker/hoodie/hadoop/hive_base/conf/hive-log4j2.properties
Normal file
73
docker/hoodie/hadoop/hive_base/conf/hive-log4j2.properties
Normal file
@@ -0,0 +1,73 @@
|
||||
# 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.
|
||||
|
||||
status = INFO
|
||||
name = HiveLog4j2
|
||||
packages = org.apache.hadoop.hive.ql.log
|
||||
|
||||
# list of properties
|
||||
property.hive.log.level = INFO
|
||||
property.hive.root.logger = DRFA
|
||||
property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name}
|
||||
property.hive.log.file = hive.log
|
||||
|
||||
# list of all appenders
|
||||
appenders = console, DRFA
|
||||
|
||||
# console appender
|
||||
appender.console.type = Console
|
||||
appender.console.name = console
|
||||
appender.console.target = SYSTEM_ERR
|
||||
appender.console.layout.type = PatternLayout
|
||||
appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} [%t]: %p %c{2}: %m%n
|
||||
|
||||
# daily rolling file appender
|
||||
appender.DRFA.type = RollingFile
|
||||
appender.DRFA.name = DRFA
|
||||
appender.DRFA.fileName = ${sys:hive.log.dir}/${sys:hive.log.file}
|
||||
# Use %pid in the filePattern to append <process-id>@<host-name> to the filename if you want separate log files for different CLI session
|
||||
appender.DRFA.filePattern = ${sys:hive.log.dir}/${sys:hive.log.file}.%d{yyyy-MM-dd}
|
||||
appender.DRFA.layout.type = PatternLayout
|
||||
appender.DRFA.layout.pattern = %d{ISO8601} %-5p [%t]: %c{2} (%F:%M(%L)) - %m%n
|
||||
appender.DRFA.policies.type = Policies
|
||||
appender.DRFA.policies.time.type = TimeBasedTriggeringPolicy
|
||||
appender.DRFA.policies.time.interval = 1
|
||||
appender.DRFA.policies.time.modulate = true
|
||||
appender.DRFA.strategy.type = DefaultRolloverStrategy
|
||||
appender.DRFA.strategy.max = 30
|
||||
|
||||
# list of all loggers
|
||||
loggers = NIOServerCnxn, ClientCnxnSocketNIO, DataNucleus, Datastore, JPOX
|
||||
|
||||
logger.NIOServerCnxn.name = org.apache.zookeeper.server.NIOServerCnxn
|
||||
logger.NIOServerCnxn.level = WARN
|
||||
|
||||
logger.ClientCnxnSocketNIO.name = org.apache.zookeeper.ClientCnxnSocketNIO
|
||||
logger.ClientCnxnSocketNIO.level = WARN
|
||||
|
||||
logger.DataNucleus.name = DataNucleus
|
||||
logger.DataNucleus.level = ERROR
|
||||
|
||||
logger.Datastore.name = Datastore
|
||||
logger.Datastore.level = ERROR
|
||||
|
||||
logger.JPOX.name = JPOX
|
||||
logger.JPOX.level = ERROR
|
||||
|
||||
# root logger
|
||||
rootLogger.level = ${sys:hive.log.level}
|
||||
rootLogger.appenderRefs = root
|
||||
rootLogger.appenderRef.root.ref = ${sys:hive.root.logger}
|
||||
18
docker/hoodie/hadoop/hive_base/conf/hive-site.xml
Normal file
18
docker/hoodie/hadoop/hive_base/conf/hive-site.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
|
||||
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.
|
||||
--><configuration>
|
||||
</configuration>
|
||||
45
docker/hoodie/hadoop/hive_base/conf/ivysettings.xml
Normal file
45
docker/hoodie/hadoop/hive_base/conf/ivysettings.xml
Normal file
@@ -0,0 +1,45 @@
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
|
||||
<!--This file is used by grapes to download dependencies from a maven repository.
|
||||
This is just a template and can be edited to add more repositories.
|
||||
-->
|
||||
|
||||
<ivysettings>
|
||||
<!--name of the defaultResolver should always be 'downloadGrapes'. -->
|
||||
<settings defaultResolver="downloadGrapes"/>
|
||||
<!-- Only set maven.local.repository if not already set -->
|
||||
<property name="maven.local.repository" value="${user.home}/.m2/repository" override="false" />
|
||||
<property name="m2-pattern"
|
||||
value="file:${maven.local.repository}/[organisation]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]"
|
||||
override="false"/>
|
||||
<resolvers>
|
||||
<!-- more resolvers can be added here -->
|
||||
<chain name="downloadGrapes">
|
||||
<!-- This resolver uses ibiblio to find artifacts, compatible with maven2 repository -->
|
||||
<ibiblio name="central" m2compatible="true"/>
|
||||
<url name="local-maven2" m2compatible="true">
|
||||
<artifact pattern="${m2-pattern}"/>
|
||||
</url>
|
||||
<!-- File resolver to add jars from the local system. -->
|
||||
<filesystem name="test" checkmodified="true">
|
||||
<artifact pattern="/tmp/[module]-[revision](-[classifier]).jar"/>
|
||||
</filesystem>
|
||||
|
||||
</chain>
|
||||
</resolvers>
|
||||
</ivysettings>
|
||||
@@ -0,0 +1,93 @@
|
||||
# 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.
|
||||
|
||||
status = INFO
|
||||
name = LlapDaemonLog4j2
|
||||
packages = org.apache.hadoop.hive.ql.log
|
||||
|
||||
# list of properties
|
||||
property.llap.daemon.log.level = INFO
|
||||
property.llap.daemon.root.logger = console
|
||||
property.llap.daemon.log.dir = .
|
||||
property.llap.daemon.log.file = llapdaemon.log
|
||||
property.llap.daemon.historylog.file = llapdaemon_history.log
|
||||
property.llap.daemon.log.maxfilesize = 256MB
|
||||
property.llap.daemon.log.maxbackupindex = 20
|
||||
|
||||
# list of all appenders
|
||||
appenders = console, RFA, HISTORYAPPENDER
|
||||
|
||||
# console appender
|
||||
appender.console.type = Console
|
||||
appender.console.name = console
|
||||
appender.console.target = SYSTEM_ERR
|
||||
appender.console.layout.type = PatternLayout
|
||||
appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} [%t%x] %p %c{2} : %m%n
|
||||
|
||||
# rolling file appender
|
||||
appender.RFA.type = RollingFile
|
||||
appender.RFA.name = RFA
|
||||
appender.RFA.fileName = ${sys:llap.daemon.log.dir}/${sys:llap.daemon.log.file}
|
||||
appender.RFA.filePattern = ${sys:llap.daemon.log.dir}/${sys:llap.daemon.log.file}_%i
|
||||
appender.RFA.layout.type = PatternLayout
|
||||
appender.RFA.layout.pattern = %d{ISO8601} %-5p [%t%x]: %c{2} (%F:%M(%L)) - %m%n
|
||||
appender.RFA.policies.type = Policies
|
||||
appender.RFA.policies.size.type = SizeBasedTriggeringPolicy
|
||||
appender.RFA.policies.size.size = ${sys:llap.daemon.log.maxfilesize}
|
||||
appender.RFA.strategy.type = DefaultRolloverStrategy
|
||||
appender.RFA.strategy.max = ${sys:llap.daemon.log.maxbackupindex}
|
||||
|
||||
# history file appender
|
||||
appender.HISTORYAPPENDER.type = RollingFile
|
||||
appender.HISTORYAPPENDER.name = HISTORYAPPENDER
|
||||
appender.HISTORYAPPENDER.fileName = ${sys:llap.daemon.log.dir}/${sys:llap.daemon.historylog.file}
|
||||
appender.HISTORYAPPENDER.filePattern = ${sys:llap.daemon.log.dir}/${sys:llap.daemon.historylog.file}_%i
|
||||
appender.HISTORYAPPENDER.layout.type = PatternLayout
|
||||
appender.HISTORYAPPENDER.layout.pattern = %m%n
|
||||
appender.HISTORYAPPENDER.policies.type = Policies
|
||||
appender.HISTORYAPPENDER.policies.size.type = SizeBasedTriggeringPolicy
|
||||
appender.HISTORYAPPENDER.policies.size.size = ${sys:llap.daemon.log.maxfilesize}
|
||||
appender.HISTORYAPPENDER.strategy.type = DefaultRolloverStrategy
|
||||
appender.HISTORYAPPENDER.strategy.max = ${sys:llap.daemon.log.maxbackupindex}
|
||||
|
||||
# list of all loggers
|
||||
loggers = NIOServerCnxn, ClientCnxnSocketNIO, DataNucleus, Datastore, JPOX, HistoryLogger
|
||||
|
||||
logger.NIOServerCnxn.name = org.apache.zookeeper.server.NIOServerCnxn
|
||||
logger.NIOServerCnxn.level = WARN
|
||||
|
||||
logger.ClientCnxnSocketNIO.name = org.apache.zookeeper.ClientCnxnSocketNIO
|
||||
logger.ClientCnxnSocketNIO.level = WARN
|
||||
|
||||
logger.DataNucleus.name = DataNucleus
|
||||
logger.DataNucleus.level = ERROR
|
||||
|
||||
logger.Datastore.name = Datastore
|
||||
logger.Datastore.level = ERROR
|
||||
|
||||
logger.JPOX.name = JPOX
|
||||
logger.JPOX.level = ERROR
|
||||
|
||||
logger.HistoryLogger.name = org.apache.hadoop.hive.llap.daemon.HistoryLogger
|
||||
logger.HistoryLogger.level = INFO
|
||||
logger.HistoryLogger.additivity = false
|
||||
logger.HistoryLogger.appenderRefs = HistoryAppender
|
||||
logger.HistoryLogger.appenderRef.HistoryAppender.ref = HISTORYAPPENDER
|
||||
|
||||
# root logger
|
||||
rootLogger.level = ${sys:llap.daemon.log.level}
|
||||
rootLogger.appenderRefs = root
|
||||
rootLogger.appenderRef.root.ref = ${sys:llap.daemon.root.logger}
|
||||
118
docker/hoodie/hadoop/hive_base/entrypoint.sh
Normal file
118
docker/hoodie/hadoop/hive_base/entrypoint.sh
Normal file
@@ -0,0 +1,118 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Set some sensible defaults
|
||||
export CORE_CONF_fs_defaultFS=${CORE_CONF_fs_defaultFS:-hdfs://`hostname -f`:8020}
|
||||
|
||||
function addProperty() {
|
||||
local path=$1
|
||||
local name=$2
|
||||
local value=$3
|
||||
|
||||
local entry="<property><name>$name</name><value>${value}</value></property>"
|
||||
local escapedEntry=$(echo $entry | sed 's/\//\\\//g')
|
||||
sed -i "/<\/configuration>/ s/.*/${escapedEntry}\n&/" $path
|
||||
}
|
||||
|
||||
function configure() {
|
||||
local path=$1
|
||||
local module=$2
|
||||
local envPrefix=$3
|
||||
|
||||
local var
|
||||
local value
|
||||
|
||||
echo "Configuring $module"
|
||||
for c in `printenv | perl -sne 'print "$1 " if m/^${envPrefix}_(.+?)=.*/' -- -envPrefix=$envPrefix`; do
|
||||
name=`echo ${c} | perl -pe 's/___/-/g; s/__/_/g; s/_/./g'`
|
||||
var="${envPrefix}_${c}"
|
||||
value=${!var}
|
||||
echo " - Setting $name=$value"
|
||||
addProperty $path $name "$value"
|
||||
done
|
||||
}
|
||||
|
||||
configure /etc/hadoop/core-site.xml core CORE_CONF
|
||||
configure /etc/hadoop/hdfs-site.xml hdfs HDFS_CONF
|
||||
configure /etc/hadoop/yarn-site.xml yarn YARN_CONF
|
||||
configure /etc/hadoop/httpfs-site.xml httpfs HTTPFS_CONF
|
||||
configure /etc/hadoop/kms-site.xml kms KMS_CONF
|
||||
configure /etc/hadoop/mapred-site.xml mapred MAPRED_CONF
|
||||
configure /etc/hadoop/hive-site.xml hive HIVE_SITE_CONF
|
||||
|
||||
if [ "$MULTIHOMED_NETWORK" = "1" ]; then
|
||||
echo "Configuring for multihomed network"
|
||||
|
||||
# HDFS
|
||||
addProperty /etc/hadoop/hdfs-site.xml dfs.namenode.rpc-bind-host 0.0.0.0
|
||||
addProperty /etc/hadoop/hdfs-site.xml dfs.namenode.servicerpc-bind-host 0.0.0.0
|
||||
addProperty /etc/hadoop/hdfs-site.xml dfs.namenode.http-bind-host 0.0.0.0
|
||||
addProperty /etc/hadoop/hdfs-site.xml dfs.namenode.https-bind-host 0.0.0.0
|
||||
addProperty /etc/hadoop/hdfs-site.xml dfs.client.use.datanode.hostname true
|
||||
addProperty /etc/hadoop/hdfs-site.xml dfs.datanode.use.datanode.hostname true
|
||||
|
||||
# YARN
|
||||
addProperty /etc/hadoop/yarn-site.xml yarn.resourcemanager.bind-host 0.0.0.0
|
||||
addProperty /etc/hadoop/yarn-site.xml yarn.nodemanager.bind-host 0.0.0.0
|
||||
addProperty /etc/hadoop/yarn-site.xml yarn.nodemanager.bind-host 0.0.0.0
|
||||
addProperty /etc/hadoop/yarn-site.xml yarn.timeline-service.bind-host 0.0.0.0
|
||||
|
||||
# MAPRED
|
||||
addProperty /etc/hadoop/mapred-site.xml yarn.nodemanager.bind-host 0.0.0.0
|
||||
fi
|
||||
|
||||
if [ -n "$GANGLIA_HOST" ]; then
|
||||
mv /etc/hadoop/hadoop-metrics.properties /etc/hadoop/hadoop-metrics.properties.orig
|
||||
mv /etc/hadoop/hadoop-metrics2.properties /etc/hadoop/hadoop-metrics2.properties.orig
|
||||
|
||||
for module in mapred jvm rpc ugi; do
|
||||
echo "$module.class=org.apache.hadoop.metrics.ganglia.GangliaContext31"
|
||||
echo "$module.period=10"
|
||||
echo "$module.servers=$GANGLIA_HOST:8649"
|
||||
done > /etc/hadoop/hadoop-metrics.properties
|
||||
|
||||
for module in namenode datanode resourcemanager nodemanager mrappmaster jobhistoryserver; do
|
||||
echo "$module.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31"
|
||||
echo "$module.sink.ganglia.period=10"
|
||||
echo "$module.sink.ganglia.supportsparse=true"
|
||||
echo "$module.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both"
|
||||
echo "$module.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40"
|
||||
echo "$module.sink.ganglia.servers=$GANGLIA_HOST:8649"
|
||||
done > /etc/hadoop/hadoop-metrics2.properties
|
||||
fi
|
||||
|
||||
function wait_for_it()
|
||||
{
|
||||
local serviceport=$1
|
||||
local service=${serviceport%%:*}
|
||||
local port=${serviceport#*:}
|
||||
local retry_seconds=5
|
||||
local max_try=100
|
||||
let i=1
|
||||
|
||||
nc -z $service $port
|
||||
result=$?
|
||||
|
||||
until [ $result -eq 0 ]; do
|
||||
echo "[$i/$max_try] check for ${service}:${port}..."
|
||||
echo "[$i/$max_try] ${service}:${port} is not available yet"
|
||||
if (( $i == $max_try )); then
|
||||
echo "[$i/$max_try] ${service}:${port} is still not available; giving up after ${max_try} tries. :/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[$i/$max_try] try in ${retry_seconds}s once again ..."
|
||||
let "i++"
|
||||
sleep $retry_seconds
|
||||
|
||||
nc -z $service $port
|
||||
result=$?
|
||||
done
|
||||
echo "[$i/$max_try] $service:${port} is available."
|
||||
}
|
||||
|
||||
for i in ${SERVICE_PRECONDITION[@]}
|
||||
do
|
||||
wait_for_it ${i}
|
||||
done
|
||||
|
||||
exec $@
|
||||
113
docker/hoodie/hadoop/hive_base/pom.xml
Normal file
113
docker/hoodie/hadoop/hive_base/pom.xml
Normal file
@@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (c) 2016 Uber Technologies, Inc. (hoodie-dev-group@uber.com)
|
||||
~
|
||||
~ Licensed 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.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>hoodie-hadoop-docker</artifactId>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<version>0.4.5-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>pom</packaging>
|
||||
<artifactId>hoodie-hadoop-hive-docker</artifactId>
|
||||
|
||||
<description>Base Docker Image with Hoodie</description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<checkstyle.skip>true</checkstyle.skip>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<artifactId>hoodie-hadoop-base-docker</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>1.7</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<configuration>
|
||||
<tasks>
|
||||
<copy file="${project.basedir}/../../../../packaging/hoodie-hadoop-mr-bundle/target/hoodie-hadoop-mr-bundle-${project.version}.jar"
|
||||
tofile="target/hoodie-hadoop-mr-bundle.jar" />
|
||||
<copy file="${project.basedir}/../../../../packaging/hoodie-hive-bundle/target/hoodie-hive-bundle-${project.version}.jar"
|
||||
tofile="target/hoodie-hive-bundle.jar" />
|
||||
<copy file="${project.basedir}/../../../../packaging/hoodie-spark-bundle/target/hoodie-spark-bundle-${project.version}.jar"
|
||||
tofile="target/hoodie-spark-bundle.jar" />
|
||||
<copy file="${project.basedir}/../../../../hoodie-utilities/target/hoodie-utilities-${project.version}.jar"
|
||||
tofile="target/hoodie-utilities.jar" />
|
||||
</tasks>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<!-- Build Docker image -->
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
<version>${dockerfile.maven.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>tag-latest</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-hive_${docker.hive.version}</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>latest</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>tag-version</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-hive_${docker.hive.version}</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>${project.version}</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
10
docker/hoodie/hadoop/hive_base/startup.sh
Normal file
10
docker/hoodie/hadoop/hive_base/startup.sh
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
hadoop fs -mkdir /tmp
|
||||
hadoop fs -mkdir -p /user/hive/warehouse
|
||||
hadoop fs -chmod g+w /tmp
|
||||
hadoop fs -chmod g+w /user/hive/warehouse
|
||||
|
||||
cd $HIVE_HOME/bin
|
||||
export AUX_CLASSPATH=file://${HUDI_HADOOP_BUNDLE}
|
||||
./hiveserver2 --hiveconf hive.server2.enable.doAs=false --hiveconf hive.aux.jars.path=file://${HUDI_HADOOP_BUNDLE}
|
||||
14
docker/hoodie/hadoop/namenode/Dockerfile
Normal file
14
docker/hoodie/hadoop/namenode/Dockerfile
Normal file
@@ -0,0 +1,14 @@
|
||||
ARG HADOOP_VERSION=2.8.4
|
||||
ARG HADOOP_WEBHDFS_PORT=50070
|
||||
FROM varadarb/hudi-hadoop_${HADOOP_VERSION}-base:latest
|
||||
|
||||
ENV HADOOP_WEBHDFS_PORT ${HADOOP_WEBHDFS_PORT}
|
||||
|
||||
ENV HDFS_CONF_dfs_namenode_name_dir=file:///hadoop/dfs/name
|
||||
RUN mkdir -p /hadoop/dfs/name
|
||||
VOLUME /hadoop/dfs/name
|
||||
|
||||
ADD run_nn.sh /run_nn.sh
|
||||
RUN chmod a+x /run_nn.sh
|
||||
|
||||
CMD ["/run_nn.sh"]
|
||||
89
docker/hoodie/hadoop/namenode/pom.xml
Normal file
89
docker/hoodie/hadoop/namenode/pom.xml
Normal file
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (c) 2016 Uber Technologies, Inc. (hoodie-dev-group@uber.com)
|
||||
~
|
||||
~ Licensed 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.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>hoodie-hadoop-docker</artifactId>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<version>0.4.5-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>pom</packaging>
|
||||
<artifactId>hoodie-hadoop-namenode-docker</artifactId>
|
||||
|
||||
<description>Base Docker Image with Hoodie</description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<checkstyle.skip>true</checkstyle.skip>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<artifactId>hoodie-hadoop-base-docker</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<!-- Build Docker image -->
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
<version>${dockerfile.maven.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>tag-latest</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-namenode</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>latest</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>tag-version</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-namenode</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>${project.version}</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
19
docker/hoodie/hadoop/namenode/run_nn.sh
Normal file
19
docker/hoodie/hadoop/namenode/run_nn.sh
Normal file
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
namedir=`echo $HDFS_CONF_dfs_namenode_name_dir | perl -pe 's#file://##'`
|
||||
if [ ! -d $namedir ]; then
|
||||
echo "Namenode name directory not found: $namedir"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if [ -z "$CLUSTER_NAME" ]; then
|
||||
echo "Cluster name not specified"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if [ "`ls -A $namedir`" == "" ]; then
|
||||
echo "Formatting namenode name directory: $namedir"
|
||||
$HADOOP_PREFIX/bin/hdfs --config $HADOOP_CONF_DIR namenode -format $CLUSTER_NAME
|
||||
fi
|
||||
|
||||
$HADOOP_PREFIX/bin/hdfs --config $HADOOP_CONF_DIR namenode
|
||||
78
docker/hoodie/hadoop/pom.xml
Normal file
78
docker/hoodie/hadoop/pom.xml
Normal file
@@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (c) 2016 Uber Technologies, Inc. (hoodie-dev-group@uber.com)
|
||||
~
|
||||
~ Licensed 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.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>hoodie</artifactId>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<version>0.4.5-SNAPSHOT</version>
|
||||
<relativePath>../../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>hoodie-hadoop-docker</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<modules>
|
||||
<module>base</module>
|
||||
<module>namenode</module>
|
||||
<module>datanode</module>
|
||||
<module>historyserver</module>
|
||||
<module>hive_base</module>
|
||||
<module>spark_base</module>
|
||||
<module>sparkmaster</module>
|
||||
<module>sparkworker</module>
|
||||
<module>sparkadhoc</module>
|
||||
</modules>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<artifactId>hoodie-spark-bundle</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<properties>
|
||||
<skipITs>false</skipITs>
|
||||
<docker.build.skip>true</docker.build.skip>
|
||||
<docker.spark.version>2.3.1</docker.spark.version>
|
||||
<docker.hive.version>2.3.3</docker.hive.version>
|
||||
<docker.hadoop.version>2.8.4</docker.hadoop.version>
|
||||
<dockerfile.maven.version>1.4.3</dockerfile.maven.version>
|
||||
<checkstyle.skip>true</checkstyle.skip>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<extensions>
|
||||
<extension>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-extension</artifactId>
|
||||
<version>${dockerfile.maven.version}</version>
|
||||
</extension>
|
||||
</extensions>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
<version>${dockerfile.maven.version}</version>
|
||||
<configuration>
|
||||
<skip>true</skip>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
46
docker/hoodie/hadoop/spark_base/Dockerfile
Normal file
46
docker/hoodie/hadoop/spark_base/Dockerfile
Normal file
@@ -0,0 +1,46 @@
|
||||
ARG HADOOP_VERSION=2.8.4
|
||||
ARG HIVE_VERSION=2.3.3
|
||||
FROM varadarb/hudi-hadoop_${HADOOP_VERSION}-hive_${HIVE_VERSION}
|
||||
|
||||
ENV ENABLE_INIT_DAEMON true
|
||||
ENV INIT_DAEMON_BASE_URI http://identifier/init-daemon
|
||||
ENV INIT_DAEMON_STEP spark_master_init
|
||||
|
||||
ARG SPARK_VERSION=2.3.1
|
||||
ARG SPARK_HADOOP_VERSION=2.7
|
||||
|
||||
ENV SPARK_VERSION ${SPARK_VERSION}
|
||||
ENV HADOOP_VERSION ${SPARK_HADOOP_VERSION}
|
||||
|
||||
COPY wait-for-step.sh /
|
||||
COPY execute-step.sh /
|
||||
COPY finish-step.sh /
|
||||
|
||||
RUN echo "Installing Spark-version (${SPARK_VERSION})" \
|
||||
&& wget http://apache.mirror.iphh.net/spark/spark-${SPARK_VERSION}/spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz \
|
||||
&& tar -xvzf spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz \
|
||||
&& mv spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION} /opt/spark \
|
||||
&& rm spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz \
|
||||
&& cd /
|
||||
|
||||
#Give permission to execute scripts
|
||||
RUN chmod +x /wait-for-step.sh && chmod +x /execute-step.sh && chmod +x /finish-step.sh
|
||||
|
||||
# Fix the value of PYTHONHASHSEED
|
||||
# Note: this is needed when you use Python 3.3 or greater
|
||||
ENV PYTHONHASHSEED 1
|
||||
|
||||
ENV SPARK_HOME /opt/spark
|
||||
ENV SPARK_INSTALL ${SPARK_HOME}
|
||||
ENV SPARK_CONF_DIR ${SPARK_HOME}/conf
|
||||
ENV PATH $SPARK_INSTALL/bin:$PATH
|
||||
|
||||
ENV SPARK_DRIVER_PORT 5001
|
||||
ENV SPARK_UI_PORT 5002
|
||||
ENV SPARK_BLOCKMGR_PORT 5003
|
||||
|
||||
EXPOSE $SPARK_DRIVER_PORT $SPARK_UI_PORT $SPARK_BLOCKMGR_PORT
|
||||
|
||||
# Without this spark-shell fails - Download if it is not already there in $SPARK_INSTALL
|
||||
RUN wget -nc -q -O "${SPARK_INSTALL}/jars/jersey-bundle-1.19.4.jar" "http://repo1.maven.org/maven2/com/sun/jersey/jersey-bundle/1.19.4/jersey-bundle-1.19.4.jar"
|
||||
|
||||
14
docker/hoodie/hadoop/spark_base/execute-step.sh
Normal file
14
docker/hoodie/hadoop/spark_base/execute-step.sh
Normal file
@@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ $ENABLE_INIT_DAEMON = "true" ]
|
||||
then
|
||||
echo "Execute step ${INIT_DAEMON_STEP} in pipeline"
|
||||
while true; do
|
||||
sleep 5
|
||||
echo -n '.'
|
||||
string=$(curl -sL -w "%{http_code}" -X PUT $INIT_DAEMON_BASE_URI/execute?step=$INIT_DAEMON_STEP -o /dev/null)
|
||||
[ "$string" = "204" ] && break
|
||||
done
|
||||
echo "Notified execution of step ${INIT_DAEMON_STEP}"
|
||||
fi
|
||||
|
||||
16
docker/hoodie/hadoop/spark_base/finish-step.sh
Normal file
16
docker/hoodie/hadoop/spark_base/finish-step.sh
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ $ENABLE_INIT_DAEMON = "true" ]
|
||||
then
|
||||
echo "Finish step ${INIT_DAEMON_STEP} in pipeline"
|
||||
while true; do
|
||||
sleep 5
|
||||
echo -n '.'
|
||||
string=$(curl -sL -w "%{http_code}" -X PUT $INIT_DAEMON_BASE_URI/finish?step=$INIT_DAEMON_STEP -o /dev/null)
|
||||
[ "$string" = "204" ] && break
|
||||
done
|
||||
echo "Notified finish of step ${INIT_DAEMON_STEP}"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
89
docker/hoodie/hadoop/spark_base/pom.xml
Normal file
89
docker/hoodie/hadoop/spark_base/pom.xml
Normal file
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (c) 2016 Uber Technologies, Inc. (hoodie-dev-group@uber.com)
|
||||
~
|
||||
~ Licensed 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.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>hoodie-hadoop-docker</artifactId>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<version>0.4.5-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>pom</packaging>
|
||||
<artifactId>hoodie-hadoop-sparkbase-docker</artifactId>
|
||||
|
||||
<description>Base Docker Image with Hoodie</description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<checkstyle.skip>true</checkstyle.skip>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<artifactId>hoodie-hadoop-hive-docker</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<!-- Build Docker image -->
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
<version>${dockerfile.maven.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>tag-latest</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-hive_${docker.hive.version}-sparkbase_${docker.spark.version}</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>latest</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>tag-version</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-hive_${docker.hive.version}-sparkbase_${docker.spark.version}</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>${project.version}</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
13
docker/hoodie/hadoop/spark_base/wait-for-step.sh
Normal file
13
docker/hoodie/hadoop/spark_base/wait-for-step.sh
Normal file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ $ENABLE_INIT_DAEMON = "true" ]
|
||||
then
|
||||
echo "Validating if step ${INIT_DAEMON_STEP} can start in pipeline"
|
||||
while true; do
|
||||
sleep 5
|
||||
echo -n '.'
|
||||
string=$(curl -s $INIT_DAEMON_BASE_URI/canStart?step=$INIT_DAEMON_STEP)
|
||||
[ "$string" = "true" ] && break
|
||||
done
|
||||
echo "Can start step ${INIT_DAEMON_STEP}"
|
||||
fi
|
||||
12
docker/hoodie/hadoop/sparkadhoc/Dockerfile
Normal file
12
docker/hoodie/hadoop/sparkadhoc/Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
||||
ARG HADOOP_VERSION=2.8.4
|
||||
ARG HIVE_VERSION=2.3.3
|
||||
ARG SPARK_VERSION=2.3.1
|
||||
FROM varadarb/hudi-hadoop_${HADOOP_VERSION}-hive_${HIVE_VERSION}-sparkbase_${SPARK_VERSION}
|
||||
|
||||
COPY adhoc.sh /opt/spark
|
||||
|
||||
ENV SPARK_WORKER_WEBUI_PORT 8081
|
||||
ENV SPARK_WORKER_LOG /spark/logs
|
||||
ENV SPARK_MASTER "spark://spark-master:7077"
|
||||
|
||||
CMD ["/bin/bash", "/opt/spark/adhoc.sh"]
|
||||
13
docker/hoodie/hadoop/sparkadhoc/adhoc.sh
Normal file
13
docker/hoodie/hadoop/sparkadhoc/adhoc.sh
Normal file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
. "/spark/sbin/spark-config.sh"
|
||||
|
||||
. "/spark/bin/load-spark-env.sh"
|
||||
|
||||
|
||||
export SPARK_HOME=/opt/spark
|
||||
|
||||
date
|
||||
echo "SPARK HOME is : $SPARK_HOME"
|
||||
|
||||
tail -f /dev/null
|
||||
89
docker/hoodie/hadoop/sparkadhoc/pom.xml
Normal file
89
docker/hoodie/hadoop/sparkadhoc/pom.xml
Normal file
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (c) 2016 Uber Technologies, Inc. (hoodie-dev-group@uber.com)
|
||||
~
|
||||
~ Licensed 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.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>hoodie-hadoop-docker</artifactId>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<version>0.4.5-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>pom</packaging>
|
||||
<artifactId>hoodie-hadoop-sparkadhoc-docker</artifactId>
|
||||
|
||||
<description>Base Docker Image with Hoodie</description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<checkstyle.skip>true</checkstyle.skip>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<artifactId>hoodie-hadoop-sparkbase-docker</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<!-- Build Docker image -->
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
<version>${dockerfile.maven.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>tag-latest</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-hive_${docker.hive.version}-sparkadhoc_${docker.spark.version}</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>latest</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>tag-version</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-hive_${docker.hive.version}-sparkadhoc_${docker.spark.version}</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>${project.version}</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
14
docker/hoodie/hadoop/sparkmaster/Dockerfile
Normal file
14
docker/hoodie/hadoop/sparkmaster/Dockerfile
Normal file
@@ -0,0 +1,14 @@
|
||||
ARG HADOOP_VERSION=2.8.4
|
||||
ARG HIVE_VERSION=2.3.3
|
||||
ARG SPARK_VERSION=2.3.1
|
||||
FROM varadarb/hudi-hadoop_${HADOOP_VERSION}-hive_${HIVE_VERSION}-sparkbase_${SPARK_VERSION}
|
||||
|
||||
COPY master.sh /opt/spark
|
||||
|
||||
ENV SPARK_MASTER_PORT 7077
|
||||
ENV SPARK_MASTER_WEBUI_PORT 8080
|
||||
ENV SPARK_MASTER_LOG /opt/spark/logs
|
||||
|
||||
EXPOSE 8080 7077 6066
|
||||
|
||||
CMD ["/bin/bash", "/opt/spark/master.sh"]
|
||||
16
docker/hoodie/hadoop/sparkmaster/master.sh
Normal file
16
docker/hoodie/hadoop/sparkmaster/master.sh
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
export SPARK_MASTER_HOST=`hostname`
|
||||
|
||||
. "/opt/spark/sbin/spark-config.sh"
|
||||
|
||||
. "/opt/spark/bin/load-spark-env.sh"
|
||||
|
||||
mkdir -p $SPARK_MASTER_LOG
|
||||
|
||||
export SPARK_HOME=/opt/spark
|
||||
|
||||
ln -sf /dev/stdout $SPARK_MASTER_LOG/spark-master.out
|
||||
|
||||
cd /opt/spark/bin && /opt/spark/sbin/../bin/spark-class org.apache.spark.deploy.master.Master \
|
||||
--ip $SPARK_MASTER_HOST --port $SPARK_MASTER_PORT --webui-port $SPARK_MASTER_WEBUI_PORT >> $SPARK_MASTER_LOG/spark-master.out
|
||||
89
docker/hoodie/hadoop/sparkmaster/pom.xml
Normal file
89
docker/hoodie/hadoop/sparkmaster/pom.xml
Normal file
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (c) 2016 Uber Technologies, Inc. (hoodie-dev-group@uber.com)
|
||||
~
|
||||
~ Licensed 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.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>hoodie-hadoop-docker</artifactId>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<version>0.4.5-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>pom</packaging>
|
||||
<artifactId>hoodie-hadoop-sparkmaster-docker</artifactId>
|
||||
|
||||
<description>Base Docker Image with Hoodie</description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<checkstyle.skip>true</checkstyle.skip>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<artifactId>hoodie-hadoop-sparkbase-docker</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<!-- Build Docker image -->
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
<version>${dockerfile.maven.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>tag-latest</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-hive_${docker.hive.version}-sparkmaster_${docker.spark.version}</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>latest</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>tag-version</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!-- <goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-hive_${docker.hive.version}-sparkmaster_${docker.spark.version}</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>${project.version}</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
14
docker/hoodie/hadoop/sparkworker/Dockerfile
Normal file
14
docker/hoodie/hadoop/sparkworker/Dockerfile
Normal file
@@ -0,0 +1,14 @@
|
||||
ARG HADOOP_VERSION=2.8.4
|
||||
ARG HIVE_VERSION=2.3.3
|
||||
ARG SPARK_VERSION=2.3.1
|
||||
FROM varadarb/hudi-hadoop_${HADOOP_VERSION}-hive_${HIVE_VERSION}-sparkbase_${SPARK_VERSION}
|
||||
|
||||
COPY worker.sh /opt/spark
|
||||
|
||||
ENV SPARK_WORKER_WEBUI_PORT 8081
|
||||
ENV SPARK_WORKER_LOG /spark/logs
|
||||
ENV SPARK_MASTER "spark://spark-master:7077"
|
||||
|
||||
EXPOSE 8081
|
||||
|
||||
CMD ["/bin/bash", "/opt/spark/worker.sh"]
|
||||
89
docker/hoodie/hadoop/sparkworker/pom.xml
Normal file
89
docker/hoodie/hadoop/sparkworker/pom.xml
Normal file
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (c) 2016 Uber Technologies, Inc. (hoodie-dev-group@uber.com)
|
||||
~
|
||||
~ Licensed 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.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>hoodie-hadoop-docker</artifactId>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<version>0.4.5-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>pom</packaging>
|
||||
<artifactId>hoodie-hadoop-sparkworker-docker</artifactId>
|
||||
|
||||
<description>Base Docker Image with Hoodie</description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<checkstyle.skip>true</checkstyle.skip>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.uber.hoodie</groupId>
|
||||
<artifactId>hoodie-hadoop-sparkbase-docker</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<!-- Build Docker image -->
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
<version>${dockerfile.maven.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>tag-latest</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!--<goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-hive_${docker.hive.version}-sparkworker_${docker.spark.version}</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>latest</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>tag-version</id>
|
||||
<phase>pre-integration-test</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>tag</goal>
|
||||
<!--<goal>push</goal> -->
|
||||
</goals>
|
||||
<configuration>
|
||||
<skip>${docker.build.skip}</skip>
|
||||
<pullNewerImage>false</pullNewerImage>
|
||||
<repository>varadarb/hudi-hadoop_${docker.hadoop.version}-hive_${docker.hive.version}-sparkworker_${docker.spark.version}</repository>
|
||||
<forceTags>true</forceTags>
|
||||
<tag>${project.version}</tag>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
16
docker/hoodie/hadoop/sparkworker/worker.sh
Normal file
16
docker/hoodie/hadoop/sparkworker/worker.sh
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
. "/spark/sbin/spark-config.sh"
|
||||
|
||||
. "/spark/bin/load-spark-env.sh"
|
||||
|
||||
mkdir -p $SPARK_WORKER_LOG
|
||||
|
||||
export SPARK_HOME=/opt/spark
|
||||
|
||||
ln -sf /dev/stdout $SPARK_WORKER_LOG/spark-worker.out
|
||||
|
||||
date
|
||||
echo "SPARK HOME is : $SPARK_HOME"
|
||||
/opt/spark/sbin/../bin/spark-class org.apache.spark.deploy.worker.Worker \
|
||||
--webui-port $SPARK_WORKER_WEBUI_PORT $SPARK_MASTER >> $SPARK_WORKER_LOG/spark-worker.out
|
||||
Reference in New Issue
Block a user