Hadoop Java版本
Apache Hadoop的2.7及更高版本需要Java 7.它是在OpenJDK和Oracle(HotSpot)的JDK / JRE 上构建和测试的。
早期版本(2.6及更早版本)支持Java 6。
经测试的JDK
以下是已知的JDK或已经过测试的JDK:
-
版
状态
报道
oracle 1.7.0_15
好
Cloudera的
oracle 1.7.0_21
好(4)
Hortonworks
oracle 1.7.0_45
好
关键的
openjdk 1.7.0_09-icedtea
好(5)
Hortonworks
oracle 1.6.0_16
避免(1)
Cloudera的
oracle 1.6.0_18
避免
许多
oracle 1.6.0_19
避免
许多
oracle 1.6.0_20
好(2)
LinkedIn,Cloudera
oracle 1.6.0_21
好(2)
雅虎,Cloudera
oracle 1.6.0_24
好
Cloudera的
oracle 1.6.0_26
好(2)
Hortonworks,Cloudera
oracle 1.6.0_28
好
LinkedIn
oracle 1.6.0_31
好(3,4)
Cloudera,Hortonworks
- Hadoop在update 16中运行良好,但是在HBase上已经出现了更新19之前的JDK版本。有关详细信息,请参阅HBASE-4367。
- 如果网格以MIT Kerberos 1.8及更高版本在安全模式下运行,则Java版本应为1.6.0_27或更高,以避免Java错误6979329。
- Hortonworks已通过RHEL5 / CentOS5,RHEL6 / CentOS6和SLES11下的JDK 1.6.0_31认证,包括Hadoop 1.x,HBase,Pig,Hive,HCatalog,Oozie,Sqoop和Ambari。
- Hortonworks已经在RHEL5 / CentOS5,RHEL6 / CentOS6和SLES11下使用Hadoop 2.2.0,HBase 0.96,Pig,Hive,HCatalog,Oozie,Sqoop和Ambari对JDK 1.6.0_31和Oracle 1.7.0.21进行了认证。
- Hortonworks已经通过Hadoop 2.2.0,HBase 0.96,Pig,Hive,HCatalog,Oozie,Sqoop和Ambari在RHEL6上认证了openjdk 1.7.0_09-icedtea。
压缩对象指针和Java 6
Sun JVM具有32位和64位模式。在大型集群中,NameNode和JobTracker需要以64位模式运行,以将所有数据结构保留在内存中。工作人员可以设置为32位或64位操作,具体取决于个人任务需要的偏好和内存。
使用压缩对象引用JVM功能(-XX:+ UseCompressedOops)减少了64位Sun JVM上的内存消耗并提高了性能。该功能在1.6.0_14中首次引入,但在1.6.0_20之前版本中使用该功能的问题已有报道。有几个人报告说在1.6.0_21及以上版本使用它。这是64位JVM上1.6.0_24及更高版本的默认值,现在看起来是稳定的。
发现和检查Sun JVM confuguration标志的有用提示在以下博客文章中:inspecting-hotspot-jvm-options
OpenJDK 7
OpenJDK已被用于验证Hadoop 2.2和RHEL6上其余的Hortonworks软件包。没有注意到任何问题。
Oracle JRockit
Oracle的JRockit JVM与Sun JVM不同:它具有非常不同的堆和内存管理行为。Hadoop已经在JRockit上使用,虽然不是“生产”规模。
IBM JDK
任何具有关于Hadoop 2.x与IBM JDK兼容性信息的人都可以编辑这个wiki。
旧版本的Hadoop(0.20.2)已经过全面测试,可以与IBM Java 6 SR 8一起使用。可以在这里下载 IBM Java 。
JVM / JDK开发人员请求帮助
我们强烈建议任何生产JVM / JDK的人测试编译并运行Hadoop。它使一个梦幻般的表现和压力测试。随着Hadoop正在成为关键的后端数据中心应用程序,良好的Hadoop支持很重要。