apache/hadoop · error · java.lang.IllegalArgumentException
The mount point doesn't exist. path=" + fedPath
Error message
The mount point doesn't exist. path=" + fedPath
What it means
RouterFedBalance.getSrcPath() resolves the fedbalance source path through the router's admin API: it fetches the mount table entry for the federated path and builds hdfs://<ns><path> as the actual source cluster URI. If MountTableProcedure.getMountEntry(fedPath, mountTable) returns null it throws IllegalArgumentException('The mount point doesn't exist') — the source argument is not a mount point this router knows.
Source
Thrown at hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/rbfbalance/RouterFedBalance.java:329
scheduler.shutDown();
}
return 0;
}
/**
* Get src uri from Router.
*/
private Path getSrcPath(String fedPath) throws IOException {
String address = getConf().getTrimmed(
RBFConfigKeys.DFS_ROUTER_ADMIN_ADDRESS_KEY,
RBFConfigKeys.DFS_ROUTER_ADMIN_ADDRESS_DEFAULT);
InetSocketAddress routerSocket = NetUtils.createSocketAddr(address);
RouterClient rClient = new RouterClient(routerSocket, getConf());
try {
MountTableManager mountTable = rClient.getMountTableManager();
MountTable entry = MountTableProcedure.getMountEntry(fedPath, mountTable);
if (entry == null) {
throw new IllegalArgumentException(
"The mount point doesn't exist. path=" + fedPath);
} else if (entry.getDestinations().size() > 1) {
throw new IllegalArgumentException(
"The mount point has more than one destination. path=" + fedPath);
} else {
String ns = entry.getDestinations().get(0).getNameserviceId();
String path = entry.getDestinations().get(0).getDest();
return new Path("hdfs://" + ns + path);
}
} finally {
rClient.close();
}
}
private void printUsage() {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp(
"rbfbalance OPTIONS [submit|continue] <src> <target>\n\nOPTIONS",View on GitHub (pinned to 2add963021)
Solutions
- List the mounts: hdfs dfsrouteradmin -list, and pass the exact mount source path as -s
- Use the mount point itself, not a sub-path beneath it
- Verify the router admin address/namespace the client resolves
- Create the missing mount first with hdfs dfsrouteradmin -add if it should exist
Example fix
# before: /apps/data/2024 is not a mount point → IllegalArgumentException hdfs fedbalance -s /apps/data/2024 -d hdfs://ns1/archive/2024 # after: use the mount point itself hdfs fedbalance -s /apps/data -d hdfs://ns1/archive
Defensive patterns
Strategy: validation
Validate before calling
// Resolve/validate the source mount before submitting the job
try (RouterClient client = new RouterClient(routerAdminAddr, conf)) {
MountTable entry = MountTableProcedure.getMountEntry(srcPath,
client.getMountTableManager());
if (entry == null) {
throw new IllegalArgumentException(
srcPath + " is not a mount point; see hdfs dfsrouteradmin -list");
}
} Prevention
- Pass the mount point itself to -s, never a subdirectory
- Keep a checked list of valid mount points in automation scripts
- Verify router admin address resolution before job submission
When it happens
Trigger: `hdfs fedbalance -s <path>` where <path> is not present in the router mount table: a subdirectory under a mount instead of the mount point itself, a mount never added, or dfs.federation.router.admin.address pointing at the wrong router.
Common situations: Passing /apps/data/2024 when the mount is /apps/data; pointing the client at the wrong router or federation; running fedbalance before creating the mount; typos in the -s path.
Related errors
- The destination cluster must be specified.
- The mount point has more than one destination. path={}
- Mount table " + mount + " doesn't exist
- Failed update mount table " + mount
- Failed update mount table " + mount + " with readonly=" + re
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/8d457f5ed0a77c2a.
Report an issue: GitHub.