123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- #!/usr/bin/env 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.
- ##
- set -e
- DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
- if [ -n "$SLEEP_SECONDS" ]; then
- echo "Sleeping for $SLEEP_SECONDS seconds"
- sleep $SLEEP_SECONDS
- fi
- #
- # You can wait for an other TCP port with these settings.
- #
- # Example:
- #
- # export WAITFOR=localhost:9878
- #
- # With an optional parameter, you can also set the maximum
- # time of waiting with (in seconds) with WAITFOR_TIMEOUT.
- # (The default is 300 seconds / 5 minutes.)
- if [ ! -z "$WAITFOR" ]; then
- echo "Waiting for the service $WAITFOR"
- WAITFOR_HOST=$(printf "%s\n" "$WAITFOR"| cut -d : -f 1)
- WAITFOR_PORT=$(printf "%s\n" "$WAITFOR"| cut -d : -f 2)
- for i in `seq ${WAITFOR_TIMEOUT:-300} -1 0` ; do
- set +e
- nc -z "$WAITFOR_HOST" "$WAITFOR_PORT" > /dev/null 2>&1
- result=$?
- set -e
- if [ $result -eq 0 ] ; then
- break
- fi
- sleep 1
- done
- if [ "$i" -eq 0 ]; then
- echo "Waiting for service $WAITFOR is timed out." >&2
- exit 1
- f
- fi
- fi
- if [ -n "$KERBEROS_ENABLED" ]; then
- echo "Setting up kerberos!!"
- KERBEROS_SERVER=${KERBEROS_SERVER:-krb5}
- ISSUER_SERVER=${ISSUER_SERVER:-$KERBEROS_SERVER\:8081}
- echo "KDC ISSUER_SERVER => $ISSUER_SERVER"
- if [ -n "$SLEEP_SECONDS" ]; then
- echo "Sleeping for $(SLEEP_SECONDS) seconds"
- sleep "$SLEEP_SECONDS"
- fi
- if [ -z "$KEYTAB_DIR" ]; then
- KEYTAB_DIR='/etc/security/keytabs'
- fi
- while true
- do
- set +e
- STATUS=$(curl -s -o /dev/null -w '%{http_code}' http://"$ISSUER_SERVER"/keytab/test/test)
- set -e
- if [ "$STATUS" -eq 200 ]; then
- echo "Got 200, KDC service ready!!"
- break
- else
- echo "Got $STATUS :( KDC service not ready yet..."
- fi
- sleep 5
- done
- HOST_NAME=$(hostname -f)
- export HOST_NAME
- for NAME in ${KERBEROS_KEYTABS}; do
- echo "Download $NAME/$HOSTNAME@EXAMPLE.COM keytab file to $KEYTAB_DIR/$NAME.keytab"
- wget "http://$ISSUER_SERVER/keytab/$HOST_NAME/$NAME" -O "$KEYTAB_DIR/$NAME.keytab"
- klist -kt "$KEYTAB_DIR/$NAME.keytab"
- KERBEROS_ENABLED=true
- done
- sed "s/SERVER/$KERBEROS_SERVER/g" "$DIR"/krb5.conf | sudo tee /etc/krb5.conf
- fi
- CONF_DESTINATION_DIR="${HADOOP_CONF_DIR:-/opt/hadoop/etc/hadoop}"
- #Try to copy the defaults
- set +e
- if [[ -d "/opt/ozone/etc/hadoop" ]]; then
- cp /opt/hadoop/etc/hadoop/* "$CONF_DESTINATION_DIR/" > /dev/null 2>&1
- elif [[ -d "/opt/hadoop/etc/hadoop" ]]; then
- cp /opt/hadoop/etc/hadoop/* "$CONF_DESTINATION_DIR/" > /dev/null 2>&1
- fi
- set -e
- "$DIR"/envtoconf.py --destination "$CONF_DESTINATION_DIR"
- if [ -n "$ENSURE_NAMENODE_DIR" ]; then
- CLUSTERID_OPTS=""
- if [ -n "$ENSURE_NAMENODE_CLUSTERID" ]; then
- CLUSTERID_OPTS="-clusterid $ENSURE_NAMENODE_CLUSTERID"
- fi
- if [ ! -d "$ENSURE_NAMENODE_DIR" ]; then
- /opt/hadoop/bin/hdfs namenode -format -force "$CLUSTERID_OPTS"
- fi
- fi
- if [ -n "$ENSURE_STANDBY_NAMENODE_DIR" ]; then
- if [ ! -d "$ENSURE_STANDBY_NAMENODE_DIR" ]; then
- /opt/hadoop/bin/hdfs namenode -bootstrapStandby
- fi
- fi
- if [ -n "$ENSURE_SCM_INITIALIZED" ]; then
- if [ ! -f "$ENSURE_SCM_INITIALIZED" ]; then
- # Improve om and scm start up options
- /opt/hadoop/bin/ozone scm --init || /opt/hadoop/bin/ozone scm -init
- fi
- fi
- if [ -n "$ENSURE_OM_INITIALIZED" ]; then
- if [ ! -f "$ENSURE_OM_INITIALIZED" ]; then
- # Improve om and scm start up options
- /opt/hadoop/bin/ozone om --init || /opt/hadoop/bin/ozone om -createObjectStore
- fi
- fi
- # Supports byteman script to instrument hadoop process with byteman script
- #
- #
- if [ -n "$BYTEMAN_SCRIPT" ] || [ -n "$BYTEMAN_SCRIPT_URL" ]; then
- export PATH=$PATH:$BYTEMAN_DIR/bin
- if [ ! -z "$BYTEMAN_SCRIPT_URL" ]; then
- wget $BYTEMAN_SCRIPT_URL -O /tmp/byteman.btm
- export BYTEMAN_SCRIPT=/tmp/byteman.btm
- fi
- if [ ! -f "$BYTEMAN_SCRIPT" ]; then
- echo "ERROR: The defined $BYTEMAN_SCRIPT does not exist!!!"
- exit -1
- fi
- AGENT_STRING="-javaagent:/opt/byteman.jar=script:$BYTEMAN_SCRIPT"
- export HADOOP_OPTS="$AGENT_STRING $HADOOP_OPTS"
- echo "Process is instrumented with adding $AGENT_STRING to HADOOP_OPTS"
- fi
- "$@"
|