Uploaded image for project: 'Apache Ozone'
  1. Apache Ozone
  2. HDDS-7002

Unnable to deploy ozone in cluster mode

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Not A Bug
    • 1.2.1
    • 1.2.1
    • Native
    • None
    • ozone 1.2.1

      hdfs 3.1.3

    • I just changed volume and bucket sizes.
    • Patch, Important

    Description

      I'm following with documentation guide here https://hadoop.apache.org/ozone/docs/0.4.1-alpha/start/onprem.html and always fails after trying to start datanodes - they are always in safemode. Can somebody help me out with understanding how to scale ozone up to more than 1 datanode?

       

      Here is my $OZONE_HOME/etc/hadoop/ozone-env.sh:

      #
      # 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 Ozone-specific environment variables here.# Enable core dump when crash in C++
      ulimit -c unlimited# Many of the options here are built from the perspective that users
      # may want to provide OVERWRITING values on the command line.
      # For example:
      #
      #  JAVA_HOME=/usr/java/testing ozone fs -ls
      #
      # Therefore, the vast majority (BUT NOT ALL!) of these defaults
      # are configured for substitution and not append.  If append
      # is preferable, modify this file accordingly.###
      # Generic settings
      #### Technically, the only required environment variable is JAVA_HOME.
      # All others are optional.  However, the defaults are probably not
      # preferred.  Many sites configure these options outside of Ozone,
      # such as in /etc/profile.d# The java implementation to use. By default, this environment
      # variable is REQUIRED on ALL platforms except OS X!
      export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64/jre# /opt/ozone/ozone-1.2.1
      # Location of Ozone.  By default, Ozone will attempt to determine
      # this location based upon its execution path.
      export OZONE_HOME=/opt/ozone/ozone-1.2.1# Location of Ozone's configuration information.  i.e., where this
      # file is living. If this is not defined, Ozone will attempt to
      # locate it based upon its execution path.
      #
      # NOTE: It is recommend that this variable not be set here but in
      # /etc/profile.d or equivalent.  Some options (such as
      # --config) may react strangely otherwise.
      #
      export OZONE_CONF_DIR=${OZONE_HOME}/etc/hadoop# The maximum amount of heap to use (Java -Xmx).  If no unit
      # is provided, it will be converted to MB.  Daemons will
      # prefer any Xmx setting in their respective _OPT variable.
      # There is no default; the JVM will autoscale based upon machine
      # memory size.
      # export OZONE_HEAPSIZE_MAX=# The minimum amount of heap to use (Java -Xms).  If no unit
      # is provided, it will be converted to MB.  Daemons will
      # prefer any Xms setting in their respective _OPT variable.
      # There is no default; the JVM will autoscale based upon machine
      # memory size.
      # export OZONE_HEAPSIZE_MIN=# Extra Java runtime options for all Ozone commands. We don't support
      # IPv6 yet/still, so by default the preference is set to IPv4.
      # export OZONE_OPTS="-Djava.net.preferIPv4Stack=true"
      # For Kerberos debugging, an extended option set logs more information
      export OZONE_OPTS="-XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled"
      #"-Djava.net.preferIPv4Stack=true -Dsun.security.krb5.debug=true -Dsun.security.spnego.debug"# Some parts of the shell code may do special things dependent upon
      # the operating system.  We have to set this here. See the next
      # section as to why....
      export OZONE_OS_TYPE=${OZONE_OS_TYPE:-$(uname -s)}# Extra Java runtime options for some Ozone commands
      # and clients (e.g., ozone sh).  These get appended to OZONE_OPTS for
      # such commands.  In most cases, this should be left empty and
      # let users supply it on the command line.
      # export OZONE_CLIENT_OPTS=""#
      # A note about classpaths.
      #
      # By default, Apache Ozone overrides Java's CLASSPATH
      # environment variable.  It is configured such
      # that it starts out blank with new entries added after passing
      # a series of checks (file/dir exists, not already listed aka
      # de-deduplication).  During de-deduplication, wildcards and/or
      # directories are *NOT* expanded to keep it simple. Therefore,
      # if the computed classpath has two specific mentions of
      # awesome-methods-1.0.jar, only the first one added will be seen.
      # If two directories are in the classpath that both contain
      # awesome-methods-1.0.jar, then Java will pick up both versions.# An additional, custom CLASSPATH. Site-wide configs should be
      # handled via the shellprofile functionality, utilizing the
      # ozone_add_classpath function for greater control and much
      # harder for apps/end-users to accidentally override.
      # Similarly, end users should utilize ${HOME}/.ozonerc .
      # This variable should ideally only be used as a short-cut,
      # interactive way for temporary additions on the command line.
      # export OZONE_CLASSPATH="/some/cool/path/on/your/machine"# Should OZONE_CLASSPATH be first in the official CLASSPATH?
      # export OZONE_USER_CLASSPATH_FIRST="yes"# If OZONE_USE_CLIENT_CLASSLOADER is set, OZONE_CLASSPATH and
      # OZONE_USER_CLASSPATH_FIRST are ignored.
      # export OZONE_USE_CLIENT_CLASSLOADER=true###
      # Options for remote shell connectivity
      #### There are some optional components of ozone that allow for
      # command and control of remote hosts.  For example,
      # start-ozone.sh will attempt to bring up all OMs, SCMs, DNs, etc.# Options to pass to SSH when one of the "log into a host and
      # start/stop daemons" scripts is executed
      # export OZONE_SSH_OPTS="-o BatchMode=yes -o StrictHostKeyChecking=no -o ConnectTimeout=10s"# The built-in ssh handler will limit itself to 10 simultaneous connections.
      # For pdsh users, this sets the fanout size ( -f )
      # Change this to increase/decrease as necessary.
      # export OZONE_SSH_PARALLEL=10# Filename which contains all of the hosts for any remote execution
      # helper scripts # such as workers.sh, start-ozone.sh, etc.
      # export OZONE_WORKERS="${OZONE_CONF_DIR}/workers"###
      # Options for all daemons
      ###
      ##
      # Many options may also be specified as Java properties.  It is
      # very common, and in many cases, desirable, to hard-set these
      # in daemon _OPTS variables.  Where applicable, the appropriate
      # Java property is also identified.  Note that many are re-used
      # or set differently in certain contexts (e.g., secure vs
      # non-secure)
      ## Where (primarily) daemon log files are stored.
      # ${OZONE_HOME}/logs by default.
      # Java property: hadoop.log.dir
      # export OZONE_LOG_DIR=${OZONE_HOME}/logs# A string representing this instance of Ozone. $USER by default.
      # This is used in writing log and pid files, so keep that in mind!
      # Java property: hadoop.id.str
      # export OZONE_IDENT_STRING=$USER# How many seconds to pause after stopping a daemon
      # export OZONE_STOP_TIMEOUT=5# Where pid files are stored.  /tmp by default.
      export OZONE_PID_DIR=/data/disk1/meta# Default log4j setting for interactive commands
      # Java property: hadoop.root.logger
      # export OZONE_ROOT_LOGGER=INFO,console# Default log4j setting for daemons spawned explicitly by
      # --daemon option of ozone command.
      # Java property: hadoop.root.logger
      # export OZONE_DAEMON_ROOT_LOGGER=INFO,RFA# Default log level and output location for security-related messages.
      # You will almost certainly want to change this on a per-daemon basis via
      # the Java property (i.e., -Dhadoop.security.logger=foo).
      # Java property: hadoop.security.logger
      # export OZONE_SECURITY_LOGGER=INFO,NullAppender# Default process priority level
      # Note that sub-processes will also run at this level!
      # export OZONE_NICENESS=0# Default name for the service level authorization file
      # Java property: hadoop.policy.file
      # export OZONE_POLICYFILE="hadoop-policy.xml"#
      # NOTE: this is not used by default!  <-----
      # You can define variables right here and then re-use them later on.
      # For example, it is common to use the same garbage collection settings
      # for all the daemons.  So one could define:
      #
      # export OZONE_GC_SETTINGS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps"
      #
      # .. and then use it when setting OZONE_OM_OPTS, etc. below###
      # Secure/privileged execution
      ####
      # Out of the box, Ozone uses jsvc from Apache Commons to launch daemons
      # on privileged ports.  This functionality can be replaced by providing
      # custom functions.  See ozone-functions.sh for more information.
      ## The jsvc implementation to use. Jsvc is required to run secure datanodes
      # that bind to privileged ports to provide authentication of data transfer
      # protocol.  Jsvc is not required if SASL is configured for authentication of
      # data transfer protocol using non-privileged ports.
      # export JSVC_HOME=/usr/bin#
      # This directory contains pids for secure and privileged processes.
      #export OZONE_SECURE_PID_DIR=${OZONE_PID_DIR}#
      # This directory contains the logs for secure and privileged processes.
      # Java property: hadoop.log.dir
      # export OZONE_SECURE_LOG=${OZONE_LOG_DIR}#
      # When running a secure daemon, the default value of OZONE_IDENT_STRING
      # ends up being a bit bogus.  Therefore, by default, the code will
      # replace OZONE_IDENT_STRING with OZONE_xx_SECURE_USER.  If one wants
      # to keep OZONE_IDENT_STRING untouched, then uncomment this line.
      # export OZONE_SECURE_IDENT_PRESERVE="true"###
      # Ozone Manager specific parameters
      ###
      # Specify the JVM options to be used when starting the Ozone Manager.
      # These options will be appended to the options specified as OZONE_OPTS
      # and therefore may override any similar flags set in OZONE_OPTS
      #
      # export OZONE_OM_OPTS=""###
      # Ozone DataNode specific parameters
      ###
      # Specify the JVM options to be used when starting Ozone DataNodes.
      # These options will be appended to the options specified as OZONE_OPTS
      # and therefore may override any similar flags set in OZONE_OPTS
      #
      # export OZONE_DATANODE_OPTS=""###
      # HDFS StorageContainerManager specific parameters
      ###
      # Specify the JVM options to be used when starting the HDFS Storage Container Manager.
      # These options will be appended to the options specified as OZONE_OPTS
      # and therefore may override any similar flags set in OZONE_OPTS
      #
      # export OZONE_SCM_OPTS=""###
      # Advanced Users Only!
      ####
      # When building Ozone, one can add the class paths to the commands
      # via this special env var:
      # export OZONE_ENABLE_BUILD_PATHS="true"#
      # To prevent accidents, shell commands be (superficially) locked
      # to only allow certain users to execute certain subcommands.
      # It uses the format of (command)_(subcommand)_USER.
      #
      # For example, to limit who can execute the om command,
      export OZONE_OM_USER=rootHDFS_DATANODE_USER=root
      HDFS_SCM_USER=root
      HDFS_OM_USER=root

      Here is my $OZONE_HOME/etc/hadoop/ozone-site.xml

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <configuration>
          <property>
              <name>ozone.om.address</name>
              <value>hadoop-master-3.my.company.com</value>
              <tag>OM, REQUIRED</tag>
              <description>
            The address of the Ozone OM service. This allows clients to discover
            the address of the OM.
          </description>
          </property>
          <property>
              <name>ozone.metadata.dirs</name>
              <value>/data/disk1/meta</value>
              <tag>OZONE, OM, SCM, CONTAINER, STORAGE, REQUIRED</tag>
              <description>
            This setting is the fallback location for SCM, OM, Recon and DataNodes
            to store their metadata. This setting may be used only in test/PoC
            clusters to simplify configuration.      For production clusters or any time you care about performance, it is
            recommended that ozone.om.db.dirs, ozone.scm.db.dirs and
            dfs.container.ratis.datanode.storage.dir be configured separately.
          </description>
          </property>
          <property>
              <name>ozone.scm.client.address</name>
              <value>hadoop-master-3.my.company.com</value>
              <tag>OZONE, SCM, REQUIRED</tag>
              <description>
            The address of the Ozone SCM client service. This is a required setting.      It is a string in the host:port format. The port number is optional
            and defaults to 9860.
          </description>
          </property>
          <property>
              <name>ozone.scm.names</name>
              <value>hadoop-master-3.my.company.com</value>
              <tag>OZONE, REQUIRED</tag>
              <description>
            The value of this property is a set of DNS | DNS:PORT | IP
            Address | IP:PORT. Written as a comma separated string. e.g. scm1,
            scm2:8020, 7.7.7.7:7777.
            This property allows datanodes to discover where SCM is, so that
            datanodes can send heartbeat to SCM.
          </description>
          </property>
          <property>
              <name>ozone.scm.datanode.id.dir</name>
              <value>/data/disk1/meta/node</value>
          </property>
          <property>
              <name>ozone.scm.datanode.address</name>
              <value>hadoop-master-3.my.company.com</value>
          </property>   
      </configuration> 

       

      Here is my $OZONE_HOME/etc/hadoop/workers:

      hadoop-dn-01.my.company.com
      

       

      Step to reproduce:

      • cd $OZONE_HOME
      • bin/ozone scm --init
      • bin/ozone --daemon start scm
      • bin/ozone om --init
      • bin/ozone --daemon start om
      • sbin/stop-ozone.sh
      • sbin/start-ozone.sh
      • bin/ozone --daemon start recon

      Then I have 0 healthy nodes in recon and 1 healthy node in safe mode with command bin/ozone admin datanode list. I faced this strage problem cause on prem deployment documentation does not have any instructions how should condigs at datanodes hosts look like. Where I am wrong and how to correnctly deploy ozone in cluster mode with scm, om and recon at master host and datanodes at another multiple hosts?

       

      Thank you.

      Attachments

        Activity

          People

            Unassigned Unassigned
            dishka_krauch Dmitry Kravchuk
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: