hetu-core/presto-hive-hadoop2/bin/common.sh

103 lines
2.8 KiB
Bash

#!/bin/bash
function retry() {
END=$(($(date +%s) + 600))
while (( $(date +%s) < $END )); do
set +e
"$@"
EXIT_CODE=$?
set -e
if [[ ${EXIT_CODE} == 0 ]]; then
break
fi
sleep 5
done
return ${EXIT_CODE}
}
function hadoop_master_container(){
docker-compose -f "${DOCKER_COMPOSE_LOCATION}" ps -q hadoop-master | grep .
}
function hadoop_master_ip() {
HADOOP_MASTER_CONTAINER=$(hadoop_master_container)
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $HADOOP_MASTER_CONTAINER
}
function check_hadoop() {
HADOOP_MASTER_CONTAINER=$(hadoop_master_container)
docker exec ${HADOOP_MASTER_CONTAINER} supervisorctl status hive-server2 | grep -iq running && \
docker exec ${HADOOP_MASTER_CONTAINER} supervisorctl status hive-metastore | grep -iq running && \
docker exec ${HADOOP_MASTER_CONTAINER} netstat -lpn | grep -iq 0.0.0.0:10000 &&
docker exec ${HADOOP_MASTER_CONTAINER} netstat -lpn | grep -iq 0.0.0.0:9083
}
function exec_in_hadoop_master_container() {
HADOOP_MASTER_CONTAINER=$(hadoop_master_container)
docker exec ${HADOOP_MASTER_CONTAINER} "$@"
}
function stop_unnecessary_hadoop_services() {
HADOOP_MASTER_CONTAINER=$(hadoop_master_container)
docker exec ${HADOOP_MASTER_CONTAINER} supervisorctl status
docker exec ${HADOOP_MASTER_CONTAINER} supervisorctl stop yarn-resourcemanager
docker exec ${HADOOP_MASTER_CONTAINER} supervisorctl stop yarn-nodemanager
}
function cleanup_docker_containers() {
# stop containers started with "up"
docker-compose -f "${DOCKER_COMPOSE_LOCATION}" down
# docker logs processes are being terminated as soon as docker container are stopped
# wait for docker logs termination
wait
}
function termination_handler(){
set +e
cleanup_docker_containers
exit 130
}
SCRIPT_DIR="${BASH_SOURCE%/*}"
INTEGRATION_TESTS_ROOT="${SCRIPT_DIR}/.."
PROJECT_ROOT="${INTEGRATION_TESTS_ROOT}/.."
DOCKER_COMPOSE_LOCATION="${INTEGRATION_TESTS_ROOT}/conf/docker-compose.yml"
# check docker and docker compose installation
docker-compose version
docker version
# extract proxy IP
if [ -n "${DOCKER_MACHINE_NAME:-}" ]
then
PROXY=`docker-machine ip`
else
PROXY=127.0.0.1
fi
function start_docker_containers() {
# stop already running containers
docker-compose -f "${DOCKER_COMPOSE_LOCATION}" down || true
# catch terminate signals
trap termination_handler INT TERM
# pull docker images
if [[ "${CONTINUOUS_INTEGRATION:-false}" == 'true' ]]; then
docker-compose -f "${DOCKER_COMPOSE_LOCATION}" pull
fi
# start containers
docker-compose -f "${DOCKER_COMPOSE_LOCATION}" up -d
# start docker logs for hadoop container
docker-compose -f "${DOCKER_COMPOSE_LOCATION}" logs --no-color hadoop-master &
# wait until hadoop processes is started
retry check_hadoop
}