热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CDH版本Hbase二级索引方案Solrkeyvalueindex

概述在Hbase中,表的RowKey按照字典排序,Region按照RowKey设置splitpoint进行shard,通过这种方式实现的全局、分布式索引.成为了其成功

 

概述

在Hbase中,表的RowKey 按照字典排序, Region按照RowKey设置split point进行shard,通过这种方式实现的全局、分布式索引. 成为了其成功的最大的砝码。

然而单一的通过RowKey检索数据的方式,不再满足更多的需求,查询成为Hbase的瓶颈,人们更加希望像Sql一样快速检索数据,可是,Hbase之前定位的是大表的存储,要进行这样的查询,往往是要通过类似Hive、Pig等系统进行全表的MapReduce计算,这种方式既浪费了机器的计算资源,又因高延迟使得应用黯然失色。于是,针对HBase Secondary Indexing的方案出现了。

Solr

Solr是一个独立的企业级搜索应用服务器,是Apache Lucene项目的开源企业搜索平台,

其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。Solr是高度可扩展的,并提供了分布式搜索和索引复制。Solr 4还增加了NoSQL支持,以及基于Zookeeper的分布式扩展功能SolrCloud。SolrCloud的说明可以参看:SolrCloud分布式部署。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

Solr可以高亮显示搜索结果,通过索引复制来提高可用,性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。

Key-Value Store Indexer

这个组件非常关键,是Hbase到Solr生成索引的中间工具。

在CDH5.3.2中的Key-Value Indexer使用的是Lily HBase NRT Indexer服务.

Lily HBase Indexer是一款灵活的、可扩展的、高容错的、事务性的,并且近实时的处理HBase列索引数据的分布式服务软件。它是NGDATA公司开发的Lily系统的一部分,已开放源代码。Lily HBase Indexer使用SolrCloud来存储HBase的索引数据,当HBase执行写入、更新或删除操作时,Indexer通过HBase的replication功能来把这些操作抽象成一系列的Event事件,并用来保证写入Solr中的HBase索引数据的一致性。并且Indexer支持用户自定义的抽取,转换规则来索引HBase列数据。Solr搜索结果会包含用户自定义的columnfamily:qualifier字段结果,这样应用程序就可以直接访问HBase的列数据。而且Indexer索引和搜索不会影响HBase运行的稳定性和HBase数据写入的吞吐量,因为索引和搜索过程是完全分开并且异步的。Lily HBase Indexer在CDH5中运行必须依赖HBase、SolrCloud和Zookeeper服务。

 

实时查询方案

Hbase  ----->  Key Value Store  ---> Solr -------> Web前端实时查询展示

1.Hbase 提供海量数据存储

2.Solr提供索引构建与查询

3. Key Value Store 提供自动化索引构建(从Hbase到Solr)

使用流程

前提: CDH5.3.2Solr集群搭建好,CDH5.3.2 Key-Value Store Indexer集群搭建好

 

1.开启Hbase的复制功能

2. Hbase表需要开启REPLICATION复制功能

create 'table',{NAME => 'cf', REPLICATION_SCOPE => 1} #其中1表示开启replication功能,0表示不开启,默认为0  

对于已经创建的表可以使用如下命令

disable 'table' 

alter 'table',{NAME => 'cf', REPLICATION_SCOPE => 1} 

enable 'table' 

 

3. 生成实体配置文件, /opt/hbase-indexer/Test是自定义路径,可以自己设置

solrctl instancedir --generate  /opt/cdhsolr/waslog

 

4.编辑生成好的scheme.xml文件

把hbase表中需要索引的列添加到scheme.xml filed节点,其中的name属性值要与Morphline.conf文件中的outputField属性值对应

 

5.创建collection实例并配置文件上传到zookeeper,命令

solrctl instancedir --create waslog  /opt/cdhsor/waslog

 

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

solrctl collection –create  waslog  -s  15 –r 2 –m 50

 

7.创建Lily HBase Indexer配置文件

morphline-hbase-mapper.xml

其中morphlineId 的value是对应Key-Value Store Indexer 中配置文件Morphlines.conf 中morphlines 属性id值

 

8.修改Morphlines 文件, 具体操作:进入Key-Value Store Indexer面板->配置->查看和编辑->属性-Morphline文件

morphlines : [
{
id :waslogMap
importCommands : [
"org.kitesdk.**", "com.ngdata.**"]commands : [ {extractHBaseCells {mappings : [{inputColumn : "cf:LOGSYFG"outputField : "LOGSYFG" type : string source : value},{inputColumn : "cf:LOGIPAD"outputField : "LOGIPAD" type : string source : value},{inputColumn : "cf:LOGSEQC"outputField : "LOGSEQC" type : string source : value},{inputColumn : "cf:LOGLGDT"outputField : "LOGLGDT" type : string source : value},{inputColumn : "cf:LOGLGTM"outputField : "LOGLGTM" type : string source : value}]}}{ logDebug { format : "output record: {}", args : ["@{}"] } }
]
}
]

