CDH Solr Hbase二级索引

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CDH Solr Hbase二级索引相关的知识,希望对你有一定的参考价值。

基于key-Value store indexer ,solrcloud创建Hbase二级索引

 

首先安装solrcloud,在cloudera manager 上添加solr服务,然后添加key-Value store indexer服务。

首先设置HBASE表的列族REPLICATION_SCOP =>1 如:

disable ‘cloud’

alter ‘cloud‘ ,{NAME => ‘datainfo‘,REPLICATION_SCOPE =>‘1‘}

enable ‘cloud’

 

生成实体配置文件, /data/hbase-indexer/User是自定义路径,可以自己设置

      solrctl instancedir --generate /data/hbase-indexer/User

编辑scheme.xml文件

     vim  /data/hbase-indexer/User/conf/scheme.xml

 

把hbase表中需要索引的列添加到scheme.xml filed节点,其中的name属性值要与Morphline.conf文件中的outputField属性值对应,例如:

 

 

那么Morphline.conf文件中的outputField: fileContent

技术分享

上图中的fileContent,fileName为下面solr中索引列,这两个字段分别对应于Morphline.conf文件中的outputField属性值

 

创建collection实例并配置文件上传到zookeeper,命令:

solrctl instancedir --create User /data/hbase-indexer/User

 

上传到zookeeper之后,其他节点就可以从zookeeper下载配置文件。接下来创建collection,命令:

 

solrctl collection --create User

 

创建Lily HBase Indexer配置

在Hbase-solr的安装目录/usr/lib/hbase-solr/下,创建morphline-hbase-mapper.xml文件,命令:

vim /usr/lib/hbase-solr/hbase-indexer/morphline-hbase-mapper.xml

技术分享

 

注意,morphlineId 的value是对应Key-Value Store Indexer 中配置文件Morphlines.conf 中morphlines 属性id值

 

修改Morphline配置文件

 

具体操作:进入Key-Value Store Indexer面板->配置->查看和编辑->属性-Morphline文件,如下图:

技术分享

编辑该文件:如

技术分享

InputColumn : hbase表中的列名称

OutputFiled:solr索引列名称

 

注册Lily HBase Indexer configuration 和 Lily Hbase Indexer Service

命令:

hbase-indexer add-indexer \

 --name cloudIndexer \

 --indexer-conf /usr/lib/hbase-solr/hbase-indexer /morphline-hbase-mapper.xml

 --connection-param solr.zk=pengrui-wizdata-sv4:2181,pengrui-wizdata-sv3:2181,pengrui-wizdata-sv2:2181/solr \

 --connection-param solr.collection=User \

 --zookeeper pengrui-wizdata-sv4:2181,pengrui-wizdata-sv3:2181,pengrui-wizdata-sv2:2181

 

 

验证索引器是否成功创建

hbase-indexer list-indexers

 

如图:

技术分享

测试数据是否索引到solr

 

首先往hbase表被索引列添加数据,然后在cloudera manager主页面打开,solr服务的web UI页面,点击query。如下图:

技术分享

拓展命令

Scheme.xml新增索引字段

 

执行以下命令更新配置

solrctl instancedir --update User /data/hbase-indexer/User

solrctl collection --reload  User 

查看collection命令:solrctl collection –list

 

          添加多个索引器

当你需要创建多个索引时,可以按下面说明操作。

一个solr 索引对应一个collection,一个collection对一个morphline-hbase-mapper.xml和Morphlines.conf。当需要配置多个索引时,在Morphlines.conf的morphlines节点添加对应索引模块,以id区分,如下面代码模块:

 

morphlines : [

{

id : userMap

importCommands : ["org.kitesdk.**", "com.ngdata.**"]

 

commands : [                    

  {

    extractHBaseCells {

      mappings : [

        {

          inputColumn : "datainfo:fileContent"

          outputField : "fileContent" 

          type : string 

          source : value

        },

        {

          inputColumn : "datainfo:fileName"

          outputField : "fileName" 

          type : string 

          source : value

        }

      ]

    }

  }

 

 

  { logDebug { format : "output record: {}", args : ["@{}"] } }

]

}

 

{

id : scoreMap

importCommands : ["org.kitesdk.**", "com.ngdata.**"]

 

commands : [                    

  {

    extractHBaseCells {

      mappings : [

        {

          inputColumn : "course:math"

          outputField : "math" 

          type : int

          source : value

        },

        {

          inputColumn : "course:english"

          outputField : "english_" 

          type : int

          source : value

        }

      ]

    }

  }

 

 

  { logDebug { format : "output record: {}", args : ["@{}"] } }

]

}

 

]

 

 

添加IK分词器

在/usr/lib/solr/webapps/solr/WEB-INF目录下创建classes目录

IK Analyzer 2012FF_hf1.zip 解压这个文件

把IKAnalyzer2012FF_u1.jar添加到/usr/lib/solr/webapps/solr/WEB-INF/lib/目录

把IKAnalyzer.cfg.xml 和 stopword.dic添加到classes目录

重启solr服务

 

修改schema.xml文件,添加:

 技术分享

以上是关于CDH Solr Hbase二级索引的主要内容,如果未能解决你的问题,请参考以下文章

HBase协处理器同步二级索引到Solr

使用HBase Indexer建立二级索引(整合最新版本的HBase1.2.6及Solr 7.2.1)

使用HBase Indexer建立二级索引(整合最新版本的HBase1.2.6及Solr 7.2.1)

Hbase+Solr实现二级索引提供高效查询

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

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