Similar to stack configurations, most properties are defined at the service level, however there are global properties which can be defined at the stack-version level affecting across all services.
Some examples are: stack-selector and conf-selector specific names or what stack versions certain stack features are supported by. Most of these properties were introduced in Ambari 2.4 version in the effort of parameterize stack information and facilitate the reuse of common-services code by other distributions.
Such properties can be defined in .json format in the properties folder of the stack.
+
Stack features
Stacks can support different features depending on their version, for example: upgrade support, NFS support, support for specific new components (such as Ranger, Phoenix )…
Stack featurization was added as part of the HDP stack configurations on HDP/2.0.6/configuration/cluster-env.xml, introducing a new stack_features property which value is processed in the stack engine from an external property file.
<!-- Define stack_features property in the base stack. DO NOT override this property for each stack version --> <property> <name>stack_features</name> <value/> <description>List of features supported by the stack</description> <property-type>VALUE_FROM_PROPERTY_FILE</property-type> <value-attributes> <property-file-name>stack_features.json</property-file-name> <property-file-type>json</property-file-type> <read-only>true</read-only> <overridable>false</overridable> <visible>false</visible> </value-attributes> <on-ambari-upgrade add="true"/> </property>