Skip to content

Commit dd6bcc9

Browse files
committed
Merged cluster support into the v1.4.0 branch.
1 parent 2c1fb22 commit dd6bcc9

17 files changed

+555
-50
lines changed

benchmark/tpch/build_tpch.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ if [ "$1" == "-d" ]; then
4040
-v "${ROOT_DIR}/build/.ivy2:${DOCKER_HOME_DIR}/.ivy2" \
4141
-u "${USER_ID}" \
4242
--entrypoint /bin/bash -w /tpch/tpch-spark \
43-
spark-build-${USER_NAME}
43+
"v${DIKE_VERSION}-spark-build-${USER_NAME}"
4444
else
4545
docker run --rm -it --name tpch_build \
4646
--mount type=bind,source="$(pwd)"/../tpch,target=/tpch \
@@ -51,5 +51,5 @@ else
5151
-v "${ROOT_DIR}/build/.ivy2:${DOCKER_HOME_DIR}/.ivy2" \
5252
-u "${USER_ID}" \
5353
--entrypoint /tpch/scripts/build.sh \
54-
spark-build-${USER_NAME}
54+
"v${DIKE_VERSION}-spark-build-${USER_NAME}"
5555
fi

benchmark/tpch/run_tpch.sh

Lines changed: 69 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ if [ "$#" -lt 1 ]; then
88
exit 1
99
fi
1010

11+
LOCAL=NO
1112
DEBUG=NO
13+
DEBUG_EXECUTOR=NO
1214
WORKERS=1
1315
POSITIONAL=()
1416
while [[ $# -gt 0 ]]
@@ -25,6 +27,14 @@ case $key in
2527
DEBUG=YES
2628
shift # past argument
2729
;;
30+
-de|--debug-exec)
31+
DEBUG_EXECUTOR=YES
32+
shift # past argument
33+
;;
34+
-l|--local)
35+
LOCAL=YES
36+
shift # past argument
37+
;;
2838
*) # unknown option
2939
POSITIONAL+=("$1") # save it in an array for later
3040
shift # past argument
@@ -35,37 +45,85 @@ set -- "${POSITIONAL[@]}" # restore positional parameters
3545

