Hbase二级索引+CDH+Lily

1.更改表结构,允许复制

已存在的表
disable 'tableName'
alter 'tableName',{NAME =>'fn', REPLICATION_SCOPE =>1}
enable 'tableName'
不存在的表
create ‘table‘,{NAME =>‘cf‘, REPLICATION_SCOPE =>1}
#其中1表示开启replication功能,0表示不开启,默认为0

2.创建相应的SolrCloud集合
接下来在安装有Solr的机器上运行
这里得路径和用户名都可以自己定义

# 生成实体配置文件:solrctl instancedir --generate /opt/hbase-indexer/index1# index1 意思代表用户

此时/opt/hbase-indexer/index1目录下会有个conf文件夹,我们修改下面得schema.xml文件.
在最下面新加一个字段

<field name="HBase_Indexer_Test_cf1_name" type="string" indexed="true" stored="true"/>
属性解析:
name:这里的name是自定义,但是后面要使用到,要和后面的Morphline.conf文件中的outputField属性对应。
type:字段类型
indexed:是否建立索引
stored:是否存储

注意:这里name字段它对应了我们后续需要修改Morphline.conf文件中的outputField属性。因此可以看成是hbase中需要创建索引的值。因此我们建议将其与表名和列族结合,格式建议如下:

HBase_Indexer_ZDTable_fn_name
Hbase_indexer_表名_列簇_列名

再修改solrconfig.xml,找到下面的配置将false改为true,这个是硬提交,会影响性能

    <autoCommit><maxTime>${solr.autoCommit.maxTime:60000}</maxTime><openSearcher>true</openSearcher></autoCommit>

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

solrctl instancedir --create index1 /opt/hbase-indexer/index1

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

solrctl collection --create index1如果希望将数据分散到各个节点进行存储和检索,则需要创建多个shard,需要使用如下命令solrctl collection --create bqjr -s 7-r 3-m 21其中-s表示设置Shard数为7,-r表示设置的replica数为3,-m表示最大shards数目(7*3)

5.创建 Lily HBase Indexer 配置

[root@test119 index1]# cat morphline-hbase-mapper.xml 
<?xml version="1.0"?>
<!-- table:需要索引的HBase表名称-->
<!-- mapper:用来实现和读取指定的Morphline配置文件类,固定为MorphlineResultToSolrMapper-->
<indexer table="zh_ams_ns:zhongda_custom_task_cp" mapper="com.ngdata.hbaseindexer.morphline.MorphlineResultToSolrMapper" read-row="never" >
<!--param中的name参数用来指定当前配置为morphlineFile文件 -->
<!--value用来指定morphlines.conf文件的路径,绝对或者相对路径用来指定本地路径,如果是使用Cloudera Manager来管理morphlines.conf就直接写入值morphlines.conf"--><param name="morphlineFile" value="morphlines.conf"/>
<!--value="ZDTableMap",这里test3Map是自定义,接下来要使用。其他的mapper,param name等属性默认即可--><param name="morphlineId" value="ZDTableMap"/>
</indexer>

6.配置Morphline
通过CM页面进入到Key-Value Store Indexer的配置页面,里面有一个Morphlines文件。修改它:

修改完后重启Key-Value Store服务

SOLR_LOCATOR : {# Name of solr collectioncollection : hbaseindexer# ZooKeeper ensemblezkHost : "$ZK_HOST" 
}morphlines : [
{
#与morphline-hbase-mapper中value相同
id : ZDTableMap
importCommands : ["org.kitesdk.**", "com.ngdata.**"]commands : [                    {extractHBaseCells {mappings : [{inputColumn : "fn:name"outputField : "HBase_Indexer_ZDTable_fn_name" type : string source : value}]}}{ logDebug { format : "output record: {}", args : ["@{}"] } }
]
}
]

注:

