HBase核心技术点
表的rowkey设计核心思想:
- 依据rowkey查询最快
- 对rowkey进行范围查询range
- 前缀匹配
预分区创建的三种方式
create 'ns1:t1', 'f1', SPLITS => ['10', '20', '30', '40']
create 't1', 'f1', SPLITS => ['10', '20', '30', '40']
create 't1', 'f1', SPLITS_FILE => '/home/hadoop/data/splits.txt', OWNER => 'johndoe'
# 在 splits.txt 文件中指定rowkey:
10,
20,
30,
40,
50
create 't1', {NAME => 'f1', VERSIONS => 5}, METADATA => { 'mykey' => 'myvalue' }
# 指定java预分区类名称
create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}
tail -f 在命令列控制窗口中使用 tail -f,它将会以一定的时间实时追踪.
基于SQL语法查询HBase
Phoenix实现用SQL查询HBase
http://www.cnblogs.com/hbase-community/category/1181796.html
hbase二级索引
-
使用solr构建hbase二级索引:
-
使用phoenix构建HBase二级索引
HBase 表数据压缩
- snappy
HBase数据读写流程
https://blog.csdn.net/u011490320/article/details/50814967
HBse中数据管理
hbase中数据删除不是真正的删除,只是做了一个删除标记;在compaction过程中才会真正的删除。 满足删除条件的数据:
1. 做了删除标记的
2. 超过版本号限制的
3. 数据生存时间到期的
两种compaction:
1. 合并(minor)
2. 压缩合并(major)
Hive和HBase集成
- 数据存储在HBase中
- hive 表的描述信息存储在hive中
-
对应元素
- hive-table hbase-table
- hive-column hbase-rowkey,hbase-cf-column
- storehandler
-
集成方式,如果hive/lib目录中没有相关jar,需要把相关jar软连接到该目录
https://blog.csdn.net/victory0508/article/details/69258686
管理表
创建hive表的时候,指定数据存储在hbase表中。
CREATE TABLE hbase_table_1(key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz");
外部表
现在已经存在一个HBase表,需要对表中数据进行分析。
CREATE EXTERNAL TABLE hbase_user(id int, name string,age int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:age")
TBLPROPERTIES ("hbase.table.name" = "user");
本质
Hive就是HBase客户端。
sqoop 把关系型数据库数据导入到hive
HBase与Hue集成
如果跨语言需要启动thrift server