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

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。这将打开如下所示的下载网页。
步骤 2)选择如下所示的稳定版本,HBase 1.1.2 版本。
步骤 3)点击 hbase-1.1.2-bin.tar.gz。这将下载 tar 文件。将该 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 路径。
步骤 4)打开 ~/.bashrc 文件,并按如下所示指定 HBASE_HOME 路径。
export HBASE_HOME=/home/hduser/hbase-1.1.1 export PATH= $PATH:$HBASE_HOME/bin
下面显示的是添加了 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 根目录,以及
- 第二个是对应于数据目录的 动物园管理员.
所有 HMaster 和 ZooKeeper 活动都指向此 hbase-site.xml。
步骤 6)添加 IP 地址。打开位于 /etc 目录下的 hosts 文件,并按如下所示添加 IP 地址。
步骤 7)现在运行位于 hbase-1.1.1/bin 目录下的 start-hbase.sh 脚本,如下所示。然后您可以使用 jps 命令检查 HMaster 是否正在运行。
步骤 8)启动 HBase Shell。可以使用以下命令启动 HBase Shell: hbase 外壳 执行该命令后,它将进入交互式 shell 模式,如下图所示。进入 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 路径,并导出命令,如下所示。
步骤 4)在此步骤中,我们将打开 ~/.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 文件。
剩余的 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 守护进程,如下所示。
之后,使用 hbase-start.sh 启动 HBase 守护进程,如下所示。
现在使用 jps 命令检查正在运行的进程,如下所示。
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>
















