Hbase+Solr操作手册

Hbase+Solr操作手册

1、对于初次建立得表,可以使用

create 'table',{NAME =>'f1', REPLICATION_SCOPE =>1}

注:其中1表示开启replication功能,0表示不开启,默认为0

对于已经存在得表,可以

disable 'hcc_score'

alter 'hcc_score',{NAME =>'f1', REPLICATION_SCOPE =>1}

enable 'hcc_score'

2、生成实体配置文件:

solrctl instancedir --generate $HOME/hbase-indexer/hcc_score

3、配置conf/schema.xml

动态域,就是这个域的名称,是由表达式组成的,只要名称满足了这个 表达式,就可以用这个域name:域的名称,该域的名称是通过一个表达式来指定的,只要符合这这个规则,就可以使用这个域。比如  aa_i,bb_i,13_i等等,只要满足这个表达式皆可

name:域名

type:域的类型,必须匹配类型,不然会报错

indexed:是否要作索引

stored:是否要存储实际数据

required:是否必填,一般只有id即rowkey才会设置

multiValued:是否有多个值,如果设置为多值,里面的值就采用数组的方式来存储,比如商品图片地址(大图,中图,小图等)

目前用到的特殊类型如下:

1、支持前缀过滤的类型type=“text_prefix_rev”:例如存储名字、手机号之类的字段,需要支持“*6553”、“*大军”这种前缀过滤的查询。

2、支持时间的类型type=”tdate”:存储时间类型,支持时间段过滤和排序

3、支持分词查询的类型type=”text_ch”:存储支持分词查询的字段,例如地址。

如下为最基础的配置,生产环境用的配置在apiserver01节点,/home/dsj_solr/hbase-indexer目录中。

        

        

           

        id

        

        

        

     

      

        

        

      

      

        

        

      

    

4、再修改solrconfig.xml文件,根据实际应用情况更改软硬提交。

软提交关于实时可见性;硬提交关于持久化。

     

       ${solr.autoCommit.maxTime:60000}

       false

     

     

       ${solr.autoSoftCommit.maxTime:15000}

     

5、创建 collection实例并将配置文件上传到 zookeeper:

solrctl --zk zkip01,zkip02,zkip03:2181/solr  instancedir --create hcc_score $HOME/hbase-indexer/hcc_score

6、上传到 zookeeper 之后,其他节点就可以从zookeeper下载配置文件。接下来创建 collection;如果希望将数据分散到各个节点进行存储和检索,则需要创建多个shard,需要使用如下命令:

solrctl --zk zkip01,zkip02,zkip03:2181/solr collection --create hcc_score -s 11 -r 3 -m 10

注:其中-s表示设置Shard数为11,-r表示设置的replica数为3,-m表示单个节点最大shards数目10。Shard数最好与节点数量成倍数,replica为副本数量与并发量成正比,单节点最大shard数目与节点数的乘积要大于shard与replica的乘积。例如我们的集群:10*11=110;11*3=33;110>33;符合规定,而且有扩展性。

7、创建一个morphline-hbase-mapper.xml文件,该文件是Lily kv store与hbase表的映射关系,用来自动维护索引数据,当hbase表有更新时,lily会通过分析WAL日志将更新维护到solr的collection中。

    

    

    

    

    

8、维护CM界面中kv store设置中的morphlines.conf,该文件为solr中的索引字段与hbase的字段的映射关系。

SOLR_LOCATOR : {

  # ZooKeeper ensemble

  zkHost : "$ZK_HOST"

}

morphlines : [

{

id : test_workorder

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

commands :[

{

extractHBaseCells {

mappings :[

{

inputColumn :"f1:hsicrm_mobilenumber"

outputField :"hsicrm_mobilenumber"

type :string

source : value

},

{

inputColumn : "f1:hsicrm_serialnumber"

outputField : "hsicrm_serialnumber"

type : string

source : value

},

{

inputColumn : "f1:hsicrm_consumerno"

outputField : "hsicrm_consumerno"

type : string

source : value

},

{

inputColumn : "f1:hsicrm_workorderid"

outputField : "hsicrm_workorderid"

type : string

source : value

}

]

}

}

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

]

}

]

