如何在 Ubuntu: 分步指南

⚡ 智能摘要

在 HBase 上进行安装 Ubuntu 以三种模式运行——独立模式、伪分布式模式和完全分布式模式——涵盖如何下载发布 tarball、编辑 hbase-env.sh 和 hbase-site.xml、启动守护程序以及修复常见的启动错误。

  • 🧩 安装方式: 独立模式在本地文件系统上的单个 JVM 中运行;分布式模式将数据存储在多个 JVM 中。 Hadoop HDFS.
  • ⬇️ 下载地址: 从 Apache HBase 网站获取 HBase 二进制 tar 包,并将其解压缩到您的主目录下。
  • ⚙️ 配置: 设置 JAVA_HOME 和 HBASE_HOME,然后在 hbase-site.xml 中定义 hbase.rootdir 和 ZooKeeper 目录。
  • ▶️ 启动: 运行 start-hbase.sh,使用 jps 确认 HMaster,然后使用 hbase shell 打开交互式提示符。
  • 🌐 伪分布式: 将 hbase.rootdir 指向 HDFS,启用 hbase.cluster.distributed,并设置 ZooKeeper 仲裁和客户端端口。
  • 🩹 故障排除: 通过编辑 hosts 和 hbase-site.xml 来解决 region-server、ZooKeeper quorum、root-directory 和 session-timeout 错误。

如何在……上安装 Apache HBase Ubuntu 独立模式、伪分布式模式和完全分布式模式

Apache HBase 是一个分布式数据库, 列式数据库 它运行在 Hadoop 分布式文件系统 (HDFS) 之上。开始之前,请确保您的设备受支持。 Java 运行时环境已安装,JAVA_HOME 已设置;伪分布式模式和完全分布式模式也需要正常运行的 JAVA_HOME 环境。 Hadoop的 安装。

Apache HBase 安装模式

Apache HBase 有三种安装模式。下面提到了这些模式的特点。

1)独立模式安装(不依赖Hadoop系统)

  • 这是HBase的默认模式。
  • 它直接在本地文件系统上运行。
  • 它不使用 Hadoop HDFS.
  • 只有 HMaster 守护进程可以运行。
  • 不建议在生产环境中使用。
  • 在单个 JVM 中运行。

2)伪分布式模式安装(单节点Hadoop系统+HBase安装)

  • 它继续运行 Hadoop HDFS.
  • 所有守护进程都在单个节点上运行。
  • 推荐用于生产环境。

3) 完全分布式模式安装(多节点Hadoop环境+HBase安装)

  • 它继续运行 Hadoop HDFS.
  • 所有守护进程都在集群中的所有节点上运行。
  • 强烈推荐用于生产环境。

有关 Hadoop 安装,请参考此文档。 Hadoop安装指南.

以下屏幕截图使用的是 HBase 1.1.2。当前稳定版本为 HBase 2.5.x 和 2.6.x 系列(Java 8 或 11),但安装步骤和配置文件基本相同。

如何下载 HBase tar 文件稳定版本

步骤1)前往 Apache HBase 官方下载页面 下载 HBase。这将打开如下所示的下载网页。

在浏览器中打开 Apache HBase 下载页面,即可获取发布版 tar 包。

步骤 2)选择如下所示的稳定版本,HBase 1.1.2 版本。

在下载页面选择稳定的 HBase 1.1.2 版本

步骤 3)点击 hbase-1.1.2-bin.tar.gz。这将下载 tar 文件。将该 tar 文件复制到安装位置。

点击 hbase-1.1.2-bin.tar.gz 二进制链接下载 tar 文件

如何在 Ubuntu 独立模式

以下是 HBase 独立模式安装的详细步骤。 Ubuntu:

步骤 1)执行以下命令。将 hbase-1.1.2-bin.tar.gz 放置在 /home/hduser 目录下。

步骤 2)执行命令 $tar -xvf hbase-1.1.2-bin.tar.gz 解压缩。它将解压缩内容,并在 /home/hduser 位置创建 hbase-1.1.2。

步骤 3)打开 hbase-env.sh,如下所示,并在 location 中指定 JAVA_HOME 路径。

编辑 hbase-env.sh 文件,为独立模式设置 JAVA_HOME 路径