id:表示当前morphlines的名称,与上一步的value="test3Map"要一致
importCommands:需要引入的命令包地址
extractHBaseCells:该命令用来读取HBase列数据并写入到SolrInputDocument对象中,该命令必须包含零个或者多个mappings命令对象。
mappings:用来指定HBase列限定符的字段映射。
inputColumn:需要写入到solr中的HBase列字段。值包含列族和列限定符,并用‘ : ’分开。其中列限定符也可以使用通配符*来表示,譬如可以使用c1:*表示读取只要列族为data的所有hbase列数据,也可以通过c1:na*来表示读取列族为c1列限定符已na开头的字段值.
outputField:用来表示morphline读取的记录需要输出的数据字段名称,该名称必须和solr中的schema.xml文件的field节点自定义的name名称保持一致,否则写入不正确
type:用来定义读取HBase数据的数据类型,HBase中的数据都是以byte[]的形式保存,但是所有的内容在Solr中索引为text形式,所以需要一个方法来把byte[]类型转换为实际的数据类型。type参数的值就是用来做这件事情的。现在支持的数据类型有:byte,int,long,string,boolean,float,double,short和bigdecimal。当然你也可以指定自定的数据类型,只需要实现com.ngdata.hbaseindexer.parse.ByteArrayValueMapper接口即可
source:用来指定HBase的KeyValue那一部分作为索引输入数据,可选的有‘value’和'qualifier',当为value的时候表示使用HBase的列值作为索引输入,当为qualifier的时候表示使用HBase的列限定符作为索引输入

7.注册 Lily HBase Indexer Configuration 和 Lily HBase Indexer Service

hbase-indexer add-indexer \
--name ZDindexer \
--indexer-conf /opt/hbase-indexer/index1/morphline-hbase-mapper.xml --connection-param solr.zk=test110:2181,test115:2181,test119:2181/solr \
--connection-param solr.collection=index1 \
--zookeeper test110:2181,test115:2181,test119:2181

运行hbase-indexer list-indexers查看添加成功,
此时新增数据已经可以通过solr查询
8.批量同步索引
在运行命令的目录下必须有morphlines.conf文件,执行

find / |grep morphlines.conf$

一般我们选择最新的那个process
cd 进入目录

hadoop --config /etc/hadoop/conf \
jar /opt/cloudera/parcels/CDH/lib/hbase-solr/tools/hbase-indexer-mr-1.5-cdh5.14.0-job.jar  \
--conf /etc/hbase/conf/hbase-site.xml \
--hbase-indexer-file /opt/hbase-indexer/index1/morphline-hbase-mapper.xml \
--zk-host test110:2181,test115:2181,test119:2181/solr \
--collection index1 \
--reducers 0 \
--go-live

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html之文档的头部和元数据定义(下,未写完)

设置网页定时跳转 当http-quip属性的值为Content-Language时&#xff0c;就可以设置网页所使用的语言&#xff1a;<mata http-equiv"Refresh" content"n; urlhttp://yourlinlk">定时浏览器将在n秒后跳转到链接&#xff0c;如果没有定义url&#xff0…

win10(UEFI)和Ubuntu双系统安装,无法进入ubuntu。

因为win10采用UEFI引导&#xff0c;所以在安装Ubuntu系统的时候着重注意 其中一个分区为efi作为引导分区 要将安装的启动引导器(grub2)设备选择在efi分区上 如下图&#xff1a;

TF-IDF + K-Means 中文聚类例子 - scala

Demo仅供参考 使用spark1.6import java.io.{BufferedReader, InputStreamReader} import java.util.Arraysimport org.ansj.splitWord.analysis.ToAnalysis import org.apache.hadoop.fs.FSDataInputStream import org.apache.spark.{SparkConf, SparkContext} import org.apa…

双目标定与矫正 matlab

matlab版本有2015a 或更新的本 1.预先拍摄好多幅标定板图像 像这样&#xff1a; 分别将左右图像放在left和right文件夹中。 2.相机标定 选择APPS,下拉菜单选择"stereo camera calibration" 进入一下界面&#xff0c;点击“add image”,分别设置camera1 &#xff0…

平衡二叉树模板

#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; struct node {int ndata; //记录关键字数值node *l,*r;int nheight; //平衡因子 }; int height(node* p) //返回…

Hbase PageFilter 取出数量不准确问题

PageFilter pf new PageFilter(pageFilterSize); filterList.addFilter(pf); PageFilter&#xff1a;设置获取的数据行数PageFilter作用在region上&#xff0c;只能保证当前region返回相应的数量&#xff0c;也就是说大概可理解为 region数量*pageFilterSize

CV_LOAD_IMAGE_COLOR 和 CV_BGR2RGBA找不到定义

添加下面头文件 #include "opencv2/imgcodecs/legacy/constants_c.h" #include "opencv2/imgproc/types_c.h"

