The XInclude support in Hadoop configuration files (introduced via
HADOOP-4944) was broken by the recent ConfigurationProvider changes to YARN ResourceManager. Specifically, YARN-1459 and, more generally, the YARN-1611 family of JIRAs for ResourceManager HA.
The issue is that ConfigurationProvider provides a raw InputStream as a Configuration resource for what was previously a Path-based resource.
For Path resources, the absolute file path is used as the systemId for the DocumentBuilder.parse() call:
The systemId is used to resolve XIncludes (among other things):
However, for loading raw InputStream resources, the systemId is set to null:
causing XInclude resolution to fail.
In our particular environment, we make extensive use of XIncludes to standardize common configuration parameters across multiple Hadoop clusters.