CDH 6 安装 Hbase 二级索引 Solr + Key-Value Store Indexer

目录

一、集群安装Solr +  Key-Value Store Indexer

二、创建Hbase二级索引

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

2.创建相应的SolrCloud集合

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

 4.创建 Lily HBase Indexer 配置

5.配置Morphline文件

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

7.重启 Key-Value Store Indexer 服务

三、命令汇总

1.列出所有 Hbase indexer

2.删除 Hbase indexer

3.列出 Solr 所有 collection

4.清空 Solr collection 中所有数据

5.删除 Solr collection 

6.列出 Solr 所有 instancedir

7.删除 Solr instancedir

8.初始化生成 instancedir 配置文件

9.创建 instancedir

10. 创建 Solr collection

11. 创建 Hbase Indexer

12.更新 Solr instancedir 配置

13.更新 Solr collection配置

14.更新 Hbase Indexer


一、集群安装Solr +  Key-Value Store Indexer

      先安装Solr ,再安装Key-Value Store Indexer ,安装节点和hbase,hdfs在相同节点。

二、创建Hbase二级索引

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集合


这里得路径和用户名都可以自己定义

# 生成实体配置文件:solrctl instancedir --generate /opt/hbase-indexer/index1

进入 ~/hbase-indexer/user_index 目录下的conf目录,将managed-schema 文件复制为 schema.xml

cp managed-schema schema.xml

在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>

创建

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

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

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

 4.创建 Lily HBase Indexer 配置

创建文件 morphline-hbase-mapper.xml 

[root@test119 index1]# cat morphline-hbase-mapper.xml 
<?xml version="1.0"?>
<!-- table:需要索引的HBase表名称-->
<!-- mapper:用来实现和读取指定的Morphline配置文件类,固定为MorphlineResultToSolrMapper-->
<indexer table="hbase_tableName" 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="JastTableMap"/>
</indexer>

5.配置Morphline文件

进入CM管理界面中 Key-Value Store Indexer,修改 Morphline文件

SOLR_LOCATOR : {# Name of solr collectioncollection : hbaseindexer# ZooKeeper ensemblezkHost : "$ZK_HOST" 
}morphlines : [
{
id : JastTableMap
importCommands : ["org.kitesdk.**", "com.ngdata.**"]commands : [                    {extractHBaseCells {mappings : [{inputColumn : "fn:name"outputField : "hbase_indexer_vt_fn_name" type : string source : value},{inputColumn : "fn:comments_count"outputField : "hbase_indexer_vt_fn_comments_count" type : stringsource : value},{inputColumn : "fn:text"outputField : "hbase_indexer_vt_fn_text" type : stringsource : value}]}}{ logDebug { format : "output record: {}", args : ["@{}"] } }
]
}
]

上面设置类型都是string(根据数据会自动转换),如果需要设置int类型可以参考: 

 https://datamining.blog.csdn.net/article/details/103566964 

注:

id:表示当前morphlines的名称,与上一步的value="JastTableMap"要一致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接口即可实现接口可参考: https://datamining.blog.csdn.net/article/details/103566964 source:用来指定HBase的KeyValue那一部分作为索引输入数据,可选的有‘value’和'qualifier',当为value的时候表示使用HBase的列值作为索引输入,当为qualifier的时候表示使用HBase的列限定符作为索引输入

 

6.注册 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

注:这里的name可以随便起,solr.collection 要与上面的相同

7.重启 Key-Value Store Indexer 服务

此时往hbase中插入数据,可以自动同步至 Solr 中,Solr Collection 为上面创建的 index1

solr查看页面:http://ip:8983

 

三、命令汇总

1.列出所有 Hbase indexer

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

2.删除 Hbase indexer

hbase-indexer delete-indexer --name TESTindexer --zookeeper hostname1:2181,hostname2:2181,hostname3:2181

3.列出 Solr 所有 collection

solrctl collection --list

4.清空 Solr collection 中所有数据

solrctl collection --deletedocs vt_index

5.删除 Solr collection 

solrctl collection --delete vt_index

6.列出 Solr 所有 instancedir

solrctl instancedir --list 

7.删除 Solr instancedir

