1

我正准备用 lucence 和 hadoop 制作分发搜索模块,但对某些东西感到困惑:

  1. 众所周知,hdfs是一个分布式文件系统,当我把一个文件放到hdfs上时,文件会被分成几个块并存储在claster的不同从机中,但是如果我使用lucene在hdfs上写索引,我想要看每台机器上的指标,如何实现呢?

  2. 我已经阅读了一些 hadoop/contrib/index 和一些 katta,但不理解“分片,看起来像索引的一部分”的概念,它存储在一台计算机的本地磁盘上或仅存储在一个定向分布中集群?

感谢提前

4

1 回答 1

1

-至于你的问题1:

您可以实现 Lucene“目录”接口以使其与 hadoop 一起使用,并让 hadoop 处理您提交给它的文件。您还可以提供自己的“IndexWriter”和“IndexReader”实现,并使用您的 hadoop 客户端来编写和读取索引。这样,您可以更好地控制要编写的索引的格式。您可以通过您的 lucene/hadoop 实现“查看”或访问每台机器上的索引。

- 对于您的问题 2:

分片是索引的子集。当您运行查询时,所有分片都会同时处理,并且所有分片上的索引搜索结果都会合并。在集群的每台机器上,您都将拥有索引的一部分:一个分片。因此,索引的一部分将存储在本地机器上,但在您看来,它就像一个分布在集群中的单个文件。

我还可以建议您查看分布式搜索SolrCloud,或者在这里 它作为索引/搜索引擎在 Lucene 上运行,并且已经使您能够拥有聚集索引。它还提供了一个 API,用于将文件提交到索引和查询索引。也许这对您的用例来说已经足够了。

于 2013-12-09T13:40:41.557 回答