全部产品
E-MapReduce

HBase 开发手册

更新时间:2017-07-10 16:41:12   分享:   

为了更好地使用 HBase,在创建集群过程中,推荐您使用如下配置:

  • 公网状态选择打开。

  • 可用区选择为访问 HBase 的应用服务器所在的可用区,请勿选择随机分配。

  • 硬件节点数请选择 4 个及以上,其包含了 Master 和 Slave 节点,E-MapReduce 会在这些节点上创建 namenode、datanode、journalnode、hmaster、regionserver 和 zookeeper 角色。

  • 服务器配置推荐选择 4 核 16G / 8 核 32G 这两款机型,过低的配置可能导致 HBase 集群无法稳定运行。

  • 数据盘类型建议选择 SSD 云盘,会有更好的成本性价比。对于访问少,存储量大的业务,可以选择普通云盘。

  • 数据容量请按实际需求配置。

  • HBase 集群支持扩容。

HBase 配置

创建 HBase 集群的时候,在创建页面可以利用软件配置功能,结合使用场景,对 HBase 的默认参数配置做一些优化修改,如下所示:

  1. {
  2. "configurations": [
  3. {
  4. "classification": "hbase-site",
  5. "properties": {
  6. "hbase.hregion.memstore.flush.size": "268435456",
  7. "hbase.regionserver.global.memstore.size": "0.5",
  8. "hbase.regionserver.global.memstore.lowerLimit": "0.6"
  9. }
  10. }
  11. ]
  12. }

HBase 集群一些默认的配置如下所示:

key value
zookeeper.session.timeout 180000
hbase.regionserver.global.memstore.size 0.35
hbase.regionserver.global.memstore.lowerLimit 0.3
hbase.hregion.memstore.flush.size 128MB

访问 HBase

注意:

  • 由于网络性能的考虑,通过 E-MapReduce 创建的 HBase 集群,我们只建议从同个可用区的 ECS 上发起访问。

  • 访问 HBase 集群的 ECS 必须和 HBase 集群处于同一个安全组内,否则无法访问,所以在 EMR 中创建 Hadoop/Spark/Hive 集群时,如果它们需要访问 HBase,则在创建集群的时候一定要选择和 HBase 集群相同的安全组。

通过 E-MapReduce 控制台创建完 HBase 集群以后,用户可以开始使用 HBase 存储服务。其操作步骤如下:

  1. 获取 Master IP 和集群 ZK 地址。通过 E-MapReduce 控制台集群详情页面,用户可以查看集群的 Master 节点 IP 和 ZK 访问地址(内网IP),如下图所示:

    对于开通了公网 IP 的 Master 节点,用户可以参考如何登录 master 节点,浏览 HMaster 的 WEB UI(localhost:16010)。

  2. SSH 连接到集群主节点,使用 HBase Shell。用户可以直接通过 SSH 连接到集群的 Master 节点,切换到 HDFS 用户,通过 HBase Shell 访问集群(关于 HBase Shell 的更多介绍,请参考Apache HBase 官网)。

    1. [root@emr-header-1 ~]# su hdfs
    2. [hadoop@emr-header-1 root]$ hbase shell
    3. HBase Shell; enter 'help<RETURN>' for list of supported commands.
    4. Type "exit<RETURN>" to leave the HBase Shell
    5. Version 1.1.1, r374488, Fri Aug 21 09:18:22 CST 2015
    6. hbase(main):001:0>
  3. 从其他 ECS 节点(同一个安全组内),使用 HBase Shell 访问集群。从 Apache HBase 的官网下载 HBase-1.x 版本的资源包(下载链接),解压后,修改 conf/hbase-site.xml,添加集群的 ZK 地址,如下所示:

    1. <configuration>
    2. <property>
    3. <name>hbase.zookeeper.quorum</name>
    4. <value>$ZK_IP1,$ZK_IP2,$ZK_IP3</value>
    5. </property>
    6. </configuration>

    然后就可以通过命令 bin/hbase shell 访问集群了。

    若 ECS 是通过 EMR 创建的,则只需修改 hbase-site.xml,无需下载 HBase-1.x 版本的资源包。

    3.2.0及以上版本配置位于: /etc/ecm/hbase-conf/hbase-site.xml

    3.2.0以下版本位于:/etc/emr/hbase-conf/hbase-site.xml

  4. 通过 API 访问 HBase 集群,引入 Maven 依赖。

    1. <groupId>org.apache.hbase</groupId>
    2. <artifactId>hbase-client</artifactId>
    3. <version>1.1.1</version>

    配置正确的 ZK 地址,连接集群。

    1. Configuration config = HBaseConfiguration.create();
    2. config.set(HConstants.ZOOKEEPER_QUORUM,"$ZK_IP1,$ZK_IP2,$ZK_IP3");
    3. Connection connection = ConnectionFactory.createConnection(config);
    4. try {
    5. Table table = connection.getTable(TableName.valueOf("myLittleHBaseTable"));
    6. try {
    7. //Do table operation
    8. }finally {
    9. if (table != null) table.close();
    10. }
    11. } finally {
    12. connection.close();
    13. }

更多开发介绍,请参考 Apache HBase 官网

示例

前提条件

访问 Hbase 集群的 ECS 必须和 HBase 集群处于同一个安全组内。

Spark 访问 Hbase

请参照 spark-hbase-connector

Hadoop 访问 Hbase

请参照 HBase MapReduce Examples

Hive 访问 Hbase

EMR 1.2.0 及以上主版本的集群中的 Hive 才能访问 Hbase 集群。其步骤如下:

  1. 登录 Hive 集群,修改 hosts,增加如下一行:

    1. $zk_ip emr-cluster //$zk_i p为 Hbase 集群的 zk 节点 IP
  2. 具体 Hive 操作请参照 Hive HBase Integration

本文导读目录
本文导读目录
以上内容是否对您有帮助?