solrctl instancedir --delete vt_index

8.初始化生成 instancedir 配置文件

solrctl instancedir --generate /home/jast/opt/hbase-indexer/index1

9.创建 instancedir

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

10. 创建 Solr collection

solrctl collection --create index1 -s 3 -r 1 -m 3

11. 创建 Hbase Indexer

hbase-indexer add-indexer \
--name TESTindexer \
--indexer-conf ~/opt/hbase-indexer/morphline-hbase-mapper.xml --connection-param solr.zk=hostname1:2181,hostname2:2181,hostname3:2181/solr \
--connection-param solr.collection=index1\
--zookeeper hostname1:2181,hostname2:2181,hostname3:2181

12.更新 Solr instancedir 配置

solrctl instancedir --update index1/home/jast/opt/hbase-indexer/index1

13.更新 Solr collection配置

solrctl collection --reload index1

14.更新 Hbase Indexer

hbase-indexer update-indexer -n index1

 

常见问题

问题1:服务异常退出,查看日志发现没报错

从服务器查看日志没有异常,通过CDH查看日志发现内存不足,在搭建集群时候,Key-Value Store Indexer 与 Solr 都要给够相关内存,具体大小根据实际情况来测试

Key-Value Store Indexer  的配置参数:

    Lily HBase Indexer 的 Java 堆栈大小(字节)

Solr 的配置参数

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

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

相关文章

glClipPlane剪裁平面

glClipPlane裁剪平面 (2012-02-21 12:49:18) 转载▼标签&#xff1a; 半平面 裁剪 线框 球体 表示 杂谈 分类&#xff1a; OPENGL void glClipPlane(GLenum plane, const GLdouble *equation); 定义一个裁剪平面。equation参数指向平面方程Ax By Cz D …

html思维导图

网页版&#xff1a;https://www.processon.com/view/link/5a658afae4b010a6e728e492

c#事件和委托

一、委托(Delegate) 1、定义 delegate是C#中的一种类型&#xff0c;它实际上是一个能够持有对某个方法的引用的类。与其它的类不同&#xff0c;delegate类能够 拥有一个签名&#xff08;signature&#xff09;&#xff0c;并且它"只能持有与它的签名相匹配的方法的引用&qu…

MonoBehaviour常用方法

1.Start()在Update方法被调用之前开始调用Start方法&#xff0c;而且Start方法在整个MonoBehaviour生命周期内只被调用一次。Awake和Start不同的地方在于Start方法仅仅在脚本初始化后被调用&#xff0c;这样允许你延迟加载任何代码&#xff0c;直到代码真正被使用时。Awake方法…

CDH6.x Solr7.x 集成 Ik 分词

下载ik相关jar包&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/19fydKWw15g8rPg4LW1cOtw 提取码&#xff1a;f2l8 在CDH安装目录下 查找CDH6 solr 的启动目录 [roothostname1 ~]# find /opt -name WEB-INF |grep solr /opt/cloudera/parcels/CDH-6.0.0-1.cdh6.0.0.p…

行为树的原理及实现

查阅了一些行为树资料&#xff0c;目前最主要是参考了这篇文章&#xff0c;看完后感觉行为树实乃强大&#xff0c;绝对是替代状态机的不二之选。但从理论看起来很简单的行为树&#xff0c;真正着手起来却发现很多细节无从下手。 总结起来&#xff0c;就是&#xff1a; 1、行为树…

Unity 3D中的射线与碰撞检测

在我们的游戏开发过程中&#xff0c;有一个很重要的工作就是进行碰撞检测。例如在射击游戏中子弹是否击中敌人&#xff0c;在RPG游戏中是否捡到装备等等。在进行碰撞检测时&#xff0c;我们最常用的工具就是射线&#xff0c;Unity 3D的物理引擎也为我们提供了射线类以及相关的函…

HugeGraphServer 部署安装

官方文档链接&#xff1a;https://hugegraph.github.io/hugegraph-doc HugeGraphServer Quick Start 1 概述 HugeGraph-Server 是 HugeGraph 项目的核心部分&#xff0c;包含Core、Backend、API等子模块。 Core模块是Tinkerpop接口的实现&#xff0c;Backend模块用于管理数…