inputColumn:Hbase的CLOUMN

outputField:Solr的Schema.XML配置的fields

9.注册Lily HBase Indexer configuration 和 Lily Hbase Indexer Service

hbase-indexer add-indexer \--name cloudIndexer \--indexer-conf /opt/cdhsolr/morphline-hbase-mapper.xml--connection-param solr.zk=cdh1:2181,cdh2:2181,cdh3:2181/solr \--connection-param solr.collection=waslog \--zookeeper cdh1:2181,cdh2:2181,cdh3:2181

验证索引器是否成功创建

hbase-indexer list-indexers

10.测试put数据查看结果

当写入数据后,稍过几秒我们可以在相对于的solr中查询到该插入的数据,表明配置已经成功。

 

11.使用IK分词器

在/opt/cloudera/parcels/CDH/lib/solr/webapps/solr/WEB-INF创建classes目录

把IKAnalyzer.cfg.xml 和 stopword.dic添加到classes目录

把IKAnalyzer2012FF_u1.jar添加到/opt/cloudera/parcels/CDH/lib/solr/webapps/solr/WEB-INF/lib目录

 

在Schema.xml中添加

 

       

       

       

       

 

 

配置好后更新ZK配置文件,重启solr服务

 

12,扩展命令

Scheme.xml新增索引字段

执行以下命令更新配置

 

solrctl instancedir --update waslog /opt/cdhsolr /waslog

 

solrctl collection --reload  waslog

 

查看collection命令:solrctl collection –list

 

Hbase表数据到SOLR集群迁移

在CDH5.3.2中Hbase-indexer提供了MapReduce来批量构建索引的方式

/opt/cloudera/parcels/CDH-5.3.2-1.cdh5.3.2.p0.10/lib/hbase-solr/tools/hbase-indexer-mr-1.5-cdh5.3.2-job.jar

构建命令

hadoop jar /opt/cloudera/parcels/CDH-5.3.2-1.cdh5.3.2.p0.10/lib/hbase-solr/tools/hbase-indexer-mr-1.5-cdh5.3.2-job.jar D 'mapreduce.reduce.shuffle.memory.limit.percent=0.06' --hbase-indexer-file /opt/cdhsolr/mapping/waslog/morphline-hbase-mapper.xml --zk-host hadoop03:2181,hadoop04:2181,hadoop05:2181/solr --collection waslog --go-live

 

注意:在运行命令的目录下必须有morphlines.conf文件

http://www.cnblogs.com/thinkpad/p/5534627.html

 

转:https://www.cnblogs.com/thinkpad/p/5534627.html



推荐阅读
  • 构建高可用性Spark分布式集群:大数据环境下的最佳实践
    在构建高可用性的Spark分布式集群过程中,确保所有节点之间的无密码登录是至关重要的一步。通过在每个节点上生成SSH密钥对(使用 `ssh-keygen -t rsa` 命令并保持默认设置),可以实现这一目标。此外,还需将生成的公钥分发到所有节点的 `~/.ssh/authorized_keys` 文件中,以确保节点间的无缝通信。为了进一步提升集群的稳定性和性能,建议采用负载均衡和故障恢复机制,并定期进行系统监控和维护。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 如何正确配置与使用日志组件:Log4j、SLF4J及Logback的连接与整合方法
    在当前的软件开发实践中,无论是开源项目还是日常工作中,日志框架都是不可或缺的工具之一。本文详细探讨了如何正确配置与使用Log4j、SLF4J及Logback这三个流行的日志组件,并深入解析了它们之间的连接与整合方法,旨在帮助开发者高效地管理和优化日志记录流程。 ... [详细]
  • 开发心得:利用 Redis 构建分布式系统的轻量级协调机制
    开发心得:利用 Redis 构建分布式系统的轻量级协调机制 ... [详细]
  • camel_使用Camel在来自不同来源的Solr中索引数据
    camelApacheSolr是建立在Lucene之上的“流行的,快速的开源企业搜索平台”。为了进行搜索(并查找结果),通常需要从不同的源(例如内容管理 ... [详细]
  • es的分布式原理?es是如何实现分布式的?
    Elasticsearch设计的理念是分布式搜索引擎,底层其实是基于lucene。核心思 ... [详细]
  • 一:什么是solrSolr是apache下的一个开源项目,使用Java基于lucene开发的全文搜索服务器;Lucene是一个开放源代 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 华为捐赠欧拉操作系统,承诺不推商用版
    华为近日宣布将欧拉开源操作系统捐赠给开放原子开源基金会,并承诺不会推出欧拉的商用发行版。此举旨在推动欧拉和鸿蒙操作系统的全场景融合与生态发展。 ... [详细]
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • PHP 各版本对比:标准版与最新顶级版的详细分析 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
author-avatar
mobiledu2502881047
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有