常见 MQ 的比较 - Kafka、RocketMQ、RabbitMQ的优劣势比较 GFS 论文学习和 HDFS 实现的比较 Docker技术入门与实战 - 使用 dockerfile定制镜像 I love log 读书笔记 flink 入门程序-wordcount flink 配置项介绍 在 Mac 上搭建 Flink 的开发环境 lambda 架构问题的阅读笔记 IDEA常用插件 Mybatis源码分析(1) - Mybatis关键类 Mybatis源码分析(1) - Mybatis包目录简介 tair 1:tair学习 dataflow论文阅读笔记 Polysh的安装使用 SnappyData排序函数比较 Squirrel-sql客户端连接SnappyData手册 在虚拟机里显示Hello World spark学习博客推荐 SnappyData学习博客和官网文章 Docker常用命令 MyBatis支持的OGNL语法 mysql性能优化 mysql性能优化-优化Sql语句 java各版本新特性 mac上命令行操作 explain输出格式 从文件中读取zk配置——ZooKeeper编程技能(1) git进阶经验-从项目中删除移除的目录 Mongodb 学习之shell命令操作(3) mysql命令 git进阶经验-从多模块项目中分理子模块 从零学hadoop-搭建基础(单点)的Hdfs环境 ZooKeeper集群操作脚本 Vue安装使用 2 初学JVM之问答式记住类加载机制 2 初学JVM之问答式记住虚拟机性能监控与故障处理工具 2 初学JVM之问答式记住垃圾收集器 log4j2 按天生成日志文件 1 初学JVM之问答式记住java自动内存管理 MapReduce学习心得之MapReduce初识 log4j2 日志发送到kafka配置实战 log4j2 日志配置实战 Mongodb 学习之shell命令操作(二) Mongodb 学习之linux版本安装(一) Dubbo的初级使用 ServiceLoader内部实现分析 ServiceLoader 初级应用 log4j日志发送邮件配置实战 红黑树笔记 IDEA首次使用之前的配置 java源码学习之Enum java源码学习之String 自定义Spring tag标签 编写一键发布脚本 记一次Spring Scheduler莫名不执行的一次堆栈分析 kafka的基本操作 nginx 5:Nginx内部变量 nginx 4:Nginx日志管理 提高hadoop配置效率的shell脚本 Hive编程指南之一 Hive的安装 Ambari服务器安装 Ambari服务器管理集群 HBase分布式安装 windows下Eclipse远程调试运行MR程序 基于MapReduce新的API的编程Demo-wordCount window下Eclipse远程只读HDFS上的文件 YARN上节点标签 编写第一个MapReduce的wordcount程序 NodeManager的重启 搭建JStorm集群 YARN上的web应用代理 YARN上的ResourceManager的高可用方案 配置vmware中的虚拟机使用宿主机的共享网络 YARN架构简述 HDFS 架构 Spring的统一异常处理机制 Tomcat 配置服务 HDFS的viewfs指南 HDFS的Federation之路 HDFS基于QJM的HA之路 nginx 3:Nginx反向代理 mybatis操作主体流程 1.正则表达式学习-基础篇 log4j日志配置详解 mysql的时间函数 nginx 2:Nginx模块配置理论及实战 HashMap相关解析和测试文章 工作一年后的面试 用私有构造器或枚举类型强化Singleton属性 java中比较重要的图 mybatis处理枚举类 mybatis集成进spring Spring比较重要的几个截图 21.hadoop-2.7.2官网文档翻译-使用NFS的HDFS高可用性 20.hadoop-2.7.2官网文档翻译-使用仲裁日志管理器的HDFS高可用性 markdown在jekyll中支持的一些操作 Spring项目中配置sl4j和log4j的日志配置 19.hadoop-2.7.2官网文档翻译-HDFS命令指南 Spring的profile机制介绍 mybatis-generator反向生成 18.hadoop-2.7.2官网文档翻译-HDFS用户指南 17.hadoop-2.7.2官网文档翻译-实现Hadoop中Dapper-like追踪 16.hadoop-2.7.2官网文档翻译-Hadoop的KMS(key 管理服务器)-文档集 15.hadoop-2.7.2官网文档翻译-Hadoop的http web认证 14.hadoop-2.7.2官网文档翻译-服务级别的授权指南 13.hadoop-2.7.2官网文档翻译-安全模式中的Hadoop 09.hadoop-2.7.2官网文档翻译-Hadoop命令行微型集群 12.hadoop-2.7.2官网文档翻译-机架感知 11.hadoop-2.7.2官网文档翻译-代理用户-超级用户对其他用户的代表 10.hadoop-2.7.2官网文档翻译-原生库指南 08.hadoop-2.7.2官网文档翻译-文件系统规范 07.hadoop-2.7.2官网文档翻译-Hadoop接口类别 (转)浅析 Decorator 模式,兼谈 CDI Decorator 注解 06.hadoop-2.7.2官网文档翻译-Hadoop的兼容性 05.hadoop-2.7.2官网文档翻译-文件系统命令 04.hadoop-2.7.2官网文档翻译-Hadoop命令指南 03.hadoop-2.7.2官网文档翻译-集群安装 02.hadoop-2.7.2官网文档翻译-单节点集群安装 01.hadoop-2.7.2官网文档翻译-概述 Http 协议相应状态码大全及常用状态码 IDEA快捷键 JDBC Type与Java Type redis 12:redis 操作集合 mybatis-generator错误集合 redis 11:redis 错误集合 nginx 1:nginx的安装 redis 10:redis cluster命令操作 redis 9:redis实例集群安装 java设计模式 hadoop集群学习笔记(1) Apache Shiro 简介 vim编辑神器的进阶命令 Eclipse配置 Eclipse快捷键 Linux 测试题 Linux脚本学习(1) Linux启动简要过程 Centos7上安装Mysql hadoop集群学习笔记(1) (转)分布式发布订阅消息系统 Kafka 架构设计 maven 命令 Kafka集群安装 Kafka初步使用 redis 8:redis server 和 scripting命令操作 redis 7:redis transaction 和 connection命令操作 redis 6:redis hash 命令操作 redis 5:redis sorted_set 命令操作 搭建本地Jekyll+Markdown+Github的开发环境 Spring源码阅读笔记(2) redis 4:redis set命令操作 Spring添加任务调度配置 redis 3:Redis list命令操作 redis 2:redis 一般命令操作 redis 1:redis单机安装笔记 redis 0:redis配置属性描述 Spring源码阅读笔记(1) spark 错误集锦 spark集群安装 Linux 基本命令操作 Hadoop错误信息处理 Hadoop代码拾忆 从零开始搭建spring-springmvc-mybatis-mysql和dubbo项目 java知识点札记 java排错 Google Java Style 中文版 git进阶经验 github使用经验 MongoDB用户角色授权与AUTH启用 MongoDB 命令 MongoDB 特定规范 Spring MVC实现跳转的几种方式 史上最全最强SpringMVC详细示例实战教程 Spring 零星笔记 js中(function(){…})()立即执行函数写法理解 如何解决跨域问题 创建ajax简单过程 前端定位 设置MYSQL允许通过IP访问 mybatis异常 :元素内容必须由格式正确的字符数据或标记组成 如何为 WordPress 绑定多个域名的方法s WordPress工作原理之程序文件执行顺序(传说中的架构源码分析) Spring源码导入Eclipse中 基于PHPnow搭建Eclipse开发环境 解决wordpress首页文章内容截断处理的几种方法 ZooKeeper理论知识 ZooKeeper集群安装配置 Git常用命令速查表 Linux 4:磁盘与文件系统管理 Linux 3:文件与目录管理 Linux 2:文件权限与目录配置 Markdown输入LaTeX数学公式
从零学hadoop-搭建基础(单点)的Hdfs环境 MapReduce学习心得之MapReduce初识 Ambari服务器安装 Ambari服务器管理集群 windows下Eclipse远程调试运行MR程序 基于MapReduce新的API的编程Demo-wordCount window下Eclipse远程只读HDFS上的文件 YARN上节点标签 编写第一个MapReduce的wordcount程序 NodeManager的重启 YARN上的web应用代理 YARN上的ResourceManager的高可用方案 YARN架构简述 HDFS 架构 HDFS的viewfs指南 HDFS的Federation之路 HDFS基于QJM的HA之路 21.hadoop-2.7.2官网文档翻译-使用NFS的HDFS高可用性 20.hadoop-2.7.2官网文档翻译-使用仲裁日志管理器的HDFS高可用性 19.hadoop-2.7.2官网文档翻译-HDFS命令指南 18.hadoop-2.7.2官网文档翻译-HDFS用户指南 17.hadoop-2.7.2官网文档翻译-实现Hadoop中Dapper-like追踪 16.hadoop-2.7.2官网文档翻译-Hadoop的KMS(key 管理服务器)-文档集 15.hadoop-2.7.2官网文档翻译-Hadoop的http web认证 14.hadoop-2.7.2官网文档翻译-服务级别的授权指南 13.hadoop-2.7.2官网文档翻译-安全模式中的Hadoop 09.hadoop-2.7.2官网文档翻译-Hadoop命令行微型集群 12.hadoop-2.7.2官网文档翻译-机架感知 11.hadoop-2.7.2官网文档翻译-代理用户-超级用户对其他用户的代表 10.hadoop-2.7.2官网文档翻译-原生库指南 08.hadoop-2.7.2官网文档翻译-文件系统规范 07.hadoop-2.7.2官网文档翻译-Hadoop接口类别 06.hadoop-2.7.2官网文档翻译-Hadoop的兼容性 05.hadoop-2.7.2官网文档翻译-文件系统命令 04.hadoop-2.7.2官网文档翻译-Hadoop命令指南 03.hadoop-2.7.2官网文档翻译-集群安装 02.hadoop-2.7.2官网文档翻译-单节点集群安装 01.hadoop-2.7.2官网文档翻译-概述 hadoop集群学习笔记(1) hadoop集群学习笔记(1) Hadoop错误信息处理 Hadoop代码拾忆

