logo资料库

hbase+solr创建二级索引完整操作.docx

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
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 中。 table="hcc_score" 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
分享到:
收藏