9、注册到 Lily HBase Indexer Service,即注册索引器,上传 Lily HBase Indexer 配置 XML文件至 ZooKeeper,由给定的 SolrCloud 集合完成此操作。

hbase-indexer add-indexer \

--name hcc_score \

--indexer-conf $HOME/hbase-indexer/hcc_score/morphline-hbase-mapper.xml \

--connection-param solr.zk= zkip01,zkip02,zkip03:2181/solr \

--connection-param solr.collection=hcc_score \

--zookeeper zkip01:2181,zkip02:2181,zkip03:2181

10、查看索引器是否创建成功:

hbase-indexer list-indexers --zookeeper zkip01:2181

11、同步过去的数据建立索引,若增加了索引字段,需要先reload collection再做同步

solrctl --zk zkip01,zkip02,zkip03:2181/solr collection --reload hcc_score

将Lily kv store的morphlines.conf配置文件复制到索引配置目录下。

执行下面的命令

hadoop --config /etc/hadoop/conf \

jar /opt/cloudera/parcels/CDH/lib/hbase-solr/tools/hbase-indexer-mr-job.jar \

--conf /etc/hbase/conf/hbase-site.xml \

--hbase-indexer-file $HOME/hbase-indexer/hcc_score/morphline-hbase-mapper.xml \

--morphline-file morphlines.conf \

--zk-host zkip01:2181/solr \

--collection hcc_score \

--reducers 0 \

--go-live

验证实时可见性,在hbase中新增、更新、删除数据,在solr中15秒内可见,因为softCommit配置的为15000ms。

12、增加

put 'hcc_score_cf_name','0012','cf:name','bob'

13、更新

put 'hcc_score_cf_name','0012','cf:name','jack'

14、删除

deleteall 'hcc_score_cf_name','0012'

15、扩展命令

#solrctl

1、列出配置目录列表

solrctl --zk zkip01,zkip02,zkip03:2181/solr instancedir –list

2、列出collection列表

solrctl --zk zkip01,zkip02,zkip03:2181/solr collection –list

3、更新coolection配置

solrctl --zk zkip01,zkip02,zkip03:2181/solr instancedir --update newDir $HOME/hbase-indexer/newDir

solrctl --zk zkip01,zkip02,zkip03:2181/solr collection --reload name

4、删除instancedir

solrctl --zk zkip01,zkip02,zkip03:2181/solr instancedir --delete name

5、删除collection

solrctl --zk zkip01,zkip02,zkip03:2181/solr collection --delete name

6、删除collection所有doc

solrctl --zk zkip01,zkip02,zkip03:2181/solr collection --deletedocs name

7、删除User配置目录

rm -rfv $HOME/hbase-indexer/User

8、若修改了morphline-hbase-mapper.xml,则需要更新索引器

hbase-indexer update-indexer -n hcc_score --zookeeper zkip01:2181

9、删除索引

hbase-indexer delete-indexer -n hcc_score --zookeeper zkip01:2181

10、打印同步历史索引数据时的详细日志

创建log4j.properties,内容如下

# cat log4j.properties

log4j.rootLogger=${root.logger}

root.logger=INFO,console

log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.target=System.err

log4j.appender.console.layout=org.apache.log4j.PatternLayout

log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n log4j.logger.org.kitesdk.morphline=TRACE

log4j.logger.com.ngdata=TRACE

然后在命令行追加入 --log4j 指定到所在log4j.properties,然后再跑MR Job, 并把控制台输出备份到文件,命令如下:

hadoop --config /etc/hadoop/conf \

jar /opt/cloudera/parcels/CDH/lib/hbase-solr/tools/hbase-indexer-mr-job.jar \

--conf /etc/hbase/conf/hbase-site.xml \

--hbase-indexer-file $HOME/hbase-indexer/hcc_score/morphline-hbase-mapper.xml \

--morphline-file morphlines.conf \

--zk-host zkip01:2181/solr \

--collection hcc_score \

--reducers 0 \

--go-live \

--log4j log4j.properties 2>&1 | tee -a console.log

11、收集application log

yarn logs -applicationId application_id -appOwner user_name > application_id

 

你可能感兴趣的:(大数据)