ozone 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. #!/usr/bin/env bash
  2. # Licensed to the Apache Software Foundation (ASF) under one or more
  3. # contributor license agreements. See the NOTICE file distributed with
  4. # this work for additional information regarding copyright ownership.
  5. # The ASF licenses this file to You under the Apache License, Version 2.0
  6. # (the "License"); you may not use this file except in compliance with
  7. # the License. You may obtain a copy of the License at
  8. #
  9. # http://www.apache.org/licenses/LICENSE-2.0
  10. #
  11. # Unless required by applicable law or agreed to in writing, software
  12. # distributed under the License is distributed on an "AS IS" BASIS,
  13. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. # See the License for the specific language governing permissions and
  15. # limitations under the License.
  16. # The name of the script being executed.
  17. HADOOP_SHELL_EXECNAME="ozone"
  18. MYNAME="${BASH_SOURCE-$0}"
  19. ## @description build up the hdfs command's usage text.
  20. ## @audience public
  21. ## @stability stable
  22. ## @replaceable no
  23. function hadoop_usage
  24. {
  25. hadoop_add_option "--buildpaths" "attempt to add class files from build tree"
  26. hadoop_add_option "--daemon (start|status|stop)" "operate on a daemon"
  27. hadoop_add_option "--hostnames list[,of,host,names]" "hosts to use in worker mode"
  28. hadoop_add_option "--loglevel level" "set the log4j level for this command"
  29. hadoop_add_option "--hosts filename" "list of hosts to use in worker mode"
  30. hadoop_add_option "--workers" "turn on worker mode"
  31. hadoop_add_subcommand "classpath" client "prints the class path needed to get the hadoop jar and the required libraries"
  32. hadoop_add_subcommand "datanode" daemon "run a HDDS datanode"
  33. hadoop_add_subcommand "envvars" client "display computed Hadoop environment variables"
  34. hadoop_add_subcommand "freon" client "runs an ozone data generator"
  35. hadoop_add_subcommand "genesis" client "runs a collection of ozone benchmarks to help with tuning."
  36. hadoop_add_subcommand "getozoneconf" client "get ozone config values from configuration"
  37. hadoop_add_subcommand "jmxget" admin "get JMX exported values from NameNode or DataNode."
  38. hadoop_add_subcommand "om" daemon "Ozone Manager"
  39. hadoop_add_subcommand "o3" client "command line interface for ozone"
  40. hadoop_add_subcommand "noz" client "ozone debug tool, convert ozone metadata into relational data"
  41. hadoop_add_subcommand "scm" daemon "run the Storage Container Manager service"
  42. hadoop_add_subcommand "scmcli" client "run the CLI of the Storage Container Manager"
  43. hadoop_add_subcommand "version" client "print the version"
  44. hadoop_add_subcommand "genconf" client "generate minimally required ozone configs and output to ozone-site.xml in specified path"
  45. hadoop_generate_usage "${HADOOP_SHELL_EXECNAME}" false
  46. }
  47. ## @description Default command handler for hadoop command
  48. ## @audience public
  49. ## @stability stable
  50. ## @replaceable no
  51. ## @param CLI arguments
  52. function ozonecmd_case
  53. {
  54. subcmd=$1
  55. shift
  56. case ${subcmd} in
  57. classpath)
  58. hadoop_do_classpath_subcommand HADOOP_CLASSNAME "$@"
  59. ;;
  60. datanode)
  61. HADOOP_SUBCMD_SUPPORTDAEMONIZATION="true"
  62. HADOOP_CLASSNAME=org.apache.hadoop.ozone.HddsDatanodeService
  63. ;;
  64. envvars)
  65. echo "JAVA_HOME='${JAVA_HOME}'"
  66. echo "HADOOP_HDFS_HOME='${HADOOP_HDFS_HOME}'"
  67. echo "HDFS_DIR='${HDFS_DIR}'"
  68. echo "HDFS_LIB_JARS_DIR='${HDFS_LIB_JARS_DIR}'"
  69. echo "HADOOP_CONF_DIR='${HADOOP_CONF_DIR}'"
  70. echo "HADOOP_TOOLS_HOME='${HADOOP_TOOLS_HOME}'"
  71. echo "HADOOP_TOOLS_DIR='${HADOOP_TOOLS_DIR}'"
  72. echo "HADOOP_TOOLS_LIB_JARS_DIR='${HADOOP_TOOLS_LIB_JARS_DIR}'"
  73. if [[ -n "${QATESTMODE}" ]]; then
  74. echo "MYNAME=${MYNAME}"
  75. echo "HADOOP_SHELL_EXECNAME=${HADOOP_SHELL_EXECNAME}"
  76. fi
  77. exit 0
  78. ;;
  79. freon)
  80. HADOOP_CLASSNAME=org.apache.hadoop.ozone.freon.Freon
  81. ;;
  82. genesis)
  83. HADOOP_CLASSNAME=org.apache.hadoop.ozone.genesis.Genesis
  84. ;;
  85. getozoneconf)
  86. HADOOP_CLASSNAME=org.apache.hadoop.ozone.freon.OzoneGetConf;
  87. ;;
  88. om)
  89. HADOOP_SUBCMD_SUPPORTDAEMONIZATION="true"
  90. HADOOP_CLASSNAME=org.apache.hadoop.ozone.om.OzoneManager
  91. ;;
  92. oz)
  93. HADOOP_CLASSNAME=org.apache.hadoop.ozone.web.ozShell.Shell
  94. ;;
  95. noz)
  96. HADOOP_CLASSNAME=org.apache.hadoop.ozone.scm.cli.SQLCLI
  97. ;;
  98. scm)
  99. HADOOP_SUBCMD_SUPPORTDAEMONIZATION="true"
  100. HADOOP_CLASSNAME='org.apache.hadoop.hdds.scm.server.StorageContainerManager'
  101. hadoop_debug "Appending HDFS_STORAGECONTAINERMANAGER_OPTS onto HADOOP_OPTS"
  102. HADOOP_OPTS="${HADOOP_OPTS} ${HDFS_STORAGECONTAINERMANAGER_OPTS}"
  103. ;;
  104. scmcli)
  105. HADOOP_CLASSNAME=org.apache.hadoop.ozone.scm.cli.SCMCLI
  106. ;;
  107. version)
  108. HADOOP_CLASSNAME=org.apache.hadoop.util.VersionInfo
  109. ;;
  110. genconf)
  111. HADOOP_CLASSNAME=org.apache.hadoop.ozone.genconf.GenerateOzoneRequiredConfigurations
  112. ;;
  113. *)
  114. HADOOP_CLASSNAME="${subcmd}"
  115. if ! hadoop_validate_classname "${HADOOP_CLASSNAME}"; then
  116. hadoop_exit_with_usage 1
  117. fi
  118. ;;
  119. esac
  120. }
  121. # let's locate libexec...
  122. if [[ -n "${HADOOP_HOME}" ]]; then
  123. HADOOP_DEFAULT_LIBEXEC_DIR="${HADOOP_HOME}/libexec"
  124. else
  125. bin=$(cd -P -- "$(dirname -- "${MYNAME}")" >/dev/null && pwd -P)
  126. HADOOP_DEFAULT_LIBEXEC_DIR="${bin}/../libexec"
  127. fi
  128. HADOOP_LIBEXEC_DIR="${HADOOP_LIBEXEC_DIR:-$HADOOP_DEFAULT_LIBEXEC_DIR}"
  129. # shellcheck disable=SC2034
  130. HADOOP_NEW_CONFIG=true
  131. if [[ -f "${HADOOP_LIBEXEC_DIR}/hdfs-config.sh" ]]; then
  132. # shellcheck source=./hadoop-hdfs-project/hadoop-hdfs/src/main/bin/hdfs-config.sh
  133. . "${HADOOP_LIBEXEC_DIR}/hdfs-config.sh"
  134. else
  135. echo "ERROR: Cannot execute ${HADOOP_LIBEXEC_DIR}/hdfs-config.sh." 2>&1
  136. exit 1
  137. fi
  138. # now that we have support code, let's abs MYNAME so we can use it later
  139. MYNAME=$(hadoop_abs "${MYNAME}")
  140. if [[ $# = 0 ]]; then
  141. hadoop_exit_with_usage 1
  142. fi
  143. HADOOP_SUBCMD=$1
  144. shift
  145. if hadoop_need_reexec ozone "${HADOOP_SUBCMD}"; then
  146. hadoop_uservar_su ozone "${HADOOP_SUBCMD}" \
  147. "${MYNAME}" \
  148. "--reexec" \
  149. "${HADOOP_USER_PARAMS[@]}"
  150. exit $?
  151. fi
  152. hadoop_verify_user_perm "${HADOOP_SHELL_EXECNAME}" "${HADOOP_SUBCMD}"
  153. HADOOP_SUBCMD_ARGS=("$@")
  154. if declare -f ozone_subcommand_"${HADOOP_SUBCMD}" >/dev/null 2>&1; then
  155. hadoop_debug "Calling dynamically: ozone_subcommand_${HADOOP_SUBCMD} ${HADOOP_SUBCMD_ARGS[*]}"
  156. "ozone_subcommand_${HADOOP_SUBCMD}" "${HADOOP_SUBCMD_ARGS[@]}"
  157. else
  158. ozonecmd_case "${HADOOP_SUBCMD}" "${HADOOP_SUBCMD_ARGS[@]}"
  159. fi
  160. hadoop_add_client_opts
  161. if [[ ${HADOOP_WORKER_MODE} = true ]]; then
  162. hadoop_common_worker_mode_execute "${HADOOP_HDFS_HOME}/bin/ozone" "${HADOOP_USER_PARAMS[@]}"
  163. exit $?
  164. fi
  165. hadoop_subcommand_opts "${HADOOP_SHELL_EXECNAME}" "${HADOOP_SUBCMD}"
  166. # everything is in globals at this point, so call the generic handler
  167. hadoop_generic_java_subcmd_handler