06.hadoop-2.7.2官网文档翻译-Hadoop的兼容性

2016年07月11日
摘要:Hadoop的兼容性,官网地址:http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/Compatibility.html

目的

该文档主要讲述Hadoop项目的兼容目标。影响着Hadoop开发者、下游项目和最终用户的Hadoop版本间不同类型的兼容性会被列举。

对于每一中类型的兼容性,我们:

  • 描述对下游项目或最终用户的影响

  • 在适用的情况下,在允许不兼容的更改时,呼吁Hadoop开发者采用的政策

兼容类型

JAVA API(java的接口)

Hadoop的接口和类被注解用来描述其受众和稳定性,以保持与以前版本的兼容性。

详细请看Hadoop 接口类别

  • InterfaceAudience:捕获与其的观众,可能值为Public(对于最终用户和扩展项目),LimitedPrivate (对于Hadoop组件和有密切关系的项目像YARN,MapReduceHBase等等)和Private(对内部组件使用)

  • InterfaceStability:描述那种类型的接口改变是被允许的。可能的值为Stable,Evolving,Unstable,Deprecated

使用案例

  • Public-Stable的API兼容性在确保最终用户程序和下游项目继续可以无修改的工作的情况下是必需的。

  • LimitedPrivate-Stable的API兼容性在允许在小版本中升级单个组件时必需的。

  • Private-Stable的API兼容性在滚动升级时是必须的。

