blob: b3ecbcb371220a0228aea845f59133c89a9a000e [file] [log] [blame]
#!/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.
## @description check install user
## @audience public
## @stability stable
function check_install_user()
{
if [[ $(id -u) -ne 0 ]];then
echo "This script must be run with a ROOT user!"
exit # don't call exit_install()
fi
}
## @description exit install
## @audience public
## @stability stable
function exit_install()
{
echo "Exit the installation!"
exit
}
## @description Check if the IP address format is correct
## @audience public
## @stability stable
function valid_ip()
{
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3\}.[0-9]{1,3\}.[0-9]{1,3\}.[0-9]{1,3\}$ ]]; then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
if [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]; then
stat=$?
fi
fi
return $stat
}
## @description Check if the configuration file configuration is correct
## @audience public
## @stability stable
function check_install_conf()
{
echo "Check if the configuration file configuration is correct ..."
# check YARN_SECURITY's value
if [ -z "${YARN_SECURITY}" ]; then
echo "YARN_SECURITY=[$YARN_SECURITY] is empty! please use true or false "
exit_install
fi
# check resource manager
rmCount=${#YARN_RESOURCE_MANAGER_HOSTS[@]}
if [[ $rmCount -gt 2 ]]; then # <>2
echo "Number of resource manager nodes = [$rmCount], must be configured equal 2 servers! "
exit_install
fi
#
if [ -z "${YARN_REGISTRY_DNS_HOST_PORT}" ]; then
echo "YARN_REGISTRY_DNS_HOST_PORT=[$YARN_REGISTRY_DNS_HOST_PORT] is empty! "
exit_install
fi
# Check if it is empty
if [[ "${YARN_SECURITY}" = "true" && -z "${LOCAL_REALM}" ]]; then
echo "LOCAL_REALM=[$LOCAL_REALM] can not be empty! "
exit_install
fi
if [[ "${YARN_SECURITY}" = "true" && -z "${HADOOP_KEYTAB_LOCATION}" ]]; then
echo "HADOOP_KEYTAB_LOCATION=[$HADOOP_KEYTAB_LOCATION] can not be empty! "
exit_install
fi
if [[ "${YARN_SECURITY}" = "true" && -z "${HADOOP_PRINCIPAL}" ]]; then
echo "HADOOP_PRINCIPAL=[$HADOOP_PRINCIPAL] can not be empty! "
exit_install
fi
if [[ "${YARN_SECURITY}" = "true" && -z "${MAPRED_KEYTAB_LOCATION}" ]]; then
echo "MAPRED_KEYTAB_LOCATION=[$MAPRED_KEYTAB_LOCATION] can not be empty! "
exit_install
fi
if [[ "${YARN_SECURITY}" = "true" && -z "${YARN_KEYTAB_LOCATION}" ]]; then
echo "YARN_KEYTAB_LOCATION=[$YARN_KEYTAB_LOCATION] can not be empty! "
exit_install
fi
if [[ "${YARN_SECURITY}" = "true" && -z "${HTTP_KEYTAB_LOCATION}" ]]; then
echo "HTTP_KEYTAB_LOCATION=[$HTTP_KEYTAB_LOCATION] can not be empty! "
exit_install
fi
# check etcd conf
hostCount=${#ETCD_HOSTS[@]}
if [[ $hostCount -lt 3 && hostCount -ne 0 ]]; then # <>2
echo "Number of nodes = [$hostCount], must be configured to be greater than or equal to 3 servers! "
exit_install
fi
echo "Check if the configuration file configuration is correct [ Done ]"
}
## @description index by EtcdHosts list
## @audience public
## @stability stable
function indexByEtcdHosts() {
index=0
while [ "$index" -lt "${#ETCD_HOSTS[@]}" ]; do
if [ "${ETCD_HOSTS[$index]}" = "$1" ]; then
echo $index
return
fi
(( index++ ))
done
echo ""
}
## @description index by Resource Manager Hosts list
## @audience public
## @stability stable
function indexByRMHosts() {
index=0
while [ "$index" -lt "${#YARN_RESOURCE_MANAGER_HOSTS[@]}" ]; do
if [ "${YARN_RESOURCE_MANAGER_HOSTS[$index]}" = "$1" ]; then
echo $index
return
fi
(( index++ ))
done
echo ""
}
## @description index of node manager exclude Hosts list
## @audience public
## @stability stable
function indexOfNMExcludeHosts() {
index=0
while [ "$index" -lt "${#YARN_NODE_MANAGER_EXCLUDE_HOSTS[@]}" ]; do
if [ "${YARN_NODE_MANAGER_EXCLUDE_HOSTS[$index]}" = "$1" ]; then
echo $index
return
fi
(( index++ ))
done
echo ""
}
## @description index by Resource Manager Hosts list
## @audience public
## @stability stable
function pathExitsOnHDFS() {
exists=$("${HADOOP_HOME}/bin/hadoop" dfs -ls -d "$1")
echo "${exists}"
}
## @description get local IP
## @audience public
## @stability stable
function getLocalIP()
{
local _ip _myip _line _nl=$'\n'
while IFS=$': \t' read -r -a _line ;do
[ -z "${_line%inet}" ] &&
_ip=${_line[${#_line[1]}>4?1:2]} &&
[ "${_ip#127.0.0.1}" ] && _myip=$_ip
done< <(LANG=C /sbin/ifconfig)
printf "%s" ${1+-v} "$1" "%s${_nl:0:$((${#1}>0?0:1))}" "$_myip"
}
## @description get ip list
## @audience public
## @stability stable
function get_ip_list()
{
array=$(ip -o -4 addr | awk '{print $4}' | grep -v 127 | cut -d/ -f1)
for ip in "${array[@]}"
do
LOCAL_HOST_IP_LIST+=(${ip})
done
}