存储数据至HBase
准备
使用HBase存储数据需正确安装HBase,操作详情如下:
- 安装HBase。请在创建集群时安装HBase,具体操作请参考创建集群。HBase安装成功后,HBase的Master部署在BMR的Master节点,Region Server部署在BMR的Core节点。
- 登录HBase Master节点。即连接到BMR集群的Master节点,具体操作请参考SSH连接到集群。
- 登录HBase Master节点后,通过SSH登录BMR的Core节点:Core节点的内网地址作为SSH连接的IP地址,端口号请至站内信获取。
读写数据
可通过以下步骤完成读写数据操作:
- 连接HBase。登录HBase Master节点,执行命令:hbase shell。
-
建表。
示例:若建立一个名为’test’的表,这个表包含一个名为’family’的列族,请执行命令:hbase(main):001:0> create 'test', 'family'。
- 列出所有表。执行命令:hbase(main):001:0> list。
-
写入数据。
示例:若设置行’row1’、列’ family:col1’对应的数据为’val1’,请执行命令:hbase(main):001:0> put 'test', 'row1', 'family:col1', 'val1'
-
读取数据。
示例:
- 若读取行’row1’的全部数据,请执行命令:hbase(main):001:0> get 'test', 'row1'
- 若读取行’row1’、列’family:col1’对应的数据,请执行命令:hbase(main):001:0> get 'test', 'row1', 'family:col1'
配置HBase
- 登录HBase的Master节点。
- 在Master节点的/etc/hbase/conf目录下,找到配置文件hbase-sit.xml和配置JVM和GC参数的hbase-env.sh脚本,修改相应的参数并保存配置文件。
-
修改完配置文件后,请重启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集群。
操作步骤
-
Hive连接到HBase。
- 通过控制台创建BMR集群,并添加Hive应用。请参考创建集群。
- 通过SSH连接到主节点。请参考SSH连接到集群。
- 复制HBase集群的
/etc/hosts
内容至Hive集群的/etc/hosts
中。 - 执行命令
hive
启动Hive程序。 -
连接Hive集群上的HBase客户端与包含数据的HBase集群。执行命令
set hbase.zookeeper.quorum=hbase_cluster_master_ip
。说明:
hbase_cluster_master_ip
为Hbase服务所在集群的主节点内网IP,Hive和Hbase必须是同一用户的两个集群。- 若Hive和Hbase在同一集群中,此步骤可省略。
-
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日志。