步骤 4)打开 ~/.bashrc 文件,并按如下所示指定 HBASE_HOME 路径。

export HBASE_HOME=/home/hduser/hbase-1.1.1
export PATH= $PATH:$HBASE_HOME/bin

下面显示的是添加了 HBASE_HOME 条目的更新后的 ~/.bashrc 文件。

在独立模式下,将 HBASE_HOME 路径添加到 bashrc 文件中

步骤 5)在文件中添加属性。打开 hbase-site.xml 文件,并将以下属性添加到该文件中。

hduser@ubuntu$ gedit hbase-site.xml(代码如下)

<property>

<name>hbase.rootdir</name>

<value>file:///home/hduser/HBASE/hbase</value>

</property>

<property>

<name>hbase.zookeeper.property.dataDir</name>

<value>/home/hduser/HBASE/zookeeper</value>

</property>

hbase-site.xml 文件已打开 gedit 如下所示。

hbase-site.xml 文件已打开 gedit 使用独立根目录和 ZooKeeper 属性

这里我们放置两个属性:

  • 一个用于 HBase 根目录,以及
  • 第二个是对应于数据目录的 动物园管理员.

所有 HMaster 和 ZooKeeper 活动都指向此 hbase-site.xml。

步骤 6)添加 IP 地址。打开位于 /etc 目录下的 hosts 文件,并按如下所示添加 IP 地址。

编辑 /etc/hosts 文件以映射机器 IP 地址

步骤 7)现在运行位于 hbase-1.1.1/bin 目录下的 start-hbase.sh 脚本,如下所示。然后您可以使用 jps 命令检查 HMaster 是否正在运行。

jps 命令的输出显示 HMaster 进程以独立模式运行。

步骤 8)启动 HBase Shell。可以使用以下命令启动 HBase Shell: hbase 外壳 执行该命令后,它将进入交互式 shell 模式,如下图所示。进入 shell 模式后,我们可以执行所有类型的命令。

使用 hbase shell 命令启动了 HBase 交互式 shell 提示符

独立模式不需要启动Hadoop守护进程,HBase可以独立运行。

HBase伪分布式安装模式

这是另一种安装 Apache HBase 的方法,称为伪分布式安装模式。以下是通过伪分布式模式安装 HBase 的步骤。

步骤 1)将 hbase-1.1.2-bin.tar.gz 放入 /home/hduser。

步骤 2)执行命令 $tar -xvf hbase-1.1.2-bin.tar.gz 解压缩。它将解压缩内容,并在 /home/hduser 位置创建 hbase-1.1.2。

步骤 3)打开 hbase-env.sh,如下所示,在 location 中指定 JAVA_HOME 路径和 Region Servers 路径,并导出命令,如下所示。

编辑 hbase-env.sh 文件,添加 JAVA_HOME 和伪分布式模式下的区域服务器路径

步骤 4)在此步骤中,我们将打开 ~/.bashrc 文件并指定 HBASE_HOME 路径,如下面的屏幕截图所示。

在 bashrc 文件中设置 HBASE_HOME 路径以启用伪分布式模式

步骤 5)打开 hbase-site.xml 文件,并在文件中指定以下属性(代码如下)。

<property>

<name>hbase.rootdir</name>

<value>hdfs://localhost:9000/hbase</value>

</property>

<property>

<name>hbase.cluster.distributed</name>

<value>true</value>

</property>

<property>

<name>hbase.zookeeper.quorum</name>

<value>localhost</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<name>hbase.zookeeper.property.clientPort</name>

<value>2181</value>

</property>

<property>

<name>hbase.zookeeper.property.dataDir</name>

<value>/home/hduser/hbase/zookeeper</value>

</property>

下面显示的是具有伪分布式属性的 hbase-site.xml 文件。

包含伪分布式 HDFS 和 ZooKeeper 属性的 hbase-site.xml

剩余的 ZooKeeper 配置如下所示。

继续编写 hbase-site.xml ZooKeeper 配置,以适应伪分布式模式