政策

  • Public-Stable的API必须在从至少一个主要版本中移除之前主要版本时被标记为过期。

  • LimitedPrivate-Stable的API可以在主要版本间改变,但不能在一个重大的版本内。

  • Private-Stable的API可以在主要版本间改变,但不能在一个重大的版本内。

  • 没有被注解的类,隐式的为Private.没被注解的类成功继承了封闭类的注解。

  • 注意:从原始文件生成的API需要为滚动升级做兼容。请看wire-compatibility片段了解更详细信息。 API和有线通信的兼容性政策需要携手解决


Semantic compatibility(语义兼容)

Hadoop致力于确保API的行为保持一致的版本,虽然正确性的改变可能会导致行为的改变。

测试和java文档详细说明了API的行为。更严格的详述一些API的通用性正在进行中并且加强测试套件,以验证是否符合规范,有效的创建一个正式规范的子集的范围,可以很容易的测试。

政策

API的行为可能会通过修复不正确的行为被改变,这种变化是伴随着更新现有的buggy测试或者在没有改变之前添加的测试用例。


Wire compatibility(线兼容)

线兼容问题在于Hadoop进程之间的线传输过程。

Hadoop的大多数RPC通信使用的protocol buffers。保持兼容性需要禁止修改如下描述的条件。非RPC通信业也需要考虑,比如使用HTTP向HDFS传输的图像作为快照的一部分或者抓你MapTask的输出。 潜在的通信可以分类如下:

  • Client-Server: Hadoop客户端和服务器间的通信(比如HDFS客户端到NameNode协议,或者YARN客户端到ResourceManager协议)。

  • Client-Server(Admin):区分一个仅仅使用管理的命令的客户端-服务器协议(比如HAAdmin协议)是值得的。因为这些协议仅仅影响管理者可以容忍的变化,而最终用户(一般使用Client-Server协议)不能。

  • Server-Server : 服务器之间的通信(比如:DataNode和NameNode,NodeManager和ResourceManager之间的协议)。

