From e4d7c0bac5545cd6c6d4873a77c09beaa0502780 Mon Sep 17 00:00:00 2001 From: Le-Zheng Date: Tue, 6 Sep 2022 08:26:48 +0800 Subject: [PATCH 1/2] tdx/docker/bigdl-tdx --- ppml/tdx/docker/bigdl-tdx/Dockerfile | 4 + ppml/tdx/docker/bigdl-tdx/README.md | 8 ++ ppml/tdx/docker/bigdl-tdx/entrypoint.sh | 110 ++++++++++++++++++++++++ 3 files changed, 122 insertions(+) create mode 100644 ppml/tdx/docker/bigdl-tdx/Dockerfile create mode 100644 ppml/tdx/docker/bigdl-tdx/README.md create mode 100755 ppml/tdx/docker/bigdl-tdx/entrypoint.sh diff --git a/ppml/tdx/docker/bigdl-tdx/Dockerfile b/ppml/tdx/docker/bigdl-tdx/Dockerfile new file mode 100644 index 00000000000..437bc08c7ea --- /dev/null +++ b/ppml/tdx/docker/bigdl-tdx/Dockerfile @@ -0,0 +1,4 @@ +FROM intelanalytics/bigdl-k8s + +ADD ./entrypoint.sh /opt/entrypoint.sh +ENTRYPOINT [ "/opt/entrypoint.sh" ] diff --git a/ppml/tdx/docker/bigdl-tdx/README.md b/ppml/tdx/docker/bigdl-tdx/README.md new file mode 100644 index 00000000000..71b3e6b71b6 --- /dev/null +++ b/ppml/tdx/docker/bigdl-tdx/README.md @@ -0,0 +1,8 @@ +## Build bigdl-tdx image +```bash +docker build \ + --build-arg http_proxy=.. \ + --build-arg https_proxy=.. \ + --build-arg no_proxy=.. \ + --rm --no-cache -t bigdl-tdx-spark-3.1.2:2.1.0-SNAPSHOT . +``` diff --git a/ppml/tdx/docker/bigdl-tdx/entrypoint.sh b/ppml/tdx/docker/bigdl-tdx/entrypoint.sh new file mode 100755 index 00000000000..e594b2aa9ff --- /dev/null +++ b/ppml/tdx/docker/bigdl-tdx/entrypoint.sh @@ -0,0 +1,110 @@ +#!/bin/bash +# +# 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. +# + +# echo commands to the terminal output +set -ex + +echo "start sdd, run data" +mkdir -p /run/data +mount /dev/sdd /run/data/ +echo "end sdd" + +# Check whether there is a passwd entry for the container UID +myuid=$(id -u) +mygid=$(id -g) +# turn off -e for getent because it will return error code in anonymous uid case +set +e +uidentry=$(getent passwd $myuid) +set -e + +# If there is no passwd entry for the container UID, attempt to create one +if [ -z "$uidentry" ] ; then + if [ -w /etc/passwd ] ; then + echo "$myuid:x:$myuid:$mygid:${SPARK_USER_NAME:-anonymous uid}:$SPARK_HOME:/bin/false" >> /etc/passwd + else + echo "Container ENTRYPOINT failed to add passwd entry for anonymous UID" + fi +fi + +SPARK_CLASSPATH="$SPARK_CLASSPATH:${SPARK_HOME}/jars/*" +env | grep SPARK_JAVA_OPT_ | sort -t_ -k4 -n | sed 's/[^=]*=\(.*\)/\1/g' > /tmp/java_opts.txt +readarray -t SPARK_EXECUTOR_JAVA_OPTS < /tmp/java_opts.txt + +if [ -n "$SPARK_EXTRA_CLASSPATH" ]; then + SPARK_CLASSPATH="$SPARK_CLASSPATH:$SPARK_EXTRA_CLASSPATH" +fi + +if ! [ -z ${PYSPARK_PYTHON+x} ]; then + export PYSPARK_PYTHON +fi +if ! [ -z ${PYSPARK_DRIVER_PYTHON+x} ]; then + export PYSPARK_DRIVER_PYTHON +fi + +# If HADOOP_HOME is set and SPARK_DIST_CLASSPATH is not set, set it here so Hadoop jars are available to the executor. +# It does not set SPARK_DIST_CLASSPATH if already set, to avoid overriding customizations of this value from elsewhere e.g. Docker/K8s. +if [ -n "${HADOOP_HOME}" ] && [ -z "${SPARK_DIST_CLASSPATH}" ]; then + export SPARK_DIST_CLASSPATH="$($HADOOP_HOME/bin/hadoop classpath)" +fi + +if ! [ -z ${HADOOP_CONF_DIR+x} ]; then + SPARK_CLASSPATH="$HADOOP_CONF_DIR:$SPARK_CLASSPATH"; +fi + +if ! [ -z ${SPARK_CONF_DIR+x} ]; then + SPARK_CLASSPATH="$SPARK_CONF_DIR:$SPARK_CLASSPATH"; +elif ! [ -z ${SPARK_HOME+x} ]; then + SPARK_CLASSPATH="$SPARK_HOME/conf:$SPARK_CLASSPATH"; +fi + +case "$1" in + driver) + shift 1 + CMD=( + "$SPARK_HOME/bin/spark-submit" + --conf "spark.driver.bindAddress=$SPARK_DRIVER_BIND_ADDRESS" + --deploy-mode client + "$@" + ) + ;; + executor) + shift 1 + CMD=( + ${JAVA_HOME}/bin/java + "${SPARK_EXECUTOR_JAVA_OPTS[@]}" + -Xms$SPARK_EXECUTOR_MEMORY + -Xmx$SPARK_EXECUTOR_MEMORY + -cp "$SPARK_CLASSPATH:$SPARK_DIST_CLASSPATH" + org.apache.spark.executor.CoarseGrainedExecutorBackend + --driver-url $SPARK_DRIVER_URL + --executor-id $SPARK_EXECUTOR_ID + --cores $SPARK_EXECUTOR_CORES + --app-id $SPARK_APPLICATION_ID + --hostname $SPARK_EXECUTOR_POD_IP + --resourceProfileId $SPARK_RESOURCE_PROFILE_ID + ) + ;; + + *) + echo "Non-spark-on-k8s command provided, proceeding in pass-through mode..." + CMD=("$@") + ;; +esac + +# Execute the container CMD under tini for better hygiene +exec /usr/bin/tini -s -- "${CMD[@]}" From 17b743b2a162699d0667f8abea0a387ed24157c5 Mon Sep 17 00:00:00 2001 From: Le-Zheng Date: Thu, 15 Sep 2022 13:32:54 +0800 Subject: [PATCH 2/2] address comment --- ppml/tdx/docker/bigdl-tdx/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppml/tdx/docker/bigdl-tdx/README.md b/ppml/tdx/docker/bigdl-tdx/README.md index 71b3e6b71b6..31723048c47 100644 --- a/ppml/tdx/docker/bigdl-tdx/README.md +++ b/ppml/tdx/docker/bigdl-tdx/README.md @@ -4,5 +4,5 @@ docker build \ --build-arg http_proxy=.. \ --build-arg https_proxy=.. \  --build-arg no_proxy=.. \ - --rm --no-cache -t bigdl-tdx-spark-3.1.2:2.1.0-SNAPSHOT . + --rm --no-cache -t intelanalytics/bigdl-tdx-spark-3.1.2:2.1.0-SNAPSHOT . ```