1目的
本篇文档介绍Apache Hadoop项目的目标:相容性。hadoop的发布影响Hadoop的开发者,以前的项目。Hadoop的发布和最终用户之间的兼容性的不同类型是可列举的。对于每一种兼容性:描述了以前项目和最终用户的影响,在使用的情况下,呼喊在改变的不相容性在Hadoop的开发者是能够允许的的策略。
2兼容类型
2.1Java API
Hadoop的接口和类的注释描述了预期的观众和稳定性为了保持和以前版本的兼容性。看Hadoop的Interface和Classification获得更多内容。
InterfaceAudience:获得了预期的观众,值可能是Public(为最终用户和外围的项目),LimitedPrivate (为其他的Hadoop构成,和相关的项目,比如YARN,MapReduce,HBase,等)和Private(为内部构成使用)。
InterfaceStability:描述了接口改变成什么类型是允许的。可能的值是Stable,Evolving,Unstable,和Deprecated。
2.2Use Cases
1.Public-Stable API 兼容性被要求保证最终用户的项目和下游项目能够继续工作,不需要修改。
2.LimitedPrivate-Stable API兼容性被要求允许单独构件通过镜像发布可以升级。
3.Private-Stable API兼容性被要求滚动升级。
2.3Policy
1.Public-Stable APIs反对在一个重要的发布移走前至少有一个重要的发布。
2LimitedPrivate-Stable APIs 可以通过重要的发布改变,而不是在一个主要版本。
3.Public-Stable APIs可以通过重要的发布改变,而不是在一个主要的版本。
4.注意:APIs从源文件生成需要兼容滚动升级。通过wire-compatibility章节获得更多的描述。APIs和wire-communication的兼容性策略需要手牵手的去解决。
3.Semantic compatibility
apache hadoop 努力保证APIs的行为和以前版本保持一致,虽然改变的正确性可能导致行为的改变。测试和Java文档确定了API的行为。社区在确定一些API的处理中更严谨,提高测试单元来验证规范,为行为的子集有效的创建一个正式的规范可以很容易的被测试。
Policy
API的行为可以被改变以修复错误的行为,这种变化伴随着更新现有的试验或者添加在案例中的测试这些在之前是没有变化的。
4.Wire compatibility
Wire compatibility关心数据在hadoop处理过程中通过电线被传播。对于大多数的RPC通信Hadoop使用Protocol Buffers。Preserving compatibility要求禁止就像以下的描述。Non-RPC通信也应该被考虑,比如使用HTTP传输一个HDFS图像作为简介的一部分或者传输MapTask的输出。潜在的通信可以被分为:<