# 入门

> 贡献者：[xixici](https://github.com/xixici)

1\. 介绍

[快速开始](#quickstart) 会介绍如何运行一个单机版的 Standalone 模式 HBase.

## 2\. 快速开始 - Standalone HBase

本章节介绍了在单机安装 HBase 的方法。会引导你通过`hbase shell`创建一个表，插入一行，然后执行 put 和 scan 指令，开启和关闭这张表，开启和停止 HBase。只要 10 分钟就可以完成以下的操作。

除了下载 HBase 外，此过程不到 10 分钟就能完成。

### 2.1\. JDK 版本要求

HBase 要求安装 JDK。有关支持 JDK 版本的信息，请参阅[Java](#java)。

### 2.2\. HBase 开始

#### 过程：下载、配置和启动 Standalone HBase

1. 选择一个[Apache 下载镜像]（https://www.apache.org/dyn/closer.lua/hbase/）。 建议点击顶部链接，进入 _HBase Releases_ 点击 _stable_ 的文件夹，然后下载将以 _tar.gz_ 结尾的二进制文件到本地。暂时不要下载以 _src.tar.gz_ 结尾的文件。

2. 解压缩，然后进入到那个要解压的目录.

   ```
   $ tar xzvf hbase-3.0.0-SNAPSHOT-bin.tar.gz
   $ cd hbase-3.0.0-SNAPSHOT/
   ```

3. 在启动 HBase 之前，您需要设置`JAVA_HOME`环境变量。您可以通过操作系统的常用设置来设置变量，HBase 也提供了一个中心机制 _conf/hbase-env.sh_。编辑此文件，取消注释以`JAVA_HOME`开头的行，并将其设置为适合您的操作系统的路径。应将`JAVA_HOME`变量设置为包含可执行文件 _bin/java_ 的目录。如今，大多数 Linux 操作系统都提供了一种机制，例如 RHEL 或 CentOS 上的/usr/bin/alternatives，可以方便切换环境。在这种情况下，您可以将`JAVA_HOME`设置为包含 _bin/java_ 的符号链接的目录，通常为 _/usr_。

   ```
   JAVA_HOME=/usr
   ```

4. 编辑 HBase 主配置文件 _conf/hbase-site.xml_. 
   此时，您需要在本地文件系统上指定 HBase 和 ZooKeeper 数据存储目录，并知晓一些风险。默认情况下，HBase 会在/tmp 下创建一个新目录，但是许多服务为在重新启动时会删除 _/tmp_ 的内容，因此您需要将数据存储在其他位置。以下配置文件处在 _hbase_,名为`testuser`的用户的主目录中。首次安装 HBase 为空，可以将`<property>`标记粘贴在`<configuration>`内。

   示例 1\.  _hbase-site.xml_  Standalone HBase 配置

   ```
   <configuration>
     <property>
       <name>hbase.rootdir</name>
       <value>file:///home/testuser/hbase</value>
     </property>
     <property>
       <name>hbase.zookeeper.property.dataDir</name>
       <value>/home/testuser/zookeeper</value>
     </property>
     <property>
       <name>hbase.unsafe.stream.capability.enforce</name>
       <value>false</value>
       <description>
         Controls whether HBase will check for stream capabilities (hflush/hsync).
   
         Disable this if you intend to run on LocalFileSystem, denoted by a rootdir
         with the 'file://' scheme, but be mindful of the NOTE below.
   
         WARNING: Setting this to false blinds you to potential data loss and
         inconsistent system state in the event of process and/or node failures. If
         HBase is complaining of an inability to use hsync or hflush it's most
         likely not a false positive.
       </description>
     </property>
   </configuration>
   ```
   您不需要创建 HBase 数据目录。 HBase 会自动创建。如果您想要自定义创建目录，HBase 将尝试进行迁移 。

   > 上例中的 _hbase.rootdir_ 指向 _local filesystem_ 中的目录。 'file：//'前缀是表示本地文件系。您应该将配置示例中的警告牢记在心。在 Standalone 模式下，HBase 利用 Apache Hadoopd 的本地文件存储。但是这种方式并不能保证 HBase 运行的持久性。这只是适用于于本地开发和测试用例，可以很好的控制集群故障的成本。它不适合生产部署，否则你会丢失数据。

为在 HDFS 上部署 HBase, 可以将 _hbase.rootdir_ 指向如: _hdfs://namenode.example.org:8020/hbase_. 有关此变量的更多用法，可查看章节基于 HDFS 部署 Standalone HBase.

1. 脚本 _bin/start-hbase.sh_ 为启动 HBase 提供了方便的途径。执行命令，在标准输出的日志里可以看到 HBase 启动成功的消息。你可以使用 `jps` 命令来确认你有一个正在运行的进行 `HMaster`。在 HBase 的 Standalone 模式中，所有的服务都运行在同一 JVM 中，如 HMaster，单例的 HRegionServer 和 ZooKeeper 的守护进程。可以前往 Web UI_[http://localhost:16010](http://localhost:16010)_ 查看 HBase.

   > Java 必须安装且可用. 如果你收到错误提示，Java 未安装，可能 java 位于非标准位置，你可以编辑 _conf/hbase-env.sh_ ,修改 `JAVA_HOME` 路径，并确保包含 _bin/java_.

#### 过程: 首次使用 HBase

1. 连接 HBase

   在 HBase 安装目录 _bin/_ 目录下使用`hbase shell`命令连接正在运行的 HBase 实例。 在下面这个例子中，当你启动 HBase Shell 并忽略一些用法和版本信息后，HBase Shell 是以字符`>` 结尾。

   ```
   $ ./bin/hbase shell
   hbase(main):001:0>
   ```

2. 预览 HBase Shell 的帮助文本

   输入`help`并回车, 可以看到 HBase Shell 的基本信息和一些示例命令.请注意，表名，行，列都必须用引号字符括起来。

3. 创建表

   使用 `create`创建一个表，你必须执行一个表名和列族名。

   ```
   hbase(main):001:0> create 'test', 'cf'
   0 row(s) in 0.4170 seconds
   
   => Hbase::Table - test
   ```

4. 表信息

   使用 `list` 查看存在表

   ```
   hbase(main):002:0> list 'test'
   TABLE
   test
   1 row(s) in 0.0180 seconds
   
   => ["test"]
   ```

   使用 `describe` 查看表细节及配置

   ```
   hbase(main):003:0> describe 'test'
   Table test is ENABLED
   test
   COLUMN FAMILIES DESCRIPTION
   {NAME => 'cf', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE =>
   'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'f
   alse', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE
    => '65536'}
   1 row(s)
   Took 0.9998 seconds
   ```

5. 插入数据

   使用 `put` 插入数据

   ```
   hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
   0 row(s) in 0.0850 seconds
   
   hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
   0 row(s) in 0.0110 seconds
   
   hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
   0 row(s) in 0.0100 seconds
   ```

   在这里，我们往`test`表中依次插入了三条数据。首先插入了一条 rowkey 为`row1`、列为`cf:a`、值为`value1`的数据。HBase 中的列是包含列族前缀的，在这个例子中，冒号前的为列 `cf`，冒号后的为列限定符 `a` 。

6. 扫描全部数据

   从 HBase 获取数据的途径之一就是 `scan` 。使用 scan 命令扫描表数据。你可以对扫描做限制，不过现在，获取全部的数据。

   ```
   hbase(main):006:0> scan 'test'
   ROW                                      COLUMN+CELL
    row1                                    column=cf:a, timestamp=1421762485768, value=value1
    row2                                    column=cf:b, timestamp=1421762491785, value=value2
    row3                                    column=cf:c, timestamp=1421762496210, value=value3
   3 row(s) in 0.0230 seconds
   ```

7. 获取一条数据

   使用 `get` 命令一次获取一条数据。

   ```
   hbase(main):007:0> get 'test', 'row1'
   COLUMN                                   CELL
    cf:a                                    timestamp=1421762485768, value=value1
   1 row(s) in 0.0350 seconds
   ```

8. 禁用表

   如果你想删除一个表或者改变表的设置，以及一些其他的场景，首先你需要使用 `disable` 命令禁用表。你可以使用 `enable` 命令“反禁用”即启用表。

   ```
   hbase(main):008:0> disable 'test'
   0 row(s) in 1.1820 seconds
   
   hbase(main):009:0> enable 'test'
   0 row(s) in 0.1770 seconds
   ```

   Disable the table again if you tested the `enable` command above:

   ```
   hbase(main):010:0> disable 'test'
   0 row(s) in 1.1820 seconds
   ```

9. 删除表

   使用 `drop` 命令删除一个表。

   ```
   hbase(main):011:0> drop 'test'
   0 row(s) in 0.1370 seconds
   ```

10. 退出 HBase Shell.

    使用`quit`命令退出命令行并从集群断开连接。HBase 仍然在后台运行。

#### 过程: 停止 HBase

1. 脚本 _bin/start-hbase.sh_ 这个脚本提供了便利的启动所有 HBase 服务，同样地， _bin/stop-hbase.sh_  脚本用来停止所有 HBase 服务。

   ```
   $ ./bin/stop-hbase.sh
   stopping hbase....................
   $
   ```

2. 在使用这个命令后，它可能需要过几分钟才能停掉服务进程。可以使用 `jps` 确认 HMaster 和 HRegionServer 进程是否关闭。

上面已经向您展示了如何启动和停止 HBase 的 Standalone 实例。在下一节中，我们将简要介绍 HBase 其他部署模式。

### 2.3\. 伪分布式 HBase

在[快速开始](#quickstart)小节部署了 Standalone 模式的 HBase 后，您可以重新配置以伪分布式运行。伪分布模式意味着 HBase 仍然在单个主机上完全运行，但是每个 HBase 守护进程（HMaster，HRegionServer 和 ZooKeeper）作为一个单独的进程运行：在独立模式下，所有守护进程都运行在一个 jvm 进程/实例中。 默认情况下, 除非你按 [快速开始](#quickstart)更改`hbase.rootdir` 的配置，否则你的数据仍会存储在 _/tmp/_ 中。假设 HDFS 系统可用，我们将数据存储在 HDFS 上。 当然，您可以跳过 HDFS 配置，继续使用本地文件系统。

> Hadoop 配置
>
> 此过程假定已在本地系统或远程系统上配置 Hadoop 和 HDFS，并且保证正在运行且可用，版本为 Hadoop 2。Hadoop 文档向导 [配置单节点集群](https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html).

1. 停止 HBase

   假设你刚刚完成 [快速开始](#quickstart) , Hbase 正在运行, 那么请停止他.这个过程将创建一个全新的目录，HBase 将存储它的数据，所以你之前创建的任何数据库都将丢失。

2. 配置 HBase

   编辑 _hbase-site.xml_ . 首先，添加以下指示 HBase 以分布式模式运行的属性，每个守护进程有一个 JVM 实例

   ```
   <property>
     <name>hbase.cluster.distributed</name>
     <value>true</value>
   </property>
   ```
   接下来，将 `hbase.rootdir` 从本地文件系统更改为您的 HDFS 实例的地址，使用 `hdfs:////`的 URI 语法。在这个例子中，HDFS 在端口 8020\的本地主机上运行。并确保 `hbase.unsafe.stream.capability.enforce`删除或为 true.

   ```
   <property>
     <name>hbase.rootdir</name>
     <value>hdfs://localhost:8020/hbase</value>
   </property>
   ```

   您不需要在 HDFS 中创建目录。HBase 会为你做这个。如果你要更改目录，HBase 会试图迁移。

3. 启动 HBase

   使用 _bin/start-hbase.sh_ 启动 HBase. 如果您的系统配置正确，该`jps`命令应显示 HMaster 和 HRegionServer 进程正在运行。

4. 检查 HDFS 中的 HBase 目录

   如果一切正常，HBase 在 HDFS 中创建它的目录。在上面的配置中，它存储在 HDFS 上的 _/hbase/_ 中。您可以使用 hadoop 的 _bin/_ 目录中的`hadoop fs` 命令来列出此目录。

   ```
   $ ./bin/hadoop fs -ls /hbase
   Found 7 items
   drwxr-xr-x   - hbase users          0 2014-06-25 18:58 /hbase/.tmp
   drwxr-xr-x   - hbase users          0 2014-06-25 21:49 /hbase/WALs
   drwxr-xr-x   - hbase users          0 2014-06-25 18:48 /hbase/corrupt
   drwxr-xr-x   - hbase users          0 2014-06-25 18:58 /hbase/data
   -rw-r--r--   3 hbase users         42 2014-06-25 18:41 /hbase/hbase.id
   -rw-r--r--   3 hbase users          7 2014-06-25 18:41 /hbase/hbase.version
   drwxr-xr-x   - hbase users          0 2014-06-25 21:49 /hbase/oldWALs
   ```

5. 创建一个表并使用数据填充它

   您可以使用 HBase Shell 创建一个表，使用数据填充它，使用与[shell 练习](#shell_exercises)中相同的步骤。

6. 启动和停止备份 HBase 主（HMaster）服务器

   > 在同一个硬件上运行多个 HMaster 实例在生产环境中是没有意义的，就像运行伪分布式集群对于生产没有意义一样。此步骤仅供测试和学习之用。

   HMaster 服务器控制 HBase 集群。你可以启动最多 9 个备份 HMaster 服务器，这个服务器总共有 10 个 HMaster 计算主服务器。使用`local-master-backup.sh`启动备份 HMaster。对于要启动的每个备份主节点，请添加一个表示该主节点的端口偏移量的参数。每个 HMaster 使用三个端口（默认情况下为 16010,16020 和 16030）。端口偏移量 2 添加到这些端口，那么备份 HMaster 将使用端口 16012,16022 和 16032。以下命令启动服务器端口为：16012/16022/16032，16013/16023/16033 和 16015/16025/16035

   ```
   $ ./bin/local-master-backup.sh start 2 3 5
   ```

   要在不杀死整个群集的情况下杀死备份主机，则需要查找其进程 ID（PID）。PID 存储在一个名为 _/tmp/hbase-USER-X-master.pid_ 的文件中。该文件的唯一内容是 PID。您可以使用该`kill -9`命令来杀死该 PID。以下命令将终止具有端口偏移 1 的主服务器，但保持群集正在运行：

   ```
   $ cat /tmp/hbase-testuser-1-master.pid |xargs kill -9
   ```

7. 启动和停止其他 RegionServers

   HRegionServer 按照 HMaster 的配置管理 StoreFiles 中的数据。通常，一个 HRegionServer 在集群中的每个节点上运行。在同一个系统上运行多个 HRegionServers 对于伪分布式模式下的测试非常有用。该`local-regionservers.sh`命令允许您运行多个 RegionServer。它以类似的`local-master-backup.sh`命令的方式工作，因为您提供的每个参数都代表实例的端口偏移量。每个 RegionServer 需要两个端口，默认端口是 16020 和 16030。但是，由于 HMaster 使用默认端口，所以其他 RegionServers 的基本端口不是默认端口，而 HMaster 自从 HBase 版本 1.1.0 以来也是 RegionServer。基本端口是 16200 和 16300。您可以在服务器上运行另外 99 个不是 HMaster 或备份 HMaster 的 RegionServer。以下命令将启动另外四个 RegionServers，它们在从 16202/16302（基本端口 16200/16300 加 2）开始的顺序端口上运行 HBase 从版本 1.1.0 开始, HMaster 不使用 region server 端口, 而为 RegionServers 预留了 10 个端口 (16020 to 16029 and 16030 to 16039). 为支持添加 RegionServers, 在启动`local-regionservers.sh`之前,需设置 HBASE_RS_BASE_PORT 和 HBASE_RS_INFO_BASE_PORT.例如, 使用基本端口 16200 和 16300。也可以使用另外 99 个端口。 以下命令将启动另外四个 RegionServers，它们在从 16202/16302（基本端口 16200/16300 加 2）开始的顺序端口上运行。

   ```
   $ .bin/local-regionservers.sh start 2 3 4 5
   ```

   要手动停止 RegionServer，请使用带有`stop`参数和服务器偏移量的`local-regionservers.sh`命令停止。

   ```
   $ .bin/local-regionservers.sh stop 3
   ```

8. 停止 HBase

   您可以使用 _bin/stop-hbase.sh_ 命令以与[快速开始](#quickstart)过程相同的方式停止 HBase 。

### 2.4\. 完全分布式 HBase

实际上，您需要一个完全分布式的配置来全面测试 HBase，并将其用于实际场景中。在分布式配置中，集群包含多个节点，每个节点运行一个或多个 HBase 守护进程。这些包括主要和备份主实例，多个 ZooKeeper 节点和多个 RegionServer 节点。

此高级快速入门将两个以上的节点添加到您的群集。架构如下：

| Node Name          | Master | ZooKeeper | RegionServer |
| ------------------ | ------ | --------- | ------------ |
| node-a.example.com | yes    | yes       | no           |
| node-b.example.com | backup | yes       | yes          |
| node-c.example.com | no     | yes       | yes          |

这个快速入门假定每个节点都是虚拟机，并且它们都在同一个网络上。它基于之前的快速入门、本地和[伪分布式 HBase](#quickstart_pseudo)，假设您在该过程中配置的系统是现在`node-a`。继续之前，在`node-a`停止 HBase 。

> 请确保所有节点都具有完全的通信访问权限，并且没有任何防火墙规则可以阻止。如果您看到任何错误，如`no route to host`，请检查您的防火墙设置。

过程: 配置无密码 SSH 访问

`node-a`需要能够登录`node-b`和`node-c`（包含自己）才能启动守护进程。实现这一点的最简单的方法是在所有主机上使用相同的用户名，并配置`node-a`到其他的无密码的 SSH 登录

1. 在`node-a`，生成一个密钥对

   以运行 HBase 的用户身份登录时，使用以下命令生成 SSH 密钥对：

   ```
   $ ssh-keygen -t rsa
   ```

   如果命令成功，密钥对的位置将打印到标准输出。公钥的默认名称是 _id_rsa.pub_.

2. 创建并共享密钥的目录

   在`node-b`和上`node-c`，以 HBase 用户身份登录，并在用户主目录中创建一个 _.ssh/_ 目录（如果尚不存在）。如果它已经存在，请注意它可能已经包含其他值。

3. 将公钥复制到其他节点

   通过使用 scp 或其他一些安全的手段，安全地将公钥从`node-a`复制到每个节点。在其他每个节点上，创建一个名为 _.ssh/authorized_keys_ 的新文件（如果该文件尚不存在），并将 _id_rsa.pub_ 文件的内容附加到该文件的末尾。请注意，你也需要为`node-a`本身执行此项。

   ```
   $ cat id_rsa.pub >> ~/.ssh/authorized_keys
   ```

4. 测试无密码登录

   确保过程正确,可以以相同用户名从`node-a` 无密码登录其他节点.

5. 由于 `node-b` 是备份主节点, 重复上述步骤,将`node-a`替换为`node-b`.确保不会覆盖现有的 _.ssh/authorized_keys_ 文件, 可以使用`>>`运算符而不是`>`运算符将新密钥添加到文件末尾。

过程: 准备 `node-a`

`node-a` 是主节点和 ZooKeeper 进程节点,而不是 RegionServers 服务. 首先停止`node-a`RegionServers 服务

1. 编辑 _conf/regionservers_ 移除包含 `localhost`的列. 添加 `node-b` 和 `node-c`的主机名和 IP.

   即使你非要在 `node-a`上运行 regionserver, 你应该配置主机名. 演示中为 `node-a.example.com`.确保您能够将配置分发到集群的每个节点上并无任何主机名冲突。保存文件。

2. 配置 HBase,将 `node-b`作为备份主节点

   在 _conf/_ 目录创建 _backup-masters_ 添加新的一行主机名为 `node-b`. 演示中主机名为 `node-b.example.com`.

3. 配置 ZooKeeper

   实际上，你应该仔细考虑你的 ZooKeeper 配置。您可以在[zookeeper](#zookeeper)部分找到更多关于配置 ZooKeeper 的信息。这个配置将指示 HBase 在集群的每个节点上启动和管理一个 ZooKeeper 实例。在`node-a`上，编辑 _conf/hbase-site.xml_ 并添加下列属性


    ```
    <property>
      <name>hbase.zookeeper.quorum</name>
      <value>node-a.example.com,node-b.example.com,node-c.example.com</value>
    </property>
    <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/usr/local/zookeeper</value>
    </property>
    ```

4.  在您的配置中，您已经将`node-a`作为`localhost`引用，将引用改为指向其他节点用来引用 `node-a`的主机名。在这些例子中，主机名是`node-a.example.com`

过程: 准备 `node-b` 和 `node-c`

`node-b` 将运行一个备份主服务器和一个 ZooKeeper 实例。

1. 下载并解压 HBase

   将 HBase 下载并解压到`node-b`，就像您为独立和伪分布式快速入门所操作的一样。

2. 将配置文件从`node-a`复制到`node-b`和`node-c`

   的群集的每个节点都需要具有相同的配置信息。将 _conf/_ 目录下的内容复制到`node-b`和`node-c`上的 _conf/_ 目录中。

过程: 启动并测试群集

1. 确保 HBase 没有在任何节点上运行

   如果您在之前的测试中忘记停止 HBase，您将会遇到错误。通过使用该`jps`命令检查 HBase 是否在任何节点上运行。寻`HMaster`, `HRegionServer`和 `HQuorumPeer`的进程。如果他们存在，杀掉他们

2. 启动集群

   在`node-a`，发出`start-hbase.sh`命令。您的输出将类似于下面的输出。

   ```
   $ bin/start-hbase.sh
   node-c.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-c.example.com.out
   node-a.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-a.example.com.out
   node-b.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-b.example.com.out
   starting master, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-master-node-a.example.com.out
   node-c.example.com: starting regionserver, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-regionserver-node-c.example.com.out
   node-b.example.com: starting regionserver, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-regionserver-node-b.example.com.out
   node-b.example.com: starting master, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-master-nodeb.example.com.out
   ```

   ZooKeeper 首先启动，然后是 master，然后是 RegionServers，最后是 backup masters。


3. 验证进程是否正在运行

   在集群的每个节点上，运行该`jps`命令并验证每台服务器上是否运行了正确的进程。如果用于其他用途，您可能会看到在您的服务器上运行的其他 Java 进程。

   `node-a` `jps` 输出

   ```
   $ jps
   20355 Jps
   20071 HQuorumPeer
   20137 HMaster
   ```

   `node-b` `jps` 输出

   ```
   $ jps
   15930 HRegionServer
   16194 Jps
   15838 HQuorumPeer
   16010 HMaster
   ```

   `node-c` `jps` 输出

   ```
   $ jps
   13901 Jps
   13639 HQuorumPeer
   13737 HRegionServer
   ```

   > ZooKeeper 进程名称
   >
   > 进程`HQuorumPeer`是一个由 HBase 控制和启动的 ZooKeeper 实例.如果以这种方式使用 ZooKeeper，则每个群集节点仅限于一个实例，并且仅适用于测试。如果 ZooKeeper 在 HBase 之外运行，则调用该进程 QuorumPeer。更多请查看章节 [zookeeper](#zookeeper) .

4. Web UI.

   > Web UI 接口更改

   在 HBase 0.98.x 以上,  HBase Web UI 的端口从主节点的 60010 和 RegionServer 的 60030 变化为 16010 和 16030

   如果一切设置正确，您应该能够使用 Web 浏览器连接到 Master`[http://node-a.example.com:16010/](http://node-a.example.com:16010/)`或 Secondary Master 的 UI `[http://node-b.example.com:16010/](http://node-b.example.com:16010/)` 。如果您可以通过`localhost`而不是从另一台主机连接，请检查您的防火墙规则。您可以在端口 16030 的 IP 地址中查看每个 RegionServers 的 Web UI，也可以通过单击 Master 的 Web UI 中的链接来查看。

5. 测试节点或服务消失时会发生什么

   在配置了三节点集群后，集群并不会很有弹性。您仍然可以通过关闭进程并查看日志来测试主 Master 或 RegionServer 的行为。

### 2.5\. 接下来
下一章节 [configuration](#configuration), 提供有关不同的 HBase 运行模式、运行 HBase 的系统要求以及分布式 HBase 群集的关键配置的详细信息。