Basic Version Compatibility
- By and large, Tez releases are ( for the most part ) compatible only across patch releases. i.e. 0.4.x may not be compatible with 0.5.x however 0.5.0 will likely be compatible with 0.5.1 and 0.5.2
- The above is not set in stone. For the most part, Tez will try to retain compatibility across minor versions but is not guaranteed ( atleast for the 0.y.z versions ).
- We hope to retain major version compatibility from 1.x onwards.
Detecting Version Incompatibilities
- The deployment model of Tez requires one to deploy client-side jars and have the corresponding tarball uploaded to HDFS.
- It is possible in various cases for someone to accidentally use client-side jars of a different version as compared to the tarball on HDFS.
- From version 0.5.2 onwards, checks were introduced to verify that the client ( via client-side jars ) is compatible with the Tez ApplicationMaster ( from HDFS tarball ).
- The check is done to verify that the client version and the Tez AM have the same major and minor versions. i.e. assuming the version is represented in the form "x.y.z" ( x being the major version, y being the minor version and z being the patch release version), the client and the AM should have the same values for "x" and "y".
- In scenarios, where the AM has been launched by an incompatible client, the AM will fail itself with an appropriate diagnostic message indicating that it was launched by a client with an incompatible version.
- In cases where this check needs to be disabled, the "tez.am.disable.client-version-check" would need to be set.