使用案例

  • 客户端-服务端兼容允许用户继续使用老的客户端,甚至在升级服务器(集群)到最新版本之后,反之亦然。比如,Hadoop2.1.0的客户端与Hadoop2.3.0集群交互。

  • 客户端-服务端兼容也允许 用户在升级服务器集群之前升级客户端。比如,Hadoop2.4。0客户端与Hadoop2.3.0的集群交互。 允许在完整的集群升级前部署客户端的错误修复。注意:通过新的客户端API或者Shell命令调用的新的集群功能将无法使用。尝试使用还未部署到集群的新的API(包括数据结构中的新域)的YARN应用会抛出link异常

  • 客户端-服务端兼容也允许升级某个内部组件而不升级其他组件。比如:将HDFS从2.1.0升级到2.2.0,而不升级MapReduce。

  • 服务单-服务端兼容允许你在一个激活的集群中运行不同版本,因此集群可能会滚动方式升级而没有停机时间。

政策

  • 在一个主要版本中客户端-服务端和服务端-服务端的兼容性都会被保持(不同类别的不同政策也会被考虑)。

  • 兼容性在主要版本改变时会被破坏,尽管在主要版本变更时破坏兼容性会有严重的后果,同时应该在Hadoop社区中讨论。

  • Hadoop的协议定义在.proto(ProtocolBuffers)文件中。客户端-服务端协议和服务端协议的.proto文件会被标记为未定状态。 当一个.proto文件被标记为稳定态时,意味着改变应该兼容以下列举的内容:

    • 以下改变是兼容的并且允许在任何时间改变:

      • 添加一个可选字段,携带由于与旧代码通信导致的字段丢失的代码处理的期望值

      • 在service中添加的RPC或者方法

      • 向消息添加一个新的可选请求

      • 重命名一个域

      • 重命名一个 .proto文件

      • 改变影响代码生成的.proto注解(比如:java包名)

    • 以下改变时不兼容的并且仅仅可以在主要版本考虑

      • 改变RPC/method名

      • 改变RPC/method参数类型或返回类型

      • 移除一个RPC/method

      • 改变消息名

      • 以不兼容的方式修改字段类型(比如定义递归)

      • 改变请求的可选字段

      • 添加或删除一个请求域

      • 删除一个可选字段,只要改可选字段有合理的默认值允许删除

    • 以下更改时不兼容的,因此永远不被允许

      • 改变一个字段的id

      • 恢复一个在先前版本中删除的旧字段

      • 字段号码是廉价的,改变和重新使用都不是一个好主意


Java Binary compatibility for end-user applications i.e. Apache Hadoop ABI(对于最终用户程序的java二进制的兼容,比如Hadoop ABI)

在Hadoop版本升级时,最终用户很自然的期望他们的程序在没有任何修改的情况下仍然能够继续工作。这是支持API兼容性,语义兼容性和线兼容性的满意的结果。

然而,Hadoop是一个非常复杂的分布式系统,服务非常广泛的用例。特别指出的是,Hadoop的MapReduce是一个非常,非常宽泛的API; 在这个意义上,最终用户可能会作出刚发你的假设,如在他们的map/reduce任务正在运行时布局本地磁盘,他们任务的环境变量。 这种情况下,它变得非常难以完全指定和支持以及绝对的兼容性。

使用案例

  • 当指向一个在一个主版本内升级后的Hadoop集群时,现有的MapReduce应用,包括现有的最终用户应用程序和项目包的jar,比如pig,Hive,Cascading 等等。 应该在无修改的情况下继续工作。

  • 当指向一个在一个主版本内升级后的Hadoop集群时,现有的YARN应用,包括现有的最终用户应用程序和项目包的jar,比如Tez等等。 应该在无修改的情况下继续工作。

  • 当指向一个在一个主版本内升级后的Hadoop集群时,现有的HDFS数据传递的应用,包括现有的最终用户应用程序和项目包的jar,比如Flume等等。 应该在无修改的情况下继续工作。

