本节列出了所需的服务和一些必需的系统配置。
Java的
下表总结了在各种Java版本上部署的HBase社区的建议。一个符号旨在表示测试的基本级别以及帮助诊断和解决可能遇到的问题的意愿。同样,一个条目要么 通常意味着如果您遇到问题,社区可能会要求您在继续提供帮助之前更改Java环境。在某些情况下,还将注意到有关限制的具体指导(例如,编制/单元测试是否有效,具体操作问题等)。
长期支持建议使用JDK
HBase建议下游用户依赖于OpenJDK项目或供应商标记为长期支持(LTS)的JDK版本。截至2018年3月,这意味着Java 8是唯一适用的版本,下一个可能的测试版本将是2018年第三季度的Java 11。
表2.发行版的java支持
4.1。Hadoop的版本对应
下表总结了每个HBase版本支持的Hadoop版本。未出现在此表中的较旧版本被视为不受支持且可能缺少必要的功能,而较新版本未经测试但可能适用。
根据HBase的版本,您应该选择最合适的Hadoop版本。您可以使用Apache Hadoop或供应商的Hadoop发行版。这里没有区别。有关Hadoop供应商的信息,请参阅Hadoop wiki。
建议使用Hadoop 2.x.
Hadoop 2.x速度更快,并且包含一些功能,例如短路读取(请参阅利用本地数据),这将有助于改善HBase随机读取配置文件。Hadoop 2.x还包含重要的错误修复程序,可以改善您的整体HBase体验。HBase不支持与早期版本的Hadoop一起运行。有关不同HBase版本的特定要求,请参阅下表。
Hadoop 3.x仍处于早期访问版本中,尚未经过HBase社区对生产用例的充分测试。
使用以下图例来解释此表:
Hadoop版本支持矩阵
-
=经过测试,功能齐全
-
=已知不能完全发挥作用
-
=未经测试,可能/可能不起作用
Hadoop Pre-2.6.1和JDK 1.8 Kerberos
在Kerberos环境中使用2.6.1之前的Hadoop版本和JDK 1.8时,由于Kerberos keytab relogin错误,HBase服务器可能会失败并中止。JDK 1.7(1.7.0_80)的后期版本也存在问题。有关其他详细信息,请参阅HADOOP-10786。在这种情况下,请考虑升级到Hadoop 2.6.1+。
Hadoop 2.6.x
基于2.6.X的线的Hadoop发行版必须有 HADOOP-11710应用,如果你计划在一个HDFS加密区之上运行HBase的。如果不这样做,将导致群集故障和数据丢失。该补丁存在于Apache Hadoop 2.6.1+版本中。
Hadoop 2.y.0发布
从Hadoop版本2.7.0开始,Hadoop PMC养成了在主要版本2发行版上调用新的次要版本的习惯,因为它们不稳定/生产就绪。因此,HBase明确建议下游用户避免在这些版本之上运行。请注意,Hadoop PMC另外发布了2.8.1版本。有关参考,请参阅Apache Hadoop 2.7.0,Apache Hadoop 2.8.0,Apache Hadoop 2.8.1和Apache Hadoop 2.9.0的发布公告。
Hadoop 3.0.x版本
包含应用程序时间线服务功能的Hadoop发行版可能会导致应用程序类路径中出现意外版本的HBase类。计划使用HBase运行MapReduce应用程序的用户应确保YARN-7190存在于其YARN服务中(目前已在2.9.1+和3.1.0+中修复)。
Hadoop 3.1.0发布
Hadoop PMC称3.1.0版本不稳定/生产就绪。因此,HBase明确建议下游用户避免在此版本之上运行。有关参考,请参阅Hadoop 3.1.0的发布公告。
用HBase替换捆绑的Hadoop!
因为HBase依赖于Hadoop,所以它将Hadoop jar捆绑在其lib目录下。捆绑的罐子仅用于独立模式。在分布式模式下,群集上的Hadoop版本与HBase下的版本匹配至关重要。将HBase lib目录中的hadoop jar替换为您在群集上运行的版本中的等效hadoop jar,以避免版本不匹配问题。确保在整个群集中替换HBase下的jar。Hadoop版本不匹配问题有各种表现形式。如果HBase出现挂起,请检查是否不匹配。
4.1.1。 dfs.datanode.max.transfer.threads
HDFS DataNode服务的文件数量的上限。在进行任何加载之前,请确保已配置Hadoop的conf / hdfs-site.xml,并将dfs.datanode.max.transfer.threads
值设置为至少以下值:
<property>
<name>dfs.datanode.max.transfer.threads</name>
<value>4096</value>
</property>
完成上述配置后,请务必重新启动HDFS。
没有这种配置会导致奇怪的故障。一个表现是对丢失的块的抱怨。例如:
10/12/08 20:10:31 INFO hdfs.DFSClient:无法获取阻止
来自任何节点的blk_XXXXXXXXXXXXXXXXXXXXXX_YYYYYYYY:java.io.IOException:没有活动节点
包含当前块。将从namenode获取新的块位置并重试...
另请参阅casestudies.max.transfer.threads并注意此属性以前称为dfs.datanode.max.xcievers
(例如Hadoop HDFS:Xciever欺骗)。
4.2。ZooKeeper要求
ZooKeeper 3.4.x是必需的。