apache/hadoop · critical · RuntimeException

Configuration file not found at {confFile}

Error message

Configuration file not found at {confFile}

What it means

The legacy queue-configuration parser behind mapred-queues.xml throws this RuntimeException when constructed with an explicit file path that does not exist on disk (checked via getAbsoluteFile().exists()). It is a hard startup failure for whatever component builds the parser - legacy JobTracker-style deployments, tools, or tests using the path-based constructor.

Source

Thrown at hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/QueueConfigurationParser.java:104

  static final String STATE_TAG = "state";
  static final String QUEUE_NAME_TAG = "name";
  static final String QUEUES_TAG = "queues";
  static final String PROPERTY_TAG = "property";
  static final String KEY_TAG = "key";
  static final String VALUE_TAG = "value";

  /**
   * Default constructor for QueueConfigurationParser.
   */
  QueueConfigurationParser() {
    
  }

  QueueConfigurationParser(String confFile, boolean areAclsEnabled) {
    aclsEnabled = areAclsEnabled;
    File file = new File(confFile).getAbsoluteFile();
    if (!file.exists()) {
      throw new RuntimeException("Configuration file not found at " +
                                 confFile);
    }
    InputStream in = null;
    try {
      in = new BufferedInputStream(new FileInputStream(file));
      loadFrom(in);
    } catch (IOException ioe) {
      throw new RuntimeException(ioe);
    } finally {
      IOUtils.closeStream(in);
    }
  }

  QueueConfigurationParser(InputStream xmlInput, boolean areAclsEnabled) {
    aclsEnabled = areAclsEnabled;
    loadFrom(xmlInput);
  }

View on GitHub (pinned to 2add963021)

Solutions

  1. Create a valid file at the exact path: root <queues> containing at least one <queue><name>...</name></queue>
  2. Make the configured path absolute, or ensure mapred-queues.xml is on the classpath
  3. Verify with ls on the host where the component starts; remember relative paths resolve against process CWD
  4. On YARN/MR2 clusters prefer capacity-scheduler.xml unless you intentionally use the legacy queue manager

Example fix

<!-- before: file missing at /etc/hadoop/mapred-queues.xml -->

<!-- after: /etc/hadoop/mapred-queues.xml -->
<queues>
  <queue>
    <name>default</name>
  </queue>
</queues>
Defensive patterns

Strategy: validation

Validate before calling

// fail with a clear message before constructing the parser
File f = new File(confFile).getAbsoluteFile();
if (!f.isFile()) throw new FileNotFoundException("queue config missing: " + f
    + " - create it or fix the configured path");
new QueueConfigurationParser(confFile, areAclsEnabled);

Prevention

When it happens

Trigger: QueueConfigurationParser(confFile, areAclsEnabled) is passed a path that resolves to a nonexistent absolute file: file never created, wrong directory, typo in the configured path, or a relative path resolved against an unexpected process working directory.

Common situations: MR1-style config pointing at mapred-queues.xml that was never shipped to the node; deploy scripts referencing a missing conf dir; tests passing a temp path that was already cleaned; CWD changes making a relative path dangle.

Related errors


AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22). Data as JSON: /api/errors/ede796001e5a14f5. Report an issue: GitHub.