# # 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. ####### # Advanced Users Only ###### # You can do things like replace parts of the shell underbelly. # Most of this code is in hadoop-functions.sh. # # # For example, if you want to add compression to the rotation # menthod for the .out files that daemons generate, you can do # that by redefining the hadoop_rotate_log function by # uncommenting this code block: #function hadoop_rotate_log #{ # local log=$1; # local num=${2:-5}; # # if [[ -f "${log}" ]]; then # while [[ ${num} -gt 1 ]]; do # #shellcheck disable=SC2086 # let prev=${num}-1 # if [[ -f "${log}.${prev}.gz" ]]; then # mv "${log}.${prev}.gz" "${log}.${num}.gz" # fi # num=${prev} # done # mv "${log}" "${log}.${num}" # gzip -9 "${log}.${num}" # fi #} # # # # Example: finding java # # By default, Hadoop assumes that $JAVA_HOME is always defined # outside of its configuration. Eons ago, Apple standardized # on a helper program called java_home to find it for you. # #function hadoop_java_setup #{ # # if [[ -z "${JAVA_HOME}" ]]; then # case $HADOOP_OS_TYPE in # Darwin*) # JAVA_HOME=$(/usr/libexec/java_home) # ;; # esac # fi # # # Bail if we did not detect it # if [[ -z "${JAVA_HOME}" ]]; then # echo "ERROR: JAVA_HOME is not set and could not be found." 1>&2 # exit 1 # fi # # if [[ ! -d "${JAVA_HOME}" ]]; then # echo "ERROR: JAVA_HOME (${JAVA_HOME}) does not exist." 1>&2 # exit 1 # fi # # JAVA="${JAVA_HOME}/bin/java" # # if [[ ! -x ${JAVA} ]]; then # echo "ERROR: ${JAVA} is not executable." 1>&2 # exit 1 # fi #} # # Example: efficient command execution for the slaves # # To improve performance, you can use xargs -P # instead of the for loop, if supported. # #function hadoop_connect_to_hosts_without_pdsh #{ # # quoting here gets tricky. it's easier to push it into a function # # so that we don't have to deal with it. However... # # xargs can't use a function so instead we'll export it out # # and force it into a subshell # # moral of the story: just use pdsh. # export -f hadoop_actual_ssh # export HADOOP_SSH_OPTS # # # xargs is used with option -I to replace the placeholder in arguments # # list with each hostname read from stdin/pipe. But it consider one # # line as one argument while reading from stdin/pipe. So place each # # hostname in different lines while passing via pipe. # SLAVE_NAMES=$(echo "$SLAVE_NAMES" | tr ' ' '\n' ) # echo "${SLAVE_NAMES}" | \ # xargs -n 1 -P"${HADOOP_SSH_PARALLEL}" \ # -I {} bash -c -- "hadoop_actual_ssh {} ${params}" # wait #}