我发现一直理解错了,我一直以为分布式索引和分布式搜索是两个不同的事情,其实是一样的.把索引分布在多台计算机上,不就是正好实现了分布式搜索吗?既然索引已经分布式存储了,,因为搜索就是基于索引的,那搜索就自然是分布式的啦。.前面看网上一些理解,一直以为分布式索 引和分布式搜索是两个独立分开的过程,不知道理解的对不对?
调研了一下,发现索引文件的数据结构相当复杂,这个好像是每提交一次建索引,就会将以前已生成的索引重新组织,而且还会生成新文件,所以如果采用在HDFS中追加写索引文件,那工作量将相当大,必须清楚了解索引文件数据结构及索引文件关联,下面有三篇对lucene索引结构的分析,我是没怎么看懂,有兴趣的可以看一下
我现在知道为什么做分布式索引这么难呢?是因为索引小文件的整体关联性,不能随意拆分,我试了一下,如果将重新生成的段去掉后,那就不能 正常搜索,它会提示报错,少那个删去的文件。那分布式索引存储可行的方案就三种:
1.直接使用solr自带的分布式功能,即布署多台solr,选好master和slaves就可以了
2.使用HDFS分布式存储索引
3.使用Katta来管理索引
1.因为第一种索引文件是存储在多台机器的物理存储空间中的,而不是存在HDFS中,由于后面要用mahout做挖掘需要HDFS,所以第一种方案不适合
2.因为HDFS不适合存储大量小文件,会带来额外的计算开销。Nutch+solr的方案,也是将索引直接存在HDFS上的,没有考虑索引是小文件的问题,所以第二种直接将索引存在HDFS中并在HDFS中进行查询也是不可取的
参考资料:
1.
hadoop如何处理小文件
既然索引文件是必须放在HDFS上的,而且还要避免小文件的问题,那么就只有两种方案可取:
1.直接通过java api将solr索引文件目录导到hdfs中,然后用katta来将索引切片
2.用Nutch将索引文件布署到hdfs中,然后用katta来将索引切片
第一种方案的优点是,不需要搭Nutch平台。如果是第二种方案,具说hadoop+lucene=nutch,这样是不是有点重复呢?nutch的一个重要组成部分就是网络爬虫,如果只是用来爬本地磁盘文件,,是不是有点大才小用呢?而且nutch更新索引相当麻烦,,需要修改脚本,而目前我们的系统是有 现成数据的,根本用不着nutch。nutch有两种方法实现分布式搜索:一种是将搜索的索引目录,设置在hdfs上;另一种是将索引分散拷到本地,然后用nutch server设置多个机器监听本地索引目录,后一种种需要手动操作,将索引拷到本地,但这一种更高效,因为好多资料都说不建议在 hdfs中直接查询
第一种方案的缺点是每提交一次索引,需要重新导一次索引文件到hdfs中,而且索引文件是调solrj来生成的,这个性能如何是未知的
第二种方案的优缺点自然就和第一种相反喽,第二种方案,还需要解决一个问题,那就是当上传一个新文档到gluster的时候,如何更新索引
由于前面一直是在基于solr的基础上做的,,并且已经实现当新文档传到glusterfs中时,利用solrj来更新索引,所以想采用第一种方案,更新索引后,将索引文件同时提交到hdfs上,然后用katta来切分和管理索引
分享到:
相关推荐
索引是Solr的核心,它是对原始数据进行预处理后的结构化表示,用于高效搜索。索引由文档集合构成,每个文档包含多个字段,每个字段都有特定的类型。Solr支持多字段索引,允许对不同类型的属性进行快速查询。 3. **...
索引是通过将文档转换为一系列可搜索的字段来创建的,这些字段包括文本、数字、日期等。索引存储在磁盘上,并且可以被优化以提高查询性能。 2. **增量更新的概念** 增量更新是指只对发生变化的数据进行索引操作,...
合理设置Solr的并发度、连接超时和重试策略,以及使用本地缓存来存储已经索引过的文件,可以显著提升性能。 6. **错误处理和容错机制**:索引过程中可能会遇到网络中断、文件不可用等问题,因此在实现时需要考虑...
### hbase+solr创建二级索引完整操作 #### 一、概述 本文档详细介绍了如何利用HBase和Solr创建二级索引的过程。通过整合HBase与Solr的优势,可以构建高性能的数据存储与检索系统。HBase作为分布式列族数据库,能够...
### Solr配置与全文搜索建立索引的知识点详解 #### 一、Solr的基本安装与配置 1. **下载Solr** - **版本选择**:根据项目需求选择合适的Solr版本,通常推荐使用官方提供的最新稳定版。 - **下载地址**:从Apache...
索引是Solr的核心功能之一,它通过解析和存储文档内容,建立倒排索引,从而支持快速的全文搜索。 要索引文件夹中的文件,我们需要做以下几步: 1. **配置索引目录**:在Solr的`solrconfig.xml`配置文件中,定义一...
Solr全文索引是基于Apache Lucene的开源搜索服务器,它提供了一个分布式、可扩展、高性能的全文检索和分析平台。在本项目中,"Weiz.Solr"似乎是一个C#开发的Solr客户端库,用于简化与Solr服务器的交互。下面将详细...
本文将深入探讨如何使用MySQL作为SOLR的索引源,以提升数据检索的效率和性能。 首先,我们需要了解MySQL作为数据存储的优势,它提供了丰富的SQL查询语言,支持事务处理和ACID(原子性、一致性、隔离性和持久性)...
CDH 使用 Solr 实现 HBase 二级索引 在大数据处理中,HBase 是一种流行的 NoSQL 数据库,用于存储大量的数据。然而,在查询和检索数据时,HBase 的性能可能不太理想。这是因为 HBase 是基于 Key-Value 的存储方式,...
Solr支持多种数据存储方式,如内存存储和硬盘存储,以及分布式索引和查询处理,使得它可以轻松应对大数据量的场景。 二、Solr的特性 1. 分布式搜索:Solr 6.2.0支持集群部署,可以将索引分片到多个节点,实现水平...
《基于Solr4.9.0的搜索系统:探索索引构建与查询接口》 在当前的信息化时代,搜索引擎已经成为互联网应用不可或缺的一部分。本项目基于Apache Solr 4.9.0版本,构建了一个功能完善的搜索系统,结合了SpringBoot、...
Solr索引是一个存储和检索信息的高效结构,它允许快速搜索和返回结果。XML数据的使用使得索引管理更加灵活和可控。 首先,我们来看如何使用XML来添加文档。在XML中,`<add>`标签用于表示一组要添加到索引的新文档。...
Directory是指索引存储的位置;Segment是索引的段;QueryParser用于解析用户输入的查询语句;Hits指的是搜索结果的命中数。 在应用示例方面,文档介绍了如何创建索引、删除索引和执行索引查询。配置文件分析部分...
在HBase中,一级索引是基于行键(Row Key)的,它是默认的、快速的访问方式。但一级索引并不能满足所有类型的查询需求,例如,基于列值的查询。二级索引就是为了应对这种需求,它创建了一个额外的数据结构,用于存储...
1. **索引**:索引是Solr处理数据的基础,它是对文档进行预处理后的结果,用于快速查询。Solr使用倒排索引技术,将文档中的每个词映射到包含该词的文档列表,大大提高了搜索速度。 2. **Core**:在Solr中,Core是一...
1. **SolrCloud模式**:从版本8开始,Solr支持SolrCloud模式,这是一个分布式搜索和索引存储解决方案。它允许Solr集群进行自动故障转移和数据恢复,确保高可用性和容错性。 2. **集合与分片**:在SolrCloud中,数据...
- **`schema.xml`**:定义了文档中的字段及其属性,如字段的数据类型、是否索引、是否存储等。 - **字段定义**:通过`<field>`标签定义字段属性。 - **数据类型指定**:通过`<fieldType>`指定数据类型。 - **...
6. **server/solr 目录**:存储了配置集合的目录,每个集合都有自己的配置文件,如`schema.xml`用于定义字段和字段类型,`solrconfig.xml`定义了索引和查询的行为。 7. **contrib 目录**:包含了一些社区贡献的模块...
在本教程中,我们将深入探讨如何使用Solr5批量索引JSON数据,这对于任何需要处理大量结构化数据的系统来说都是一个重要的技能。Solr,作为Apache Lucene的一个分支,是一个强大的全文搜索引擎,它提供了高效的索引和...
这个项目旨在帮助开发者更好地理解和运用Solr进行数据索引和检索。让我们详细地探讨一下其中涉及的知识点。 1. **Apache Solr**:Solr是一个开源的企业级全文搜索引擎,它提供了高效、可扩展的搜索和分析功能。它...