diff --git a/hadoop-ozone/common/src/main/bin/start-ozone.sh b/hadoop-ozone/common/src/main/bin/start-ozone.sh index dda0a1c173..92bc4a8691 100644 --- a/hadoop-ozone/common/src/main/bin/start-ozone.sh +++ b/hadoop-ozone/common/src/main/bin/start-ozone.sh @@ -47,6 +47,26 @@ else exit 1 fi +# get arguments +if [[ $# -ge 1 ]]; then + startOpt="$1" + shift + case "$startOpt" in + -upgrade) + nameStartOpt="$startOpt" + ;; + -rollback) + dataStartOpt="$startOpt" + ;; + *) + hadoop_exit_with_usage 1 + ;; + esac +fi + +#Add other possible options +nameStartOpt="$nameStartOpt $*" + SECURITY_ENABLED=$("${HADOOP_HDFS_HOME}/bin/ozone" getozoneconf -confKey hadoop.security.authentication | tr '[:upper:]' '[:lower:]' 2>&-) SECURITY_AUTHORIZATION_ENABLED=$("${HADOOP_HDFS_HOME}/bin/ozone" getozoneconf -confKey hadoop.security.authorization | tr '[:upper:]' '[:lower:]' 2>&-) @@ -65,11 +85,97 @@ fi #--------------------------------------------------------- # Start hdfs before starting ozone daemons -if [[ -f "${bin}/start-dfs.sh" ]]; then - "${bin}/start-dfs.sh" -else - echo "ERROR: Cannot execute ${bin}/start-dfs.sh." 2>&1 - exit 1 + +#--------------------------------------------------------- +# namenodes + +NAMENODES=$("${HADOOP_HDFS_HOME}/bin/hdfs" getconf -namenodes 2>/dev/null) + +if [[ -z "${NAMENODES}" ]]; then + NAMENODES=$(hostname) +fi + +echo "Starting namenodes on [${NAMENODES}]" +hadoop_uservar_su hdfs namenode "${HADOOP_HDFS_HOME}/bin/hdfs" \ + --workers \ + --config "${HADOOP_CONF_DIR}" \ + --hostnames "${NAMENODES}" \ + --daemon start \ + namenode ${nameStartOpt} + +HADOOP_JUMBO_RETCOUNTER=$? + +#--------------------------------------------------------- +# datanodes (using default workers file) + +echo "Starting datanodes" +hadoop_uservar_su hdfs datanode "${HADOOP_HDFS_HOME}/bin/ozone" \ + --workers \ + --config "${HADOOP_CONF_DIR}" \ + --daemon start \ + datanode ${dataStartOpt} +(( HADOOP_JUMBO_RETCOUNTER=HADOOP_JUMBO_RETCOUNTER + $? )) + +#--------------------------------------------------------- +# secondary namenodes (if any) + +SECONDARY_NAMENODES=$("${HADOOP_HDFS_HOME}/bin/hdfs" getconf -secondarynamenodes 2>/dev/null) + +if [[ -n "${SECONDARY_NAMENODES}" ]]; then + + if [[ "${NAMENODES}" =~ , ]]; then + + hadoop_error "WARNING: Highly available NameNode is configured." + hadoop_error "WARNING: Skipping SecondaryNameNode." + + else + + if [[ "${SECONDARY_NAMENODES}" == "0.0.0.0" ]]; then + SECONDARY_NAMENODES=$(hostname) + fi + + echo "Starting secondary namenodes [${SECONDARY_NAMENODES}]" + + hadoop_uservar_su hdfs secondarynamenode "${HADOOP_HDFS_HOME}/bin/hdfs" \ + --workers \ + --config "${HADOOP_CONF_DIR}" \ + --hostnames "${SECONDARY_NAMENODES}" \ + --daemon start \ + secondarynamenode + (( HADOOP_JUMBO_RETCOUNTER=HADOOP_JUMBO_RETCOUNTER + $? )) + fi +fi + +#--------------------------------------------------------- +# quorumjournal nodes (if any) + +JOURNAL_NODES=$("${HADOOP_HDFS_HOME}/bin/hdfs" getconf -journalNodes 2>&-) + +if [[ "${#JOURNAL_NODES}" != 0 ]]; then + echo "Starting journal nodes [${JOURNAL_NODES}]" + + hadoop_uservar_su hdfs journalnode "${HADOOP_HDFS_HOME}/bin/hdfs" \ + --workers \ + --config "${HADOOP_CONF_DIR}" \ + --hostnames "${JOURNAL_NODES}" \ + --daemon start \ + journalnode + (( HADOOP_JUMBO_RETCOUNTER=HADOOP_JUMBO_RETCOUNTER + $? )) +fi + +#--------------------------------------------------------- +# ZK Failover controllers, if auto-HA is enabled +AUTOHA_ENABLED=$("${HADOOP_HDFS_HOME}/bin/hdfs" getconf -confKey dfs.ha.automatic-failover.enabled | tr '[:upper:]' '[:lower:]') +if [[ "${AUTOHA_ENABLED}" = "true" ]]; then + echo "Starting ZK Failover Controllers on NN hosts [${NAMENODES}]" + + hadoop_uservar_su hdfs zkfc "${HADOOP_HDFS_HOME}/bin/hdfs" \ + --workers \ + --config "${HADOOP_CONF_DIR}" \ + --hostnames "${NAMENODES}" \ + --daemon start \ + zkfc + (( HADOOP_JUMBO_RETCOUNTER=HADOOP_JUMBO_RETCOUNTER + $? )) fi #---------------------------------------------------------