在本地开发测试中,单机的 HBase 更便于调试.

一、 准备环境

操作系统: Windows 10
Java: jdk-8u221-windows-x64 | 环境部署不再赘述
Hadoop 与 HBase 版本关系适配表: Hadoop version support matrix
Hadoop: Hadoop-3.1.2 | 环境部署详见 Windows部署Hadoop
HBase: hbase-2.2.0

二、 安装

2.1 解压

解压缩下载的 HBase 二进制文件,个人使用的解压工具为7-Zip.

  • 选择安装路径时请注意尽量使用英文不带空格的路径,防止出现意想不到的问题,同时也推荐所有开发环境的配置都这么做.

2.2 配置环境变量

  • 需要配置HBASE_HOMEHBASE_MANAGES_ZKPATH

    1. 使用快捷键 windows+r,输入 sysdm.cpl,敲击回车进入。

    2. 点击高级。

    3. 选择最底部的环境变量。

    4. 配置HBASE_HOME

      HBASE_HOME

    5. 配置HBASE_MANAGES_ZK,默认值为 true,使用 HBase 内置的 zookeeper.

      HBASE_MANAGES_ZK

    6. 配置PATH

      PATH

    7. 执行命令hadoop version,如下图所示则成功

    HBASE_VERSION

2.3 配置 HBase 文件

所有的%HBASE_HOME%请自行替换成自己的 HBase 路径.

  1. 修改%HBASE_HOME%\conf\hbase-site.xml,加入如下文本,建立相应目录.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <configuration>
    <property>
    <name>hbase.cluster.distributed</name>
    <value>false</value>
    </property>
    <property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9000/hbase</value>
    </property>
    <property>
    <name>hbase.tmp.dir</name>
    <value>/%HBASE_HOME%/data/tmp</value>
    </property>
    <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>%HBASE_HOME%/data/zookeeper</value>
    </property>
    <property>
    <name>hbase.rest.port</name>
    <value>9090</value>
    <description>
    HBase REST server port.Default is 8080
    </description>
    </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>
  2. 网上大部分教程还会要求配置 hbase-env.cmd,修改其中的 JAVA_HOME,但是只要系统 Java 环境变量版本配置过并且为 1.8,此步可以省略.

2.4 运行

  • powershell 执行start-hbase.cmd即可启动伪分布式集群(启动时产生的窗口请保持开启).
    (如提示Could not find or load main class .F,则需要移除 Visual C++ 2008 redistributable)

  • 执行hbase shell即可打开命令行.可能会提示如下错误,均可忽视.

    • java.lang.NoClassDefFoundError | 暂未找到解决方案

      1
      2
      3
      [ERROR] Terminal initialization failed; falling back to unsupported
      java.lang.NoClassDefFoundError: Could not initialize class org.fusesource.jansi.internal.Kernel32
      ......
    • error reading or parsing ~/.m2/setting.xml | 该错误是因为 maven 仓库的 settings.xml 文件中含有中文.
      m2

三、 参考