如何在 Ubuntu 上安装 HBase (HBase 安装)

Apache HBase 安装模式

Apache HBase 可以安装在三种模式下。这些模式的特点如下所述。

1) 单机模式安装(不依赖 Hadoop 系统)

  • 这是 HBase 的默认模式
  • 它运行在本地文件系统上
  • 它不使用 Hadoop HDFS
  • 只能运行 HMaster 守护进程
  • 不推荐用于生产环境
  • 运行在单个 JVM 中

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

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

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

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

有关 Hadoop 安装,请参考此 URL 此处

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

步骤 1)访问此链接 此处下载 HBase。它将打开如下所示的网页。

 Download HBase Tar File Stable Version

步骤 2)如下选择稳定版本,例如 1.1.2 版本

Download HBase Tar File Stable Version

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

Download HBase Tar File Stable Version

如何在 Ubuntu 中使用单机模式安装 HBase

以下是 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
如下打开 hbase-env.sh 并指定 JAVA_HOME 路径。

Install HBase in Ubuntu with Standalone Mode

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

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

Install HBase in Ubuntu with Standalone Mode

步骤 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>

Install HBase in Ubuntu with Standalone Mode

这里我们放置两个属性

  • 一个用于 HBase 根目录,
  • 第二个用于对应 ZooKeeper 的数据目录。

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

步骤 6)指定 IP
打开位于 /etc. 位置的 hosts 文件,并按如下方式指定 IP。

Install HBase in Ubuntu with Standalone Mode

现在,在 hbase-1.1.1/bin 位置运行 Start-hbase.sh,如下所示。

然后我们可以通过 jps 命令检查 HMaster 是否正在运行。

Install HBase in Ubuntu with Standalone Mode

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

Install HBase in Ubuntu with Standalone Mode

单机模式不需要启动 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,并在指定位置填写 JAVA_HOME 路径和 RegionServer 的路径,并导出命令,如下所示。

HBase Pseudo Distributed Mode of Installation

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

HBase Pseudo Distributed Mode Installation

步骤 5)打开 HBase-site.xml,并在文件中填写以下属性(代码如下)

<property>

<name>hbase.rootdir</name>

<value>hdfs://: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 Pseudo Distributed Mode of Installation

HBase Pseudo Distributed Mode of Installation

  1. 在此属性中设置 Hbase 根目录
  2. 对于分布式设置,我们必须设置此属性
  3. ZooKeeper 仲裁属性应在此处设置
  4. 复制设置在此属性中完成。默认情况下,我们将复制设置为 1。在完全分布式模式下,存在多个数据节点,因此我们可以通过将 dfs.replication 属性的值设置为大于 1 来增加复制。
  5. 客户端端口应在此属性中指定
  6. ZooKeeper 数据目录可以在此属性中指定

步骤 6)首先启动 Hadoop 守护进程,然后启动 HBase 守护进程,如下所示。

这里您必须首先使用“./start-all.sh”命令启动 Hadoop 守护进程,如下所示。

HBase Pseudo Distributed Mode of Installation

启动 HBase 守护进程后,使用 hbase-start.sh

HBase Pseudo Distributed Mode of Installation

现在检查 jps

HBase Pseudo Distributed Mode of Installation

HBase 完全分布式模式安装

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

HBase 安装故障排除

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

主服务器和区域服务器通过其 IP 地址进行通信。主服务器正在监听区域服务器是否正在运行,或者区域服务器的 IP 地址是 127.0.0.1。IP 地址 127.0.0.1 是本地主机,解析到主服务器自己的本地主机。

原因

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

解决方案

  • 必须从 hosts 文件中的本地主机中移除主服务器名称节点
  • Host 文件位置 /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

解决方案

  • 默认 RAM 大小为 1 GB。为进行长时间导入,我们保持 RAM 容量在 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>