政策

  • 现有的MapReduce,YARN和HDFS应用和框架应该在同一个住版本中无修改的工作(比如,Hadoop ABI被支持)。

  • 非常小的应用程序可能会受到磁盘布局变化的影响等等。开发者社区努力在一个小版本中将变化减小到最小。更糟糕的情况是,在必要情况下我们将考虑强还原这些打破变化和无效的违规发布的更改

  • 尤其是MapReduce应用,开发者社区将会尽我们最大的努力支持跨主版本的二进制兼容。比如,应用使用org.apache.hadoop.mapred

  • API 直接兼容跨Hadoop-1.x和Hadoop2.x版本。请看Hadoop1.x和Hadoop2.x间的MapReduce兼容性

REST API

Rest接口的兼容性对应于请求(URL)和对每个请求的响应(内容,其中可能包含其他的URL)。Hadoop的Rest API是特意被客户端跨版本,甚至主版本稳定使用的。

以下是暴露的Rest API:

政策

在上面的文本中注解的API稳定,保持至少一个主要版本的兼容性。也许在一个主要的版本更新中会被新版本的RestAPI替代为过期。


Metrics/JMX

Metrics(度量工具)API的兼容性是被java API的兼容性所管理的同时,暴露在Hadoop的实际指标需要兼容的用户能够自动使用它们(脚本等)。

添加额外的度量是兼容的。修改(比如更改单元或测量)或删除存在的度量会破坏兼容性。相似的,对JMX MBean对象名称的改变也会破坏兼容性

政策

度量应该在主要版本内保持兼容性。

File formats & Metadata(文件格式化和元数据)

用户和系统级别的数据(包括元数据)被以不同的格式存储在文件中,改变元数据或者用来存储数据或元数据的文件格式会导致版本间的不兼容问题。

用户级文件格式

改变最终用户用来存储他们数据的格式会妨碍他们在更新的版本 中访问数据,因此保持这些文件格式兼容性是非常重要的。

可以总是增加新的格式以提高现有格式。这些格式的例子包括har,war,SequenceFileFormat等等。

政策

  • 非向前兼容的用户文件格式更改被限制在主要版本内。当用户文件格式改变,新的版本将读取现有的格式,但是可能写数据的格式与之前的版本不兼容,。 社区更喜欢创建新的格式,该格式必须选择,而不是对现有格式的不兼容的更改。

系统内部的文件格式

Hadoop内部数据也存储在文件中,修改他们的格式也会导致不兼容。虽然这种变化并不像用户级别的文件格式具有破坏性,但在兼容性会被打破时的政策是很重要的。

MapReduce

MapReduce使用的文件像I-File来存储MapReduce指定的数据。

政策

MapReduce内部格式像I-File,在一个主要版本中维持兼容性。改变这些格式会造成运行任务失败,因此我们应该确保新的客户端可以以兼容的方式从老的服务器获取洗牌数据。

HDFS 元数据

HDFS的元数据(image和edit日志)有一个特定的格式。不管是格式还是元数据的改变都会阻止随后的版本读取就得元数据。 这种不兼容的改变可能需要HDFS升级覆盖元数据来使得可以访问。某些改变可能需要不止一个这样的升级。

取决于变化中的不相容程度,会出现下面潜在的情况:

  • 自动:image自定升级,不需要明确的升级

  • 直接的:image可以升级,但是需要一个明确的版本升级

  • 间接地:image可以升级,但是可能需要需要先升级到中间版本

  • 不需要升级:该image不能升级

政策

  • 一个版本的实际必须允许集群回滚到老版本和他的老的磁盘格式。该回滚需要恢复原来的数据,但是不需要恢复已经更新了的数据。

  • HDFS元数据改变必须通过更新途径自动,直接间接任何一种升级。

  • 更多详细的基于这种升级的政策也会被考虑。

Command Line Interface (CLI)(命令行接口)

Hadoop命令行程序可以用直接通过系统shell或者通过shell脚本。改变命令的路径,删除或者重命名命令行选项,参数顺序或者命令行返回值和数据都会破坏兼容性并且对用户产生不利影响。

Policy