堆排序原理及算法实现(最大堆)

堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。 1.堆 堆实际上是一棵完全二叉树&#xff0c;其任何一非叶节点满足性质&#xff1a; Key[i]<key[2i1]&&Key[i]<key[2i2]或者Key[i]>Key[2i1]&&key>key[2i2] 即任何一非叶节点的…

Storm 安装

下载地址&#xff1a;http://storm.apache.org/ 下载完成后解压到相应目录 修改 conf目录下的storm.yaml文件,集群的所有服务器统一配置 #zookeeper地址&#xff0c;默认端口2181 storm.zookeeper.servers:- "test1"- "test2"- "test3"#nimbus…

Failed to connect to 127.0.0.1 port 1080: Connection refused package:git

windows平台&#xff1a; 解决方法&#xff1a; 打开c:/user/***/..gitconfig 删除一下内容&#xff1a; [http "https://github.com"] proxy 127.0.0.1:50647 [https "https://github.com"] proxy 127.0.0.1:50647 proxy 127.0.0.1:506…

Hbase Region in transition (RIT) 异常解决

查看Hbase状态&#xff0c;突然发现出现了RIT&#xff0c;并且很长时间了~ 查看了一些相关RIT介绍 &#xff08;部分介绍和Hbase2.0不同&#xff0c;如&#xff1a;RIT状态信息2.0已不在zookeeper保存&#xff09; https://mp.weixin.qq.com/s?__bizMzU5OTQ1MDEzMA&mid224…

邻接表的构建、DFS、BFS搜索

接着上次的文章“图的构建&#xff08;邻接链表法&#xff09;”&#xff0c;邻接链表法构建图相对来说比较简单&#xff0c;并且遍历起来也相对简单&#xff0c;但是要是动态添加图的节点和图的边&#xff0c;则是实在不方便&#xff0c;不过现在不管那么多&#xff0c;今天的…

Storm性能简单测试

看了很多关于Storm性能的文章&#xff0c;说法不一&#xff0c;自己根据实际业务测一下是否能满足自身要求&#xff08;只做了简单集群和代码调优&#xff09; 场景&#xff1a;kafka消费数据标准化后存储到Hbase中 服务器资源&#xff1a;两台32G内存做Supervisor 使用资源平…

C++之带有默认参数值的构造函数

在一个类中 &#xff0c;如果程序员没有写&#xff0c;任何一个构造函数&#xff0c;则编译器将为该类提供一个默认的构造函数&#xff0c;如果程序员对类的构造函数进行了重载&#xff0c;则编译器将不提供默构造函数&#xff0c;这里需要手动书写一个无参的构造函数&#xff…

Hbase Shell 介绍

目录 Scan 创建表 Count 清空表数据 删除数据 删除表 删除列簇 判断表是否为‘enable’ 插入 Region管理 Scan 查询某个表某个列的数据&#xff1a; scan tableName,{COLUMN>列族&#xff1a;列,LIMIT>需要查看条数} 指定开始Rowkey查询 scan tableName,{STARTRO…

拓扑排序 详解 + 并查集 详解 + 最小生成树详解

若您发现本文有什么错误&#xff0c;请联系我&#xff0c;我会及时改正的&#xff0c;谢谢您的合作&#xff01; 本文为原创文章&#xff0c;转载请注明出处 本文链接 &#xff1a; http://www.cnblogs.com/Yan-C/p/3943940.html 。 哎呀&#xff0c;好久了啊&#xff0c;想…

Hbase 2.0 RegionObserver使用

参考&#xff1a;http://hbase.apache.org/2.0/book.html#cp Hbase2.0 不支持 1.x版本的RegionObserver &#xff0c;查看hbase官网更新说明&#xff0c;自己做了测试并通过 Hbase RegionObserver import java.io.IOException; import java.util.List; import java.util.Opti…

ubuntu 16.0安装ros-kinetic

1.设置sources.list sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list best: sudo sh -c . /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/…

Impala Shell 简单命令

目录 1.更新元数据 2.对查询结果去格式化 3.查询结果存储到文件 4.去格式化后指定分隔符 5.-p或者--show-profiles:显示查询的执行计划(与EXPLAIN语句输出相同)和每个查询语句底层的执行步骤的详细信息. 6.指定主机名连接 (-i) 7.执行查询语句 8.指定脚本文件执行SQL …