HBase 先决条件:所需的服务和一些必需的系统配置
列出了使用 HBase 时所需的服务和一些必需的系统配置。
安装 Java
Java 是 Hadoop 和 HBase 的主要先决条件。您应该首先使用“java -verion”检查系统上是否存在 Java。 java -version 命令的语法如下。
如果一切正常,将会得到下面的输出。
如果系统中没有安装Java,请安装它。爪哇!
HBase 版本与 JDK
在下表中,您可以看到 HBase 版本及其相应支持的 JDK 版本:
注意 :HBase 不是使用 Java 6 构建或编译的,并且必须在在集群中,在每个节点上设置 JAVA_HOME 提供了一种方便的机制来执行此操作。
OS
SSH
(必需) HBase 广泛使用 Secure Shell (ssh) 命令和实用程序在集群节点之间进行通信。集群中的每台服务器都必须运行 ssh,以便可以管理 Hadoop 和 HBase 后台进程。您必须能够使用共享密钥而不是密码从主服务器和每个备份主服务器通过 SSH 连接到所有节点(包括本地节点)。您可以在 Linux 或 Unix 系统上的“过程:配置无密码 SSH 访问”中找到设置此功能的基本方法。如果您的集群节点使用 OS X,请参阅 Hadoop Wiki 上的 SSH:设置远程桌面并启用自登录。
DNS
HBase 使用本地主机名来报告其 IP 地址本身。正向和反向 DNS 解析必须在早期 HBase 版本中工作。 hadoop-dns-checker工具可用于检查集群中的DNS是否正常工作。项目自述文件提供了详细的使用说明。
环回IP
以前,HBase 仅使用 IP 地址来引用 localhost,并且这是不可配置的。有关更多详细信息,请参阅环回 IP。
NTP
集群节点上的时钟应同步。少量的变化是可以接受的,但大量的差异可能会导致不稳定和不可预测的行为。如果您在集群中发现无法解释的问题,时间同步是首先要检查的事情之一。建议您在集群上运行网络时间协议 (NTP) 服务或其他时间同步机制,并且所有节点都寻找相同的服务来进行时间同步。请参阅 Linux 文档项目 (TLDP) 中的基本 NTP 配置来设置 NTP。
文件和进程数限制(ulimit)
Apache HBase 是一个数据库。它必须能够同时打开大量文件。许多 Linux 发行版将单个用户可以打开的文件数量限制为 1024 个(在旧版本的 OS X 上为 256 个)。您可以在以运行 HBase 的用户身份登录时在服务器上运行 ulimit -n 命令来检查服务器上的限制。您可能还会注意到以下错误:
建议将 ulimit 增加到至少 10,000,但更可能是 10,240,因为该值通常以 1024 的倍数表示。每个ColumnFamily至少有1个StoreFile,加载region时可以有6个以上的StoreFile。所需打开文件的数量取决于 ColumnFamilies 的数量和区域的数量。以下是计算 RegionServer 上潜在打开文件数的粗略公式。
计算潜在的打开文件数量:
例如,假设某个架构每个区域有 3 个 ColumnFamilies,每个 ColumnFamily 平均有 3 个 StoreFile,每个 RegionServer 有 100 个区域,则 JVM 将打开 3* = 3 * 100 个区域900个文件描述符,不包括打开的JAR文件、配置文件等。打开一个文件并不需要占用太多资源,用户打开太多文件的风险也很小。
另一个相关设置是允许用户同时运行的进程数。在Linux和Unix中,使用ulimit -u命令设置进程数。不要将其与 nproc 命令混淆,后者控制给定用户可用的 CPU 量。在负载下,ulimit -u 太低可能会导致 OutOfMemoryError 异常。
为运行HBase进程的用户配置最大文件描述符和进程数是操作系统配置,而不是HBase配置。确保更改实际运行 HBase 的用户的设置也很重要。要查看哪个用户启动了 HBase 以及该用户的 Ulimit 配置,请查看该实例的 HBase 日志的第一行。
示例:Ubuntu 上的 ulimit 设置
要在 Ubuntu 上配置 ulimit 设置,请编辑:/etc/security/,这是一个由四列组成的空格分隔文件。在以下示例中,第一行将名为 hadoop 的操作系统用户的打开文件数 (nofile) 的软限制和硬限制设置为 32768。第二行将同一用户的进程数设置为 32000。
这些设置仅适用于可插入身份验证模块 (PAM) 环境指示其使用的情况。要将 PAM 配置为使用这些限制,请确保 /etc/ 文件包含以下行:
Linux Shell
HBase 附带的所有 shell 脚本都依赖于 GNU Bash-Shell。
Windows
在 HBase 0.96 之前,在 Microsoft Windows 上运行 HBase 仅用于测试目的。不建议在 Windows 计算机上运行生产系统。
Hadoop
下表总结了每个 HBase 版本支持的 Hadoop 版本。根据HBase版本,选择最适合的Hadoop版本。
推荐Hadoop 2.x:Hadoop 2.x速度更快,并且包含短路读取功能,这有助于改善您的HBase随机读取配置文件; Hadoop 2.x 还包括重要的错误修复,可以改善您的整体 HBase 体验; HBase不支持与早期版本的Hadoop一起运行;不同HBase版本的具体要求见下表; Hadoop 3.x 仍处于早期访问阶段,尚未被 HBase 社区采用用于生产用例进行充分的测试。
使用以下注释来解释下表:
Hadoop 版本支持矩阵:
- "S" = 支持
- "X" = 不支持 ♿ 未测试 " Hadoop Pre -2.6.1和 JDK 1.8 Kerberos
在 Kerberos 环境中使用 2.6.1 之前的 Hadoop 版本和 JDK 1.8 时,HBase 服务器可能会失败并崩溃,并出现 Kerberos keytab 重新登录错误。更高版本的 JDK 1.7 (1.7 . 0_80) 也有在这种情况下,请考虑升级到 Hadoop 2.6.1。
Hadoop
如果您计划在 HDFS 加密区域之上运行 HBase,则基于行的 Hadoop 发行版必须应用 HADOOP-11710。因此会导致集群故障和数据丢失。该补丁存在于Apache Hadoop版本2.6.1中。
Hadoop 2.7.x
Hadoop 2.7.0 版本未经测试或支持,因为 Hadoop PMC 已明确将此版本标记为不稳定。
Hadoop 2.8.x
Hadoop 2.8.0 及其版本未经过测试或支持,因为 Hadoop PMC 明确将该版本标记为不稳定。
替换与 HBase 捆绑的 Hadoop
因为 HBase 依赖于 Hadoop,所以它在其 lib 目录中捆绑了 Hadoop jar 的实例。捆绑的 jar 只能在独立模式下使用。在分布式模式下,集群上Hadoop的版本与HBase下的版本匹配至关重要。将 HBase lib 目录中找到的 Hadoop jar 替换为您在集群上运行的 Hadoop jar 以避免版本控制问题。确保替换整个集群中 HBase 中的 jar。
HDFS DataNode 任何时候的文件数量都有上限。在进行加载之前,请确保您已配置 Hadoop 的 conf/ 并将值至少设置为以下值:
配置完上述内容后,请务必重新启动 HDFS。
如果没有这个配置,就会出现奇怪的错误。其中一种表现就是对丢失区块的抱怨。例如:需要
ZooKeeper
需要Zookeeper。 HBase 使用许多仅可从 ZooKeeper 获得的功能。配置属性默认为 true。参考 HBASE-12241(采用 deadserver 复制队列时 RegionServer 崩溃,导致复制中断)和 HBASE-6775(当 HBASE-6710 0.92/0.94 兼容性补丁可用时)。此属性已弃用,并且 useMulti 在 HBase 2.0 中始终启用。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。