3646
echo "DEBUG" = "${DEBUG}"
3747
echo "WORKERS" = "${WORKERS}"
48+
echo "LOCAL" = "${LOCAL}"
49+
TEST=NO
50+
#set_speed $WORKERS
51+
#DOCKER=sparkmaster
52+
DOCKER=sparklauncher
53+
# --conf "spark.submit.pyFiles=/build/dike.zip" \
3854
if [ ${DEBUG} == "YES" ]; then
3955
echo "Debugging"
40-
docker exec -it sparkmaster spark-submit --master local \
56+
docker exec -it ${DOCKER} spark-submit --master local \
4157
--class main.scala.TpchQuery \
4258
--conf "spark.jars.ivy=/build/ivy" \
4359
--conf "spark.driver.maxResultSize=20g" \
4460
--conf "spark.driver.memory=2g" \
4561
--conf "spark.executor.memory=2g" \
46-
--conf "spark.driver.extraJavaOptions=-classpath /conf/:/build/spark-${SPARK_VERSION}/jars/*:/examples/scala/target/scala-2.12/ -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=172.18.0.3:5005" \
47-
--packages com.github.scopt:scopt_2.12:4.0.0-RC2,ch.cern.sparkmeasure:spark-measure_2.12:0.17 \
62+
--conf "spark.driver.extraJavaOptions=-classpath /conf/:/build/spark-${SPARK_VERSION}/jars/*: -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=10.124.48.63:5006" \
63+
--packages com.github.luben:zstd-jni:1.5.0-4,org.json:json:20210307,javax.json:javax.json-api:1.1.4,org.glassfish:javax.json:1.1.4,com.github.scopt:scopt_2.12:4.0.0-RC2,ch.cern.sparkmeasure:spark-measure_2.12:0.17 \
4864
--jars /build/downloads/spark-sql-macros_2.12.10_0.1.0-SNAPSHOT.jar,/dikeHDFS/client/ndp-hdfs/target/ndp-hdfs-1.0.jar,/build/extra_jars/*,/pushdown-datasource/target/scala-2.12/pushdown-datasource_2.12-0.1.0.jar,/build/downloads/h2-1.4.200.jar \
4965
/tpch/tpch-spark/target/scala-2.12/spark-tpc-h-queries_2.12-1.0.jar $@ --workers ${WORKERS}
5066
#--packages com.github.scopt:scopt_2.12:4.0.0-RC2,com.amazonaws:aws-java-sdk:1.11.853,org.apache.hadoop:hadoop-aws:3.2.0,org.apache.commons:commons-csv:1.8 \
5167
# --conf "spark.sql.parquet.enableVectorizedReader=false" \
52-
else
53-
docker exec -it sparkmaster spark-submit --master local[$WORKERS] \
68+
elif [ ${DEBUG_EXECUTOR} == "YES" ]; then
69+
echo "Debugging"
70+
docker exec -it ${DOCKER} spark-submit --master local \
71+
--class main.scala.TpchQuery \
72+
--conf "spark.jars.ivy=/build/ivy" \
73+
--conf "spark.driver.maxResultSize=20g" \
74+
--conf "spark.driver.memory=2g" \
75+
--conf "spark.executor.memory=2g" \
76+
--conf "spark.driver.extraJavaOptions=-classpath /conf/:/build/spark-${SPARK_VERSION}/jars/*:/examples/scala/target/scala-2.12/ -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=172.169.1.10:5005" \
77+
--packages com.github.luben:zstd-jni:1.5.0-4,org.json:json:20210307,javax.json:javax.json-api:1.1.4,org.glassfish:javax.json:1.1.4,com.github.scopt:scopt_2.12:4.0.0-RC2,ch.cern.sparkmeasure:spark-measure_2.12:0.17 \
78+
--jars /build/downloads/spark-sql-macros_2.12.10_0.1.0-SNAPSHOT.jar,/dikeHDFS/client/ndp-hdfs/target/ndp-hdfs-1.0.jar,/build/extra_jars/*,/pushdown-datasource/target/scala-2.12/pushdown-datasource_2.12-0.1.0.jar,/build/downloads/h2-1.4.200.jar \
79+
/tpch/tpch-spark/target/scala-2.12/spark-tpc-h-queries_2.12-1.0.jar $@ --workers ${WORKERS}
80+
elif [ ${LOCAL} == "YES" ]; then
81+
echo "Local with $WORKERS workers."
82+
docker exec -it ${DOCKER} spark-submit --master local[$WORKERS] \
5483
--conf "ivy.shared.default.root=/build/ivy_jars" \
55-
--conf "spark.driver.extraClassPath=/build/extra_jars/*" \
56-
--conf "spark.executor.extraClassPath=/build/extra_jars/*" \
5784
--conf "spark.jars.ivy=/build/ivy" \
5885
--conf "spark.driver.maxResultSize=20g" \
86+
--conf "spark.task.maxDirectResultSize=20g" \
5987
--conf "spark.sql.broadcastTimeout=10000000" \
60-
--conf "spark.driver.memory=32g" \
61-
--conf "spark.executor.memory=32g" \
88+
--conf "spark.driver.memory=2g" \
89+
--conf "spark.executor.memory=2g" \
90+
--conf "spark.dynamicAllocation.enabled=false" \
6291
--conf "spark.eventLog.enabled=true" \
6392
--conf "spark.eventLog.dir=/build/spark-events" \
6493
--conf "spark.driver.extraJavaOptions=-classpath /conf/:/build/spark-${SPARK_VERSION}/jars/*:/examples/scala/target/scala-2.12/" \
65-
--packages com.github.scopt:scopt_2.12:4.0.0-RC2,ch.cern.sparkmeasure:spark-measure_2.12:0.17 \
66-
--jars /build/downloads/spark-sql-macros_2.12.10_0.1.0-SNAPSHOT.jar,/dikeHDFS/client/ndp-hdfs/target/ndp-hdfs-1.0.jar,/build/extra_jars/*,/pushdown-datasource/target/scala-2.12/pushdown-datasource_2.12-0.1.0.jar,/build/downloads/h2-1.4.200.jar \
94+
--packages com.github.luben:zstd-jni:1.5.0-4,org.json:json:20210307,javax.json:javax.json-api:1.1.4,org.glassfish:javax.json:1.1.4,com.github.scopt:scopt_2.12:4.0.0-RC2,ch.cern.sparkmeasure:spark-measure_2.12:0.17 \
95+
--jars /dikeHDFS/client/ndp-hdfs/target/ndp-hdfs-1.0.jar,/pushdown-datasource/target/scala-2.12/pushdown-datasource_2.12-0.1.0.jar \
96+
/tpch/tpch-spark/target/scala-2.12/spark-tpc-h-queries_2.12-1.0.jar $@ --workers ${WORKERS}
97+
elif [ ${TEST} != "YES" ]; then
98+
#local[$WORKERS]
99+
#spark://172.18.0.2:7077
100+
# --conf "spark.executor.instances=1" \
101+
# --conf "spark.executor.cores=1" \
102+
HOST=sparkmaster
103+
HOST=172.169.1.40
104+
DRIVER_IP=172.169.1.40
105+
docker exec -it ${DOCKER} spark-submit --total-executor-cores $WORKERS \
106+
--master spark://$HOST:7077 \
107+
--conf "ivy.shared.default.root=/build/ivy_jars" \
108+
--conf "spark.jars.ivy=/build/ivy" \
109+
--conf "spark.driver.maxResultSize=20g" \
110+
--conf "spark.task.maxDirectResultSize=20g" \
111+
--conf "spark.sql.broadcastTimeout=10000000" \
112+
--conf "spark.driver.memory=2g" \
113+
--conf "spark.executor.memory=2g" \
114+
--conf "spark.dynamicAllocation.enabled=false" \
115+
--conf "spark.eventLog.enabled=true" \
116+
--conf "spark.eventLog.dir=/build/spark-events" \
117+
--conf "spark.hadoop.dfs.client.use.datanode.hostname=true" \
118+
--conf "spark.hadoop.dfs.namenode.rpc-address=172.169.1.60:9000" \
119+
--conf "spark.driver.host=${DRIVER_IP}" \
120+
--conf "spark.driver.bindAddress=${DRIVER_IP}" \
121+
--conf "spark.driver.extraJavaOptions=-classpath /conf/:/build/spark-${SPARK_VERSION}/jars/*:/examples/scala/target/scala-2.12/" \
122+
--packages com.github.luben:zstd-jni:1.5.0-4,org.json:json:20210307,javax.json:javax.json-api:1.1.4,org.glassfish:javax.json:1.1.4,com.github.scopt:scopt_2.12:4.0.0-RC2,ch.cern.sparkmeasure:spark-measure_2.12:0.17 \
123+
--jars /dikeHDFS/client/ndp-hdfs/target/ndp-hdfs-1.0.jar,/pushdown-datasource/target/scala-2.12/pushdown-datasource_2.12-0.1.0.jar \
67124
/tpch/tpch-spark/target/scala-2.12/spark-tpc-h-queries_2.12-1.0.jar $@ --workers ${WORKERS}
68125
fi
126+
# --jars /dikeHDFS/client/ndp-hdfs/target/ndp-hdfs-1.0.jar,/pushdown-datasource/target/scala-2.12/pushdown-datasource_2.12-0.1.0.jar \
69127

70128
#,org.dike.hdfs:ndp-hdfs:1.0 /dikeHDFS/client/ndp-hdfs/target/ndp-hdfs-1.0-jar-with-dependencies.jar,
71129
#--repositories file:/build/dike \

spark/bin/start-master.sh

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
#!/bin/bash
2-
bin/spark-class org.apache.spark.deploy.master.Master > /opt/volume/logs/master.log 2>&1 &
32

3+
4+
if [[ ! -z "${SPARK_MASTER_HOST}" ]]; then
5+
echo "master ip is: $SPARK_MASTER_HOST"
6+
./sbin/start-master.sh --ip $SPARK_MASTER_HOST --port 7077 > /opt/volume/logs/master.log 2>&1 &
7+
else
8+
bin/spark-class org.apache.spark.deploy.master.Master > /opt/volume/logs/master.log 2>&1 &
9+
fi
10+
# --properties-file /conf/spark-defaults.conf
411
echo "SPARK_MASTER_READY"
512
echo "SPARK_MASTER_READY" > /opt/volume/status/SPARK_MASTER_STATE
613

714
echo "RUNNING_MODE $RUNNING_MODE"
815

916
if [ "$RUNNING_MODE" = "daemon" ]; then
1017
sleep infinity
11-
fi
18+
fi

spark/bin/start-worker.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
2-
bin/spark-class org.apache.spark.deploy.worker.Worker spark://sparkmaster:7077 > /opt/volume/logs/worker.log 2>&1 &
3-
2+
./sbin/start-worker.sh spark://sparkmaster:7077 > /opt/volume/logs/worker.log 2>&1 &
3+
# --properties-file /conf/spark-defaults.conf
44
echo "SPARK_WORKER_READY"
55
echo "SPARK_WORKER_READY" > /opt/volume/status/SPARK_WORKER_STATE
66

spark/build_spark.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ if [[ "$1" == "-d" ]]; then
2727
-v "${ROOT_DIR}/build/.cache:${DOCKER_HOME_DIR}/.cache" \
2828
-v "${ROOT_DIR}/build/.ivy2:${DOCKER_HOME_DIR}/.ivy2" \
2929
-u "${USER_ID}" \
30-
"spark-build-${USER_NAME}" $@
30+
"v${DIKE_VERSION}-spark-build-${USER_NAME}" $@
3131
else
3232
echo "Starting build for $@"
3333
cd docker
@@ -45,5 +45,5 @@ else
4545
-v "${ROOT_DIR}/build/.cache:${DOCKER_HOME_DIR}/.cache" \
4646
-v "${ROOT_DIR}/build/.ivy2:${DOCKER_HOME_DIR}/.ivy2" \
4747
-u "${USER_ID}" \
48-
"spark-build-${USER_NAME}" /scripts/build.sh spark
48+
"v${DIKE_VERSION}-spark-build-${USER_NAME}" /scripts/build.sh spark
4949
fi

spark/docker/Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616

17-
FROM ubuntu:20.04 as builder_base
17+
FROM ubuntu:20.04 as v1_builder_base
1818
LABEL version="1.0"
1919
LABEL maintainer="Robert Foley <robfoley972@gmail.com>"
2020

@@ -84,13 +84,13 @@ WORKDIR $SPARK_HOME
8484
####
8585
#### Spark build docker stage.
8686
####
87-
FROM builder_base as builder
87+
FROM v1_builder_base as v1_builder
8888
LABEL version="1.0"
8989

9090
####
9191
#### Spark run docker stage.
9292
####
93-
FROM builder_base as run
93+
FROM v1_builder_base as v1_run
9494
LABEL version="1.0"
9595

9696
COPY entry.sh /usr/local/bin/entry.sh

spark/docker/build.sh

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
source spark_version
1818
echo "SPARK_VERSION $SPARK_VERSION"
1919
ROOT_DIR=$(pwd)
20-
20+
source setup.sh
2121
DOCKER_DIR=${ROOT_DIR}
2222
DOCKER_FILE="${DOCKER_DIR}/Dockerfile"
2323

@@ -62,17 +62,17 @@ fi
6262
echo "User id is: $USER_ID"
6363
echo "Group id is: $GROUP_ID"
6464

65-
docker build -f Dockerfile --target builder --build-arg SPARK_VERSION=$SPARK_VERSION -t spark_build .
66-
echo "Done building spark_build docker"
65+
docker build -f Dockerfile --target v${DIKE_VERSION}_builder --build_arg SPARK_VERSION=$SPARK_VERSION -t v${DIKE_VERSION}_spark_build .
66+
echo "Done building v${DIKE_VERSION}_spark_build docker"
6767

68-
docker build -f Dockerfile --build-arg SPARK_VERSION=$SPARK_VERSION -t spark_run .
69-
echo "Done building spark_run docker"
68+
docker build -f Dockerfile --build-arg SPARK_VERSION=$SPARK_VERSION -t v${DIKE_VERSION}_spark_run .
69+
echo "Done building v${DIKE_VERSION}_spark_run docker"
7070

7171
# Set the home directory in the Docker container.
7272
DOCKER_HOME_DIR=${DOCKER_HOME_DIR:-/home/${USER_NAME}}
7373

74-
docker build -t "spark-build-${USER_NAME}" - <<UserSpecificDocker
75-
FROM spark_build
74+
docker build -t "v${DIKE_VERSION}-spark-build-${USER_NAME}" - <<UserSpecificDocker
75+
FROM v${DIKE_VERSION}_spark_build
7676
RUN rm -f /var/log/faillog /var/log/lastlog
7777
RUN groupadd --non-unique -g ${GROUP_ID} ${USER_NAME}
7878
RUN useradd -g ${GROUP_ID} -u ${USER_ID} -k /root -m ${USER_NAME} -d "${DOCKER_HOME_DIR}"
@@ -87,10 +87,10 @@ RUN chmod 0600 ~/.ssh/authorized_keys
8787
EXPOSE 22
8888
8989
UserSpecificDocker
90-
echo "Done building spark-build-${USER_NAME}"
90+
echo "Done building v${DIKE_VERSION}-spark-build-${USER_NAME}"
9191

92-
docker build -t "spark-run-${USER_NAME}" - <<UserSpecificDocker
93-
FROM spark_run
92+
docker build -t "v${DIKE_VERSION}-spark-run-${USER_NAME}" - <<UserSpecificDocker
93+
FROM v${DIKE_VERSION}_spark_run
9494
RUN rm -f /var/log/faillog /var/log/lastlog
9595
RUN groupadd --non-unique -g ${GROUP_ID} ${USER_NAME}
9696
RUN useradd -g ${GROUP_ID} -u ${USER_ID} -k /root -m ${USER_NAME} -d "${DOCKER_HOME_DIR}"
@@ -105,6 +105,6 @@ RUN chmod 0600 ~/.ssh/authorized_keys
105105
EXPOSE 22
106106
107107
UserSpecificDocker
108-
echo "Done building spark-run-${USER_NAME}"
108+
echo "Done building v${DIKE_VERSION}-spark-run-${USER_NAME}"
109109

110110
echo "Done building dockers"

spark/docker/setup.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1515
# See the License for the specific language governing permissions and
1616
# limitations under the License.
17-
17+
DIKE_VERSION=1
18+
echo "VERSION: ${DIKE_VERSION}"
1819
ROOT_DIR=$(pwd)
1920
DOCKER_DIR=docker
2021
DOCKER_FILE="${DOCKER_DIR}/Dockerfile"
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#!/bin/bash
2+
3+
# Include the setup for our cached local directories. (.m2, .ivy2, etc)
4+
source docker/setup.sh
5+
6+
mkdir -p "${ROOT_DIR}/volume/logs"
7+
rm -f "${ROOT_DIR}/volume/logs/master*.log"
8+
9+
mkdir -p "${ROOT_DIR}/volume/status"
10+
rm -f "${ROOT_DIR}/volume/status/MASTER*"
11+
12+
CMD="sleep 365d"
13+
RUNNING_MODE="daemon"
14+
15+
DOCKER_HOSTS="$(cat spark.config | grep DOCKER_HOSTS)"
16+
IFS='=' read -a IP_ARRAY <<< "$DOCKER_HOSTS"
17+
DOCKER_HOSTS=${IP_ARRAY[1]}
18+
HOSTS=""
19+
IFS=',' read -a IP_ARRAY <<< "$DOCKER_HOSTS"
20+
for i in "${IP_ARRAY[@]}"
21+
do
22+
HOSTS="$HOSTS --add-host=$i"
23+
done
24+
DOCKER_HOSTS=$HOSTS
25+
echo "Docker Hosts: $DOCKER_HOSTS"
26+
27+
LAUNCHER_IP="$(cat spark.config | grep LAUNCHER_IP)"
28+
IFS='=' read -a IP_ARRAY <<< "$LAUNCHER_IP"
29+
LAUNCHER_IP=${IP_ARRAY[1]}
30+
echo "LAUNCHER_IP: $LAUNCHER_IP"
31+
32+
if [ $RUNNING_MODE = "interactive" ]; then
33+
DOCKER_IT="-i -t"
34+
fi
35+
# --cpuset-cpus="9-12" \
36+
DOCKER_RUN="docker run ${DOCKER_IT} --rm \
37+
-p 5006:5006 \
38+
--name sparklauncher \
39+
--network host ${DOCKER_HOSTS} \
40+
-e MASTER=spark://sparkmaster:7077 \
41+
-e SPARK_CONF_DIR=/conf \
42+
-e SPARK_PUBLIC_DNS=localhost \
43+
-e SPARK_MASTER="spark://sparkmaster:7077" \
44+
-e SPARK_DRIVER_HOST=${LAUNCHER_IP} \
45+
--mount type=bind,source=$(pwd)/spark,target=/spark \
46+
--mount type=bind,source=$(pwd)/build,target=/build \
47+
--mount type=bind,source=$(pwd)/examples,target=/examples \
48+
--mount type=bind,source=$(pwd)/../dikeHDFS,target=/dikeHDFS \
49+
--mount type=bind,source=$(pwd)/../benchmark/tpch,target=/tpch \
50+
--mount type=bind,source=$(pwd)/../data,target=/tpch-data \
51+
--mount type=bind,source=$(pwd)/../pushdown-datasource/pushdown-datasource,target=/pushdown-datasource \
52+
-v $(pwd)/conf/master:/conf \
53+
-v ${ROOT_DIR}/build/.m2:${DOCKER_HOME_DIR}/.m2 \
54+
-v ${ROOT_DIR}/build/.gnupg:${DOCKER_HOME_DIR}/.gnupg \
55+
-v ${ROOT_DIR}/build/.sbt:${DOCKER_HOME_DIR}/.sbt \
56+
-v ${ROOT_DIR}/build/.cache:${DOCKER_HOME_DIR}/.cache \
57+
-v ${ROOT_DIR}/build/.ivy2:${DOCKER_HOME_DIR}/.ivy2 \
58+
-v ${ROOT_DIR}/volume/status:/opt/volume/status \
59+
-v ${ROOT_DIR}/volume/logs:/opt/volume/logs \
60+
-v ${ROOT_DIR}/bin/:${DOCKER_HOME_DIR}/bin \
61+
-e RUNNING_MODE=${RUNNING_MODE} \
62+
-u ${USER_ID} \
63+
v${DIKE_VERSION}-spark-run-${USER_NAME} ${CMD}"
64+
65+
if [ $RUNNING_MODE = "interactive" ]; then
66+
eval "${DOCKER_RUN}"
67+
else
68+
eval "${DOCKER_RUN}" &
69+
while [ ! -f "${ROOT_DIR}/volume/status/SPARK_MASTER_STATE" ]; do
70+
sleep 1
71+
done
72+
73+
cat "${ROOT_DIR}/volume/status/SPARK_MASTER_STATE"
74+
fi

0 commit comments

Comments
 (0)