HBase的二级索引,以及phoenix的安装(需再做一次)

Posted 曹军

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HBase的二级索引,以及phoenix的安装(需再做一次)相关的知识,希望对你有一定的参考价值。

一:问题由来

1.举例

  有A列与B列,分别是年龄与姓名。

  如果想通过年龄查询姓名。

  正常的检索是通过rowkey进行检索。

    根据年龄查询rowkey,然后根据rowkey进行查找姓名。

    这样的效率不高,因为要两次scan。

 

2.建议有一张索引表。

 

二:HBase的二级索引

1.讲解

  rowkey是uid+ts
    11111_20161126111111:

    这个rowkey方便查询某一uid的某一个时间段内的数据

  问题:
    查询某一时间段内所有用户的数据:按照时间

  索引表

   rowkey:ts+uid 20161126111111—111111

   其他列:info:uid

   值是uid+ts,因为这个是原表的rowkey。

  
检索流程:

    从索引表中根据时间段来查询源表rowkey
    根据rowkey来查询源表

 

2.还有的问题

  如何保持索引表与原表的同步问题。

  好的方式是:编写协处理器,将客户端实现的逻辑代码放到服务端。

  同时,可以使用其他的框架,主要有solr,phoenix。elassearch。

 

3.协处理器

  observer处理器:观察者,类似于触发器

  endpoint类:终端类,类似于储存过程。

 

4.hbase自带的协处理器

  这个在hbase:meta中

  可以通过desc \'hbase:meta\'进行查看

  是coprocessor$1。

 

三:phoenix的安装

1.上传源码包

  因为对应的hbase0.98.6没有对应的phoenix,所以需要自己进行编译。

  

 

2.解压到modules文件夹下

  tar -zxvf phoenix-4.2.2-src.tar.gz -C /etc/opt/modules/

 

3.修改pom.xml文件

  有一个问题,将所有的hadoop-two.version 变量都换成2.5.0

  <hbase.version>0.98.6-hadoop2</hbase.version>
  <hadoop-two.version>2.5.0</hadoop-two.version>

  

 

4.进入主目录

 

5.编译

  mvn clean package -DskipTests

  ----------------------------------------------------(以下需要重新编译,重新做)------------------------------------------------------------

 

6.查找编译好的包

  Phoenix_home/Phoenix-assembly/target/phoenix-4.2.2.tar.gz

 

7.安装phoenix

  启动的时候,后面跟的是zookeeper地址。

 

8.phoenix映射原有的表

  执行的语句,在phoenix中。

  hbase对于大小写敏感,然后需要将phoenix中的语句进行双引号引起来。

  

 

9.看效果

  可以在phoenix中查询映射的表。

  select * from "s1";

  将会发现,这里的数据与hbase中的数据相同。

 

以上是关于HBase的二级索引,以及phoenix的安装(需再做一次)的主要内容,如果未能解决你的问题,请参考以下文章

HBase+Phoenix二级索引

如何使用Phoenix在HBase中创建二级索引

如何使用Phoenix在HBase中创建二级索引

2021年大数据HBase:Apache Phoenix 二级索引

2021年大数据HBase:Apache Phoenix 二级索引

HBase实操 | 使用Phoenix在CDH的HBase创建二级索引