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文件,添加:

时间: 2024-11-05 23:59:42

CDH Solr Hbase二级索引的相关文章

【转】华为HBase索引模块应用:HBase二级索引模块:hindex调研 2014年10月16日

文章出处:http://www.batchfile.cn/?p=63 HBase二级索引模块:hindex调研 hindx是HBase的二级索引方案,为HBase提供声明式的索引,使用协处理器对索引表进行自动创建和维护,客户端不需要对数据进行双写.并且hindex采用了一些巧妙的Rowkey编排方式,使索引数据和实际数据分布在同一个Region,实现了较高的查询性能.介绍如下:huawei-hbase-secondary-secondary-index-implementations 代码下载地

HBase二级索引方案总结

转自:http://blog.sina.com.cn/s/blog_4a1f59bf01018apd.html 附hbase如何创建二级索引以及创建二级索引实例:http://www.aboutyun.com/thread-8857-1-1.html 华为二级索引(原理):http://my.oschina.net/u/923508/blog/413129 在HBase中,表格的Rowkey按照字典排序,Region按照RowKey设置split point进行shard,通过这种方式实现的全局

HBase二级索引的设计

摘要 最近做的一个项目涉及到了多条件的组合查询,数据存储用的是HBase,恰恰HBase对于这种场景的查询特别不给力,一般HBase的查询都是通过RowKey(要把多条件组合查询的字段都拼接在RowKey中显然不太可能),或者全表扫描再结合过滤器筛选出目标数据(太低效),所以通过设计HBase的二级索引来解决这个问题 查询需求 多个查询条件构成多维度的组合查询,需要根据不同组合查询出符合查询条件的数据 HBase的局限性 HBase本身只提供基于行键和全表扫描的查询,而行键索引单一,对于多维度的

hbase二级索引

二级索引与索引Join是多数业务系统要求存储引擎提供的基本特性,RDBMS早已支持,NOSQL阵营也在摸索着符合自身特点的最佳解决方案.这篇文章会以HBase做为对象来讨论如何基于Hbase构建二级索引与实现索引join.文末同时会列出目前已知的包括0.19.3版secondary index, ITHbase, Facebook方案和官方Coprocessor的介绍. 理论目标在HBase中实现二级索引与索引Join需要考虑三个目标:1,高性能的范围检索.2,数据的低冗余(存储所占的数据量).

奇虎360 HBASE 二级索引的设计与实践

基于RowKey 的索引问题总结 1.索引单一 2.多维度(字段/列)查询困难 多字段分别作为RK,写入多次 组合字段作为RK,设计复杂,不灵活 3.不经过索引的并行scan过滤,大量资源消耗,无时效性可言 总体设计 二级索引构建模式 1)以主数据的列值作为索引数据的RowKey,以主数据的RowKey 作为索引数据的列值,以此来构建指定列作为查询条件的Hbase 二级索引. 2)索引的构建与数据的查询都是分布式.并发式进行的 索引设计 1)索引与主数据存放在同一张表的不同Column Fami

HBase二级索引与Join

转自:http://www.oschina.net/question/12_32573 二级索引与索引Join是Online业务系统要求存储引擎提供的基本特性.RDBMS支持得比较好,NOSQL阵营也在摸索着符合自身特点的最佳解决方案.这篇文章会以HBase做为对象来探讨如何基于Hbase构建二级索引与实现索引join.文末同时会列出目前已知的包括0.19.3版secondary index, ITHbase, Facebook和官方Coprocessor方案的介绍. 理论目标在HBase中实现

【转】华为Hbase二级索引(Secondary Index)细节分析

华为在HBTC 2012上由其高级技术经理Anoop Sam John透露了其二级索引方案,这在业界引起极大的反响,甚至有人认为,如果华为早点公布这个方案,hbase的某些问题早就解决了.其核心思想是保证索引表和主表在同一个region server上. 更新:目前该方案华为已经开源,详见:https://github.com/Huawei-Hadoop/hindex 下面来对其方案做一个分析. 1.整体架构 这个架构在Client Ext中设定索引细节,在Balancer中收集信息,在Copr

(转)HBase二级索引与Join

二级索引与索引Join是Online业务系统要求存储引擎提供的基本特性.RDBMS支持得比较好,NOSQL阵营也在摸索着符合自身特点的最佳解决方案.这篇文章会以HBase做为对象来探讨如何基于Hbase构建二级索引与实现索引join.文末同时会列出目前已知的包括0.19.3版secondary index,?ITHbase, Facebook和官方Coprocessor方案的介绍. 理论目标在HBase中实现二级索引与索引Join需要考虑三个目标:1,高性能的范围检索.2,数据的低冗余(存储所占

hbase二级索引构建

参考学习hbase源代码中的二级索引构建代码 IndexBuilder.java /** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ow