基于CDH的solr+Key-Value Store Indexer+hbase二级索引框架构建(一)

转载请注明出处!!! 

 

背景

公司用户画像构建,数据规模2千万+,维度120+,需要针对所有维度提供便利的查询索引,从数据性质上来看,并没有分词的必要,所以本次并没有配置ik中文分词器

环境准备(cdh)

hbase集群
Key-Value Store Indexer集群
solr集群
zk集群

一:配置solr,创建collection 


1、将安装目录下的配置文件copy到数据目录下(相当于根据demo创建一个栗子),并配置conf/schemer.xml文件

solrctl instancedir  --generate /home/user_00/solr_test/user_info

1.1进入目录,配置conf下的schema.xml,添加想要索引的列,这里的列名要与下文中的Morphlines.conf中的数据列,名称一致。配置文件不贴了,注意,_root_,_version_等预留列不要删除,此外<uniqueKey>id</uniqueKey>,这个与配置文件中的id统一,默认取hbase的主键ROW列。建议直接添加自己的列即可,其他的配置可以不动

2、将配置文件上传到zk中,以便于其他机器获取分发

solrctl instancedir --create user_info /home/user_00/solr_test/user_info

2.1 更新配置(配置更新时用)

solrctl instancedir --update  user_info /home/user_00/solr_test/user_info

3、创建collection(集群有三台机器,所以share 3 这里指定副本1,默认也是1,注意副本数*分片数不要大于机器数)

solrctl collection --create user_info -s 3 -r 1

3.1 重加载数据集(配置更新时用)

solrctl collection --reload user_info 

3.2 删除数据集(配置更新时用)

solrctl collection --delete user_info

4、查询创建的solr core

solrctl collection --list 


二:配置hbase,开启复制功能


1、开启复制(安装完Key-Value Store Indexer后默认开启)

2、创建支持复制hbase表

//这个地方的建表只有一个region,列簇名也稍显臃肿,严重影响手动构建索引的速度,此表测试用忍了,正确建表方式为预分区,见后续hbase bulkload的建表.
create 'data_db_t_data_user_info_new', {NAME => 'user_info_new', REPLICATION_SCOPE => 1}


三:配置Key-Value Store Indexer

 

打开cdh中Key-Value Store Indexer组件配置,Morphlines文件添加配置如下:(此文件格式缩进等比较严格)

SOLR_LOCATOR : {
  # Name of solr collection
  collection : user_info
  
  # ZooKeeper ensemble
  zkHost : "$ZK_HOST" 
}


morphlines : [
{
id : user_info
importCommands : ["org.kitesdk.**", "com.ngdata.**"]

commands : [                    
  {
    extractHBaseCells {
      mappings : [
        {
          inputColumn : "user_info_new:FuiUid"
          outputField : "FuiUid" 
          type : string 
          source : value
        }
      ]
    }
  }


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

四:将三者进行关联 hbase - kv - solr


1、在/home/user_00/solr_test/user_info下创建morphline-hbase-mapper.xml文件,主要作用是告诉kv去索引哪张表,其中最后一行value与上文配置Key-Value Store Indexer 部分的id相对应。
内容如下(含义不多说): 注意<param name="morphlineId" value="user_info"></param> value值与Morphlines配置中的ID一致

<?xml version="1.0" encoding="UTF-8"?>
<indexer table="data_db_t_data_user_info_new" mapper="com.ngdata.hbaseindexer.morphline.MorphlineResultToSolrMapper">
<param name="morphlineFile" value="morphlines.conf"></param>
<param name="morphlineId" value="user_info"></param>
</indexer>

2、创建索引,将hbase与solr、zk关联起来

hbase-indexer add-indexer \
--name user_info \
--indexer-conf /home/user_00/solr_test/user_info/morphline-hbase-mapper.xml \
--connection-param solr.zk=hadoop08:2181,hadoop09:2181,hadoop10:2181/solr \
--connection-param solr.collection=user_info \
--zookeeper hadoop08:2181,hadoop09:2181,hadoop10:2181


五、如果表有历史数据,则需要手动添加索引

手动索引时,需要在/home/user_00/solr_test/user_info 目录下添加一份morphlines.conf文件,配置内容与集群配置一样即可

hadoop --config  /etc/hadoop/conf  jar /opt/cloudera/parcels/CDH-5.12.0-1.cdh5.12.0.p0.29/lib/hbase-solr/tools/hbase-indexer-mr-1.5-cdh5.12.0-job.jar --conf /etc/hbase/conf/hbase-site.xml -D 'mapred.child.java.opts=-Xmx 1000m' --hbase-indexer-file /home/user_00/solr_test/user_info/morphline-hbase-mapper.xml --zk-host hadoop08:2181,hadoop09:2181,hadoop10:2181/solr --collection user_info --reducers 0

参考:

http://www.cloudera.com/documentation/enterprise/latest/topics/search_hbase_batch_indexer.html

https://blog.csdn.net/u011462328/article/details/53008434

https://blog.csdn.net/sxhong/article/details/79245435

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值