zoukankan      html  css  js  c++  java
  • 085 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中的数据相同。

  • 相关阅读:
    第5次作业
    第六次作业
    第五次作业
    软件需求最佳实践阅读笔记05
    软件需求最佳实践阅读笔记04
    构建民航知识图谱
    软件需求最佳实践阅读笔记03
    软件需求最佳实践阅读笔记02
    软件需求最佳实践阅读笔记01
    程序员的自我修养阅读笔记03
  • 原文地址:https://www.cnblogs.com/juncaoit/p/6180621.html
Copyright © 2011-2022 走看看