如何在 Ubuntu (HBase 安装)

Apache HBase 安装模式

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

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

  • 这是HBase的默认模式
  • 它针对本地文件系统运行
  • 它不使用 Hadoop的 高密度文件系统
  • 仅 HMaster 守护进程可以运行
  • 不推荐用于生产环境
  • 在单个 JVM 中运行

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

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

3)完全分布式模式安装(MultinodeHadoop环境+HBase安装)

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

对于 Hadoop 的安装,请参考此 URL 服务

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

步骤1) 转到链接 点击这里 下载HBase。它将打开如下所示的网页。

下载 HBase Tar 文件稳定版本

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

下载 HBase Tar 文件稳定版本

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

下载 HBase 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
如下所示打开 hbase-env.sh 并在位置中提及 JAVA_HOME 路径。

在中安装 HBase Ubuntu 独立模式

步骤 4)打开文件并输入路径
打开 ~/.bashrc 文件并输入 HBASE_HOME 路径,如下所示

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

在中安装 HBase Ubuntu 独立模式

步骤 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 Ubuntu 独立模式

这里我们放置两个属性

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

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

步骤 6)提及 IP
打开 /etc. 中的 hosts 文件。位置并输入如下所示的 IP。

在中安装 HBase Ubuntu 独立模式

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

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

在中安装 HBase Ubuntu 独立模式

步骤8)启动HBase Shell
HBase shell 可以通过使用“hbase 外壳” 它将进入交互式 shell 模式,如下面的屏幕截图所示。一旦进入 shell 模式,我们就可以执行所有类型的命令。

在中安装 HBase Ubuntu 独立模式

独立模式不需要启动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 路径和 Region 服务器的路径,然后导出命令,如下所示

HBase伪分布式安装模式

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

HBase伪分布式模式安装

步骤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伪分布式安装模式

HBase伪分布式安装模式

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

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

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

HBase伪分布式安装模式

通过 hbase-start.sh 启动 Hbase 守护进程后

HBase伪分布式安装模式

现在检查 jps

HBase伪分布式安装模式

HBase 完全分布式模式安装

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

HBase 安装故障排除

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

主服务器和区域服务器通过其 IP 地址进行通信。例如,主服务器将监听区域服务器是否正在运行或是否具有 IP 地址 127.0.0.1。IP 地址 127.0.0.1 是本地主机,可解析为主服务器自己的本地主机。

原因:

在Region Server和Master的双重通信中,Region Server不断告知Master Server自己的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.接口
    • HBase.zookeeper.dns.名称服务器

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

  • 大师说你需要运行 HBase 迁移脚本。
  • 运行该程序后,HBase 迁移脚本响应像根目录中没有文件.

原因:

  • 使用以下方法为 HBase 创建新目录 Hadoop的 分布式文件系统
  • 这里 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 的会话时间,我们必须修改 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>