文件中的每个属性都发挥着特定的作用:

  • 在 hbase.rootdir 属性中设置 HBase 根目录。
  • 对于分布式架构,hbase.cluster.distributed 必须设置为 true。
  • ZooKeeper 的 quorum 属性应该在这里设置。
  • 复制操作在 dfs.replication 属性中设置。默认情况下,复制操作的值为 1。在完全分布式模式下,存在多个数据节点,因此您可以通过在 dfs.replication 属性中设置大于 1 的值来增加复制操作。
  • 客户端端口应在 hbase.zookeeper.property.clientPort 属性中指定。
  • ZooKeeper 数据目录可以在 hbase.zookeeper.property.dataDir 属性中指定。

步骤 6)首先启动 Hadoop 守护进程,然后再启动 HBase 守护进程,如下所示。首先,您必须使用 ./start-all.sh 命令启动 Hadoop 守护进程,如下所示。

运行 start-all.sh 命令启动 Hadoop 守护进程

之后,使用 hbase-start.sh 启动 HBase 守护进程,如下所示。

使用 start-hbase.sh 脚本以伪分布式模式启动 HBase 守护进程

现在使用 jps 命令检查正在运行的进程,如下所示。

jps 命令的输出结果,列出了正在运行的 Hadoop 和 HBase 守护进程。

HBase 完全分布式模式安装

完全分布式模式将伪分布式设置扩展到真正的集群上。

  • 此设置在 Hadoop 集群模式下运行,其中多个节点在集群中生成并运行。
  • 安装方式与伪分布式模式相同;唯一的区别是它会在多个节点上生成。
  • hbase-site.xml 和 hbase-env.sh 中提到的配置文件与伪模式下提到的配置文件相同。

在完全分布式模式下,请确保集群上的 Hadoop 版本与 HBase 捆绑的 Hadoop 库相匹配,以便守护进程能够正确通信。

HBase 安装故障排除

1)问题描述:主服务器已初始化,但区域服务器未初始化。

主服务器与区域服务器之间的通信通过它们的 IP 地址进行。主服务器监听正在运行或 IP 地址为 127.0.0.1 的区域服务器。IP 地址 127.0.0.1 是本地主机地址,解析到主服务器自身的本地主机地址。

原因:

在区域服务器和主服务器之间的双向通信中,区域服务器不断通知主服务器其 IP 地址为 127.0.0.1。

解决方案:

  • 从 hosts 文件中本地主机条目中删除主服务器名称节点。
  • 主机文件位置:/etc/hosts。

改变什么:

打开 /etc/hosts 文件并进入该位置。

127.0.0.1 fully.qualified.regionservernameregionservername localhost.localdomain localhost
: : 1              localhost3.localdomain3 localdomain3

按如下方式修改上述配置(删除上面突出显示的区域服务器名称)。

127.0.0.1    localhost.localdomainlocalhost
: : 1 localhost3.localdomain3 localdomain3

2) 问题描述:在 ZooKeeper 仲裁服务器列表中找不到我的地址:XYZ

原因:

  • ZooKeeper 服务器无法启动,并抛出类似服务器名称中包含 .xyz 的错误。
  • HBase 尝试在一台机器上启动 ZooKeeper 服务器,但同时该机器无法在 hbase.zookeeper.quorum 配置中存在的仲裁配置中找到自己。

解决方案:

  • 将主机名替换为错误消息中显示的主机名。
  • 如果您有 DNS 服务器,则可以在 hbase-site.xml 中设置以下配置:hbase.zookeeper.dns.interface 和 hbase.zookeeper.dns.nameserver。

3) 问题陈述:通过 Hadoop DFS 为 HBase 创建根目录。

  • 主节点提示您需要运行 HBase 迁移脚本。
  • 运行该脚本后,HBase 迁移脚本响应称根目录中没有任何文件。

原因:

  • 使用 Hadoop 分布式文件系统为 HBase 创建了一个新目录。
  • 这里 HBase 预期有两种可能性:

1) 根目录不存在。

2) 之前已初始化过一个正在运行的 HBase 实例。

解决方案:

  • 确认 HBase 根目录当前不存在,或者已被之前运行 HBase 实例时初始化。
  • 作为解决方案的一部分,请按照以下步骤操作。

步骤 1)使用 Hadoop dfs 删除 HBase 根目录。

步骤 2)HBase 会自动创建并初始化目录。

4) 问题陈述:ZooKeeper 会话过期事件

原因:

  • HMaster 或 HRegion 服务器因抛出异常而关闭。
  • 如果查看日志,就可以找出实际抛出的异常。