JanusGraph: 可视化 Gephi 插件安装

下载地址 https://gephi.org/ 安装 下一步默认安装即可 打开安装插件 打开后发现提示无法连接&#xff0c;并且可用插件显示为0 &#xff08;我更新过所以不为0&#xff09; 点击“代理配置” 设置代理 安装插件 Graph Streaming 继续 重新启动&#xff0c;安装完成 点击概…

JanusGraph(HugeGraph通用): 可视化 GraphEXP 插件安装

JanusGraph&#xff1a; 可视化 Gephi 插件安装可参考&#xff1a;https://datamining.blog.csdn.net/article/details/103894994 下载地址&#xff1a;https://github.com/bricaud/graphexp 安装 解压&#xff0c;在根目录下修改 graphexp.html <div class"nav inp…

迁移 Cloudera Manager 节点 ,迁移Cloudera Scm Server端

目录 1.迁移节点信息&#xff1a;212 -> 44 2.压缩存储目录&#xff0c;备份SCM Server数据 3.在新服务器安装server端 4.修改 cloudera-scm-server 配置文件 5.解压恢复备份数据到新服务器指定配置的目录中 6.修改所有agent节点的配置文件内容 7.迁移ClouderaManage…

CM,CDH 修改迁移元数据库

目录 1.停止所有服务 2.停止Cloudera Management Service服务 3.登录CM所在服务器&#xff0c;停止cloudera-scm-server服务&#xff0c;命令如下&#xff1a; 4.停止CM服务和CDH集群后&#xff0c;对数据库进行迁移 5.登录cloudera-scm-server服务所在服务器&#xff0c;…

Cloudera-Manager-agent 误删恢复

场景&#xff1a; 同事操作失误&#xff0c;将agent节点误删了 解决方法 1.对比正常agent节点与被删除节点安装包差异 yum list installed |grep cloudera 2.通过和正常的服务器对比我们发现&#xff0c;丢失的只有cloudera-manager-agent.x86_64 3.查看yum源中所有clouder…

java中的内部类

内部类&#xff1a;定义在类结构中的另一个类&#xff1a; 类中的定义的成员&#xff1a;字段、方法、内部类 为什么使用内部类&#xff1f; 增强封装&#xff0c;把内部类隐藏在外部类之内&#xff0c;不许其他类访问该类。内部类能提高代码的可读性和可维护性&#xff0c;…

java中枚举类型详解

枚举类型的引入&#xff1a; 枚举是从java5开始提供的一种新的数据类型&#xff0c;是一个特殊的类&#xff0c;就是固定的多个常量对象的集合。 定义格式&#xff1a; [修饰]enum 枚举类名 { 常量A,常量B,常量C; } 代码&#xff1a; package com.test;enum Weekday {…

Hbase 预写日志WAL处理源码分析之 LogCleaner

目录 Hlog WALs和oldWALs 整体流程 HMaster 初始化 定时执行 LogCleaner 日志清理类 ReplicationLogCleaner 日志清理类 总结 Hlog WALs和oldWALs 这里先介绍一下Hlog失效和Hlog删除的规则 HLog失效&#xff1a;写入数据一旦从MemStore中刷新到磁盘&#xff0c;…

Dubbo 2.7.x admin 控制台管理提示 : 无元数据信息,请升级至Dubbo2.7及以上版本

版本&#xff1a;2.7.3 安装完Dubbo admin 运行后&#xff0c;查询服务提示 无元数据信息&#xff0c;请升级至Dubbo2.7及以上版本&#xff0c;或者查看application.properties中关于config center的配置&#xff0c;详见 这里 这里描述着处理方法&#xff1a;https://github…

Unity在运行时(代码中)设置材质的渲染模式(RenderingMode)

在Unity中&#xff0c;有些少数情况下我们需要用代码来创建材质。比如说在材质非常多&#xff0c;而仅仅是纹理不一样的时候。 而用代码创建的材质是没有对应的资源文件的&#xff0c;我们也就无法使用Inspector来设置它的Rendering Mode。 关于Rendering Mode&#xff0c;许我…