在一个主要版本前删除它们或者在随后的主要版本中修改为不兼容状态时的命令行命令要被标记为过期.

Web UI

WEB UI ,特别是内容和web页面布局的改变可能会干扰试图筛选网页的信息的尝试。

政策

WEB页面并不会被勉强,而且对于他们的不兼容的改变随时都允许。用户预计可以使用Rest API获得任何信息。

Hadoop Configuration Files(Hadoop配置文件)

用户使用Hadoop定义的属性给Hadoop配置和提供建议, 并且自定义属性将信息传递给作业。配置属性的兼容性有两种:

  • 修改key名称,单位值,Hadoop定义属性的默认值

  • 自定义配置数据key应该和Hadoop定义属性的命名空间不冲突。通常,用户应该避免使用Hadoop已经使用的前缀: Hadoop,io,ipc,fs,net,file,ftp,s3,kfs,ha,dfs,mapred,mapreduce,yarn

政策

  • Hadoop定义的属性至少在主要版本发布之前被删除时标记为过期。不允许修改现有属性的单元。

  • Hadoop定义属性的默认值可以在跨主版本和小版本时改变,但是一个小版本内跨点版本是需要保持相同。

  • 目前,没有明确的有关政策,当新的前缀被添加或删除和英爱被避免自定义配置属性的前缀列表。然而,如上面提到的,用户应该避免使用Hadoop已经使用的前缀: Hadoop,io,ipc,fs,net,file,ftp,s3,kfs,ha,dfs,mapred,mapreduce,yarn

Directory Structure(目录结构)

源码,artifacts ,用户日志,配置文件,输出和job历史都被存储在本地磁盘或者HDFS上。改变这些用户可以访问的文件的目录结构会破坏兼容性,即使在原始路径被保留情况下,通过符号链接(例如:如果路径要被servlet访问,配置是不允许符号链接的)

政策

  • 源码的布局和artifacts 的构建是任何时候都能改变的,特别是在跨主要版本时。在主要版本内部,开发者会尝试保持目录结构;然而,个别文件会被添加,删除或移动。 为了确保不定停留域代码同步的最好方式是把它们提交到apache的源码树。

  • 配置文件,用户目录,job历史的目录结构在同一主版本内跨小版本和点版本时会被保持不变。

Java Classpath(java 类路径)

用户创建的应用程序可能会添加所有Hadoop的jar到应用程序的类路径。添加新的依赖或者更新现有依赖版本可能会干扰那些应用程序的类路径。

政策

当前,在没有政策时,Hadoop的依赖可以改变。

Environment variables(环境变量)

用户和相关的项目经常会利用导出的环境变量(比如HADOOP_CONF_DIR),移除或重命名环境变量会导致不兼容

政策

当前,在没有政策时,环境变量可以改变。开发者试图限制在对主要版本的修改。

Build artifacts

Hadoop使用maven作为项目的管理,并且改变artifacts会影响现有的用户工作流。

政策

  • 测试artifacts:生成的测试jar严格内部使用,不会再Hadoop意外使用,比如API的注解@Private,@Unstable

  • 构建artifacts:Hadoop客户端的artifacts(maven groupId:artifactId)保持在主要版本内部兼容,其他artifactId可以以不兼容的方式改变。

Hardware/Software Requirements(软硬件需求)

为了跟上最先进的硬件,操作系统,JVM和其他软件,Hadoop版本或者他们的一些特定可能会同样需要高版本。对于一个指定的环境,更新Hadoop可能需要更新其他依赖的软件组件。

政策

  • 硬件:

    • 架构:设置没有计划限制Hadoop为指定的架构,但是可能有特定family的优化。

    • 最小资源:虽然Hadoop守护进程所需要的最小资源没有抱枕个,但社区尝试在一个小版本被不提高需求。

  • 操作系统:社区尝试保持在小版本内保持相同的系统需求(系统内核版本)。当前的GNU/Linux和windows是社区官方支持的系统,而Apache的Hadoop是已知的工作相当不错的。其他的系统如Apple的MacOSx和Solaris。

  • JVM 的需求在小版本内,跨点版本改变,除非在VJM版本不支持情况下。对于支持的操作系统,主版本和小版本可能需要更新的JVM。

  • 其他软件:社区试图保持所要求的最低版本的Hadoop的附加软件。比如:ssh,kerberos 等等。

参考

这里有一些相关的jiras与主题相关的页面: