HBase 有两种运行模式:独立式和分布式。HBase 以独立模式运行。无论您的模式如何,您都需要通过编辑 HBase conf 目录中的文件来配置 HBase 。至少,您必须编辑 conf/hbase-env.sh 来告诉 HBase 要使用哪个 java。在这个文件中,你设置了 HBase 环境变量,比如JVM的 heapsize 和其他选项,日志文件的首选位置等等。设置 JAVA_HOME 以指向你的 java 安装的根目录。

5.1. Standalone HBase

默认情况下使用的是独立式的 HBase。在快速开始一节中,我们已经介绍过独立模式。在独立模式下,HBase 不使用 HDFS,而是使用本地文件系统,是在同一个 JVM 中运行所有 HBase 守护进程和本地 ZooKeeper。ZooKeeper 绑定到一个众所周知的端口,通过该端口,客户端可以和 HBase 进行通信。

5.1.1. Standalone HBase over HDFS

有时在独立的 hbase 上有一个有用的变体,它的所有的守护进程都在一个 JVM 中运行,而不是坚持到本地文件系统,而是坚持到一个 HDFS 实例。

当您打算使用简单的部署配置文件时,您可能会考虑使用此配置文件,加载很轻松,但是数据必须在节点的出入之间持续存在。向 HDFS 写入数据的地方可以确保后者。

要配置此独立变体,请编 hbase-site.xml,设置 hbase.rootdir 以指向 HDFS 实例中的某个目录,然后将 hbase.cluster.distributed 设置为 false。例如:

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://namenode.example.org:8020/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>false</value>
  </property>
</configuration>

5.2. 分布式

分布式模式可以细分为 _ 分布式 伪分布式 (所有守护进程都在单个节点上运行)、 完全分布式 _(守护进程分布在集群中的所有节点上)。其中,伪分布式模式与完全分布式的命名来自于 Hadoop。

伪分布式模式可以针对本地文件系统运行,也可以针对 Hadoop 分布式文件系统(HDFS) 的实例运行。完全分布式模式只能在 HDFS 上运行。有关如何设置 HDFS,请参阅 http://www.alexjf.net/blog/distributed-systems/hadoop-yarn-installation-definitive-guide.

5.2.1. 伪分布式

伪分布式快速开始

快速开始 章节包含相关信息.

伪分布式模式的 HBase 就是在单个主机上运行的完全分布式模式。使用此 HBase 配置仅进行测试和原型设计。请勿将此配置用于生产或性能评估。

5.3. 完全分布式

默认情况下,HBase 以独立模式运行,独立模式和伪分布模式用于小规模测试。对于生产环境,建议使用分布式模式。在分布式模式下,HBase 守护进程的多个实例在集群中的多个服务器上运行。

就像在伪分布式模式中一样,完全分布式的配置要求您将hbase.cluster.distributed 属性设置为 true。通常情况下,hbase.rootdir被配置为指向高可用性的 HDFS。

此外,集群还配置了以多个群集节点成为 RegionServer、ZooKeeper QuorumPeers 和备份 HMaster 服务器。详见: quickstart-fully-distributed.

分布式 RegionServers

通常,你的群集将包含多个运行在不同服务器上的 RegionServer,以及主要和备份 Master 和 ZooKeeper 守护程序。主服务器上的 c_conf/regionservers_ 中包含一个主机列表,其 RegionServers 与该集群相关。每个主机都在一个单独的行上。当主服务器启动或停止时,此文件中列出的所有主机将启动和停止其 RegionServer 进程。

ZooKeeper and HBase

有关 HBase 的 ZooKeeper 设置说明,请参见 ZooKeeper部分。

示例 3. 分布式 HBase 集群示例

是一个分布式 HBase 集群的简单的 conf/hbase-site.xml 。用于实际工作的群集将包含更多自定义配置参数。大多数 HBase 配置指令都具有默认值,除非在 conf/hbase-site.xml 中覆盖该值,否则将使用这些默认值。有关更多信息,请参阅“配置文件”

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://namenode.example.org:8020/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>node-a.example.com,node-b.example.com,node-c.example.com</value>
  </property>
</configuration>

这是 conf/regionservers 文件的示例,其中包含应在集群中运行 RegionServer 的节点的列表。这些节点需要安装 HBase,他们需要使用与主服务器相同的 conf/ 目录内容:

node-a.example.com
node-b.example.com
node-c.example.com

这是 conf/backup-masters 文件的示例,其中包含应运行备份主实例的每个节点的列表。除非主主站变为不可用,否则备份主站实例将处于空闲状态。

node-b.example.com
node-c.example.com

分布式 HBase 快速入门

请参阅quickstart-fully-distributed,了解包含多个 ZooKeeper、备份 HMaster 和 RegionServer 实例的简单三节点群集配置。

过程: HDFS 客户端配置

  1. 值得注意的是,如果您在 Hadoop 集群上进行了 HDFS 客户端配置更改(例如,HDFS 客户端的配置指令),而不是服务器端配置,则必须使用以下方法之一来启用 HBase 以查看和使用这些配置更改:

    1. hbase-env.sh 中添加一个指向你HADOOP_CONF_DIRHBASE_CLASSPATH环境变量

    2. ${HBASE_HOME}/conf 下添加一个 hdfs-site.xml(或 hadoop-site.xml)或更好的符号链接

    3. 只有一小部分 HDFS 客户端配置,请将它们添加到 hbase-site.xml

这种 HDFS 客户端配置的一个例子是dfs.replication。例如,如果希望以 5 的复制因子运行,则 HBase 将创建缺省值为 3 的文件,除非您执行上述操作以使配置可用于 HBase。