Hadoop开发社区会定期发布新的Hadoop版本,以引入新功能并解决现有问题。Realeses分为三类:
Hadoop依赖的一组本机组件被视为Hadoop ABI的一部分。Hadoop开发社区致力于最大程度地保持ABI兼容性。在次要版本之间,除非有必要(例如出于安全性或许可问题),否则不会增加Hadoop本地依赖项的最低支持版本号。发生此类更改时,Hadoop开发人员社区将尝试保留相同的主要版本,而仅更新次要版本。
Hadoop取决于Java虚拟机。在Hadoop的主要发行版之间,最低支持的JVM版本不会更改。如果在主要发行版之间不支持当前的最低支持的最低JVM版本,则在次要发行版中可能会更改最低支持的JVM版本。
Hadoop依赖于某些传输级技术,例如SSL。除非必要(例如出于安全性或许可问题),否则不会增加这些依赖项的最低受支持版本。发生此类更改时,Hadoop开发人员社区将尝试保留相同的主要版本,而仅更新次要版本。
在主要版本中,Hadoop的服务端口号将保持不变,尽管在主要版本中可能会更改。
Hadoop的内部有线协议将在客户端和服务器之间以及服务器之间在同一个主要版本中的次要版本之间保持向前和向后兼容性,以实现滚动升级。在主要版本中,有线协议的向前和向后兼容性是可能的,并且可能允许在某些条件下进行滚动升级,但不能保证。
Hadoop REST API提供了一种简单的机制来收集有关Hadoop系统状态的信息。为了支持REST客户端,已对Hadoop REST API进行了版本控制,并且不会在版本内发生不兼容的更改。禁止端点本身以及支持的参数列表以及该端点的输出在REST端点版本内不兼容地更改。但是请注意,引入新字段和其他附加更改被视为兼容更改,因此REST API的任何使用者都应足够灵活以忽略未知字段。
REST API版本为单个编号,与Hadoop版本编号无关。版本号在端点URL中编码,前缀为“ v”,例如“ v1”。只能在次要或主要版本中引入新的REST端点版本。REST端点版本只能在被标记为已针对完整的主要版本弃用后才能删除。
Hadoop产生各种输出,可以想象通过自动化工具进行解析。使用Hadoop的输出时,请考虑以下因素:
Hadoop的内部系统状态是私有的,不应直接修改。以下策略控制着各种内部状态存储的升级特征:
Hadoop使用两种主要形式的配置文件:XML配置文件和日志记录配置文件。
XML配置文件包含一组作为名称/值对的属性。属性的名称和含义由Hadoop定义,并保证在次要版本中稳定。只有在至少一个完整的主要版本中将其标记为不推荐使用时,才可以在主要版本中删除该属性。如果未在XML配置文件中显式设置该属性,则大多数属性都有默认值。在维护发布期间不会更改默认属性值。有关各种Hadoop组件支持的属性的详细信息,请参阅组件文档。
下游项目和用户可以将自己的属性添加到XML配置文件中,以供其工具和应用程序使用。尽管Hadoop在定义新属性方面没有正式的限制,但是与Hadoop定义的属性冲突的新属性可能会导致意想不到的不良结果。鼓励用户避免使用与Hadoop定义的属性的名称空间冲突的自定义配置属性名称,因此应避免使用Hadoop使用的任何前缀,例如hadoop,io,ipc,fs,net,file,ftp,kfs,ha,文件,dfs,mapred,mapreduce和yarn。
Hadoop发行版的内容(例如JAR文件)随时可能更改,除了客户端工件外,不应将其视为可靠的。客户端工件及其内容将在主要版本中保持兼容。Hadoop开发社区的目标是允许应用程序代码在次要版本之间以及可能的情况下在主要版本之间继续保持不变。当前客户端工件的列表如下:
某些Hadoop组件通过环境变量接收信息。例如,大多数Hadoop进程将HADOOP_OPTS环境变量解释为在启动新JVM时将使用的其他JVM参数字符串。在次要版本之间,Hadoop解释环境变量的方式不会以不兼容的方式发生变化。换句话说,对于相同主版本中的所有Hadoop版本,将相同的值放入相同的变量应产生相同的结果。
Hadoop依靠大量第三方库进行操作。Hadoop开发人员社区尽可能地向下游开发人员隐藏这些依赖项。但是,Hadoop确实会公开其某些依赖性,尤其是在Hadoop 3之前。Hadoop不会通过主要版本之间的客户端工件公开任何新的依赖性。
常见的下游反模式是使用hadoop classpath的输出设置下游应用程序的类路径,或将Hadoop随附的所有第三方JAR添加到下游应用程序的类路径中。这种做法在下游应用程序和Hadoop的第三方依赖关系之间建立了紧密的耦合,这导致了脆弱的应用程序,随着Hadoop依赖关系的变化,该应用程序难以维护。强烈建议不要这样做。
Hadoop还包括几个本地组件,包括压缩,容器执行程序二进制文件和各种本地集成。这些本机组件为Hadoop引入了一组本机依赖性。一组本机依赖项可以在次要版本中更改,但是Hadoop开发人员社区将尝试将任何依赖项版本更改尽可能地限制为次要版本更改。
Hadoop目前受到运行在x86和AMD处理器上的Linux和Windows上的Hadoop开发人员社区的支持。在可预见的将来,这些操作系统和处理器可能仍会受到支持。如果支持计划发生更改,则要删除的OS或处理器至少在完整的次要版本(但最好是完整的主要版本)之前被记录为已弃用,然后才实际删除。Hadoop可以在其他OS和处理器体系结构上运行,但是社区可能无法在出现问题时提供帮助。
不能保证Hadoop守护程序所需的最小资源在各个版本(甚至维护版本)之间如何变化。尽管如此,Hadoop开发人员社区将尽力避免在次要版本中增加要求。
在大多数情况下,在整个主要版本中,将继续继续支持所有受支持的Hadoop文件系统(例如通过FileSystem API)。可以在主要版本中放弃对文件系统的支持的唯一情况是,是否提供了到备用客户端实现的干净迁移路径。
有关根据Apache Hadoop开发应用程序和项目的问题,请联系用户邮件列表。