存储数据至HBase

准备

使用HBase存储数据需正确安装HBase,操作详情如下:

  1. 安装HBase。请在创建集群时安装HBase,具体操作请参考创建集群。HBase安装成功后,HBase的Master部署在BMR的Master节点,Region Server部署在BMR的Core节点。
  2. 登录HBase Master节点。即连接到BMR集群的Master节点,具体操作请参考SSH连接到集群
  3. 登录HBase Master节点后,通过SSH登录BMR的Core节点:Core节点的内网地址作为SSH连接的IP地址,端口号请至站内信获取。

读写数据

可通过以下步骤完成读写数据操作:

  1. 连接HBase。登录HBase Master节点,执行命令:hbase shell。
  2. 建表。

    示例:若建立一个名为’test’的表,这个表包含一个名为’family’的列族,请执行命令:hbase(main):001:0> create 'test', 'family'。

  3. 列出所有表。执行命令:hbase(main):001:0> list。

  4. 写入数据。

    示例:若设置行’row1’、列’ family:col1’对应的数据为’val1’,请执行命令:hbase(main):001:0> put 'test', 'row1', 'family:col1', 'val1'

  5. 读取数据。

    示例:

    • 若读取行’row1’的全部数据,请执行命令:hbase(main):001:0> get 'test', 'row1'
    • 若读取行’row1’、列’family:col1’对应的数据,请执行命令:hbase(main):001:0> get 'test', 'row1', 'family:col1'

配置HBase

  1. 登录HBase的Master节点。
  2. 在Master节点的/etc/hbase/conf目录下,找到配置文件hbase-sit.xml和配置JVM和GC参数的hbase-env.sh脚本,修改相应的参数并保存配置文件。
  3. 修改完配置文件后,请重启HBase Master节点和Region Server使配置生效。
    • Master的重启命令如下:su hbase -c '/opt/bmr/hbase/bin/hbase-daemon.sh --config /etc/hbase/conf restart master'
    • Region Server的重启命令如下:su hbase -c '/opt/bmr/hbase/bin/hbase-daemon.sh --config /etc/hbase/conf restart regionserver'

使用Hive访问HBase

应用场景

在BMR中,用户可以结合HBase使用Hive。使用Hive访问HBase时,Hive和HBase可以在同一集群上,也可以分别存在于不同集群上。通常建议用户将HBase和Hive运行于不同集群中,因为这样可以让HBase更充分的利用集群资源。

将Hive连接到HBase后,可以通过在Hive中创建外部表对HBase中存储的数据进行访问。

说明:
用户只能将Hive集群连接到单个的HBase集群。

操作步骤

  1. Hive连接到HBase。

    1. 通过控制台创建BMR集群,并添加Hive应用。请参考创建集群
    2. 通过SSH连接到主节点。请参考SSH连接到集群
    3. 复制HBase集群的/etc/hosts内容至Hive集群的/etc/hosts中。
    4. 执行命令hive启动Hive程序。
    5. 连接Hive集群上的HBase客户端与包含数据的HBase集群。执行命令set hbase.zookeeper.quorum=hbase_cluster_master_ip

      说明:

      • hbase_cluster_master_ip为Hbase服务所在集群的主节点内网IP,Hive和Hbase必须是同一用户的两个集群。
      • 若Hive和Hbase在同一集群中,此步骤可省略。
  2. Hive访问HBase数据。
    从Hive提示符中运行时,以下示例创建了一个外部表,此表引用了存储在名为hive_hbase的HBase表上的数据。然后,您可直接引用Hive语句中的pagecounts_hbase,查询和修改存储在HBase集群上的数据。

    CREATE EXTERNAL TABLE IF NOT EXISTS pagecounts_hbase (rowkey STRING, pageviews STRING, bytes STRING)
    STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
        WITH SERDEPROPERTIES ('hbase.columns.mapping' = ':key,f:c1,f:c2')
         TBLPROPERTIES ('hbase.table.name' = 'hive_hbase');
    

    select count(*) from pagecounts_hbase;

查看HBase日志

请在HBase Master和Region server节点的/var/log/hbase目录下查看HBase日志。