以下显示了由于 ZooKeeper 过期事件而抛出的异常。高亮显示的事件是日志文件中记录的部分异常。

日志文件代码如下所示:

WARN org.apache.zookeeper.ClientCnxn: Exception
closing session 0x278bd16a96000f to sun.nio.ch.SelectionKeyImpl@355811ec

java.io.IOException: TIMED OUT	
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:906)
WARN org.apache.hadoop.hbase.util.Sleeper: We slept 79410ms, ten times longer than scheduled: 5000
INFO org.apache.zookeeper.ClientCnxn: Attempting connection to server hostname/IP:PORT
INFO org.apache.zookeeper.ClientCnxn: Priming connection to java.nio.channels.SocketChannel[connected local=/IP:PORT remote=hostname/IP:PORT]
INFO org.apache.zookeeper.ClientCnxn: Server connection successful
WARN org.apache.zookeeper.ClientCnxn: Exception closing session 0x278bd16a96000d to sun.nio.ch.SelectionKeyImpl@3544d65e

java.io.IOException: Session Expired	 
at org.apache.zookeeper.ClientCnxn$SendThread.readConnectResult(ClientCnxn.java:589)
at org.apache.zookeeper.ClientCnxn$SendThread.doIO(ClientCnxn.java:709)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:945)
ERROR org.apache.hadoop.hbase.regionserver.HRegionServer: ZooKeeper session expired

解决方案:

  • 默认内存大小为 1 GB。对于长时间运行的导入操作,请确保内存容量大于 1 GB。
  • 增加 ZooKeeper 的会话超时时间。
  • 要增加 ZooKeeper 的会话超时时间,请修改 hbase/conf 文件夹路径下的 hbase-site.xml 文件中的以下属性。
  • 默认会话超时时间为 60 秒。您可以按照以下说明将其更改为 120 秒。
<property>
    <name> zookeeper.session.timeout </name>
    <value>1200000</value>
</property>
<property>
    <name> hbase.zookeeper.property.tickTime </name>
    <value>6000</value>
</property>

常见问题

HBase 需要一个受支持的版本。 Java 运行时环境需要设置 JAVA_HOME。伪分布式模式和完全分布式模式也需要运行环境。 Hadoop HDFS 集群模式。独立模式仅需 Java因为它使用本地文件系统并捆绑了自己的 ZooKeeper。

独立模式并非如此,它运行在本地文件系统上的单个 JVM 中,无需 Hadoop 守护进程。伪分布式模式和完全分布式模式则需要 Hadoop,因为它们将数据存储在 HDFS 中,并依赖于其 NameNode 和 DataNode。

编辑 conf/hbase-env.sh 文件,添加一行 export JAVA_HOME=/path/to/your/jdk,指向 JDK 根目录。HBase 启动时会读取此值。您也可以在 ~/.bashrc 文件中导出 JAVA_HOME,以便 shell 找到它。 Java 全球。

本指南以 HBase 1.1.2 为例,但目前稳定的版本为 HBase 2.5.x 和 2.6.x 系列,3.0 版本为 beta 版。更新的版本需要 Java 8 或 11。下载、配置和启动步骤基本相同。

运行 jps 命令并查找 HMaster 进程,以及分布式模式下的 HRegionServer 和 HQuorumPeer 进程。您也可以打开 HBase Master Web UI,或在命令行中运行 status 命令。 hbase 外壳 确认集群是否正常运行。

默认情况下,HBase Master 监听端口 16000,Web UI 端口为 16010;每个 Region Server 使用端口 16020,UI 端口为 16030。ZooKeeper 监听客户端端口 2181,该端口通过 hbase.zookeeper.property.clientPort 设置。

AI 助手和机器学习日志分析工具会扫描 HBase 和 ZooKeeper 日志,对其进行聚类分析,并找出诸如会话过期或仲裁失败等错误的根本原因。它们会提供配置修复建议,但工程师在应用每项更改之前都应该进行确认。

是的。 GitHub 副驾驶 根据简短的注释,生成 hbase-site.xml 片段、hbase-env.sh 条目和启动 shell 脚本。 Rev在运行之前,请查看其对正确属性名称、路径和端口的建议,因为生成的配置可能引用过时的默认值。

总结一下这篇文章: