任何机构都可以解释我在Hadoop中索引过程的含义。 它是否像我们在RDBMS中执行的传统数据索引那样,因此在Hadoop中我们使用相同的类比来索引数据块并将块的物理地址存储在某些数据结构中。 因此,它将成为群集中的一个额外空间。Hadoop中的索引过程
围绕这个话题搜索,但没有得到任何满意和详细的东西。 任何指针都会有所帮助。
在此先感谢
任何机构都可以解释我在Hadoop中索引过程的含义。 它是否像我们在RDBMS中执行的传统数据索引那样,因此在Hadoop中我们使用相同的类比来索引数据块并将块的物理地址存储在某些数据结构中。 因此,它将成为群集中的一个额外空间。Hadoop中的索引过程
围绕这个话题搜索,但没有得到任何满意和详细的东西。 任何指针都会有所帮助。
在此先感谢
我们可以找出创建索引2不同的粒度级别:基于指数上的文件URI或索引基于InputSplit。我们来看两个不同的数据集示例。
索引
在this第一示例中,2个文件数据中的在25个块设置配合,并且已被确定为7个不同InputSplits。您正在寻找的目标(灰色突出显示)在文件#1(块#2,#8和#13)和文件#2(块#17)上可用
使用基于文件的索引,您将结束与2个文件(在这里完整的数据集),这意味着您的索引查询将相当于一个完整的扫描查询 使用基于InputSplit的索引,您将最终有7个可用的4个InputSplits。性能应该肯定比全面扫描查询要好 索引
我们以second为例。这次,相同的数据集已经按您想索引的列进行排序。您正在查找的目标(灰色突出显示)现在可在文件#1(块#1,#2,#3和#4)上找到。
使用基于文件的索引,你最终会与您的数据只有1文件中设置 使用基于InputSplit索引,你将最终获得1个InputSplit 7可用 对于这个特定的研究,我决定使用自定义InputSplit基于指数。我认为这种方法应该在实现所需的努力,性能优化带来的附加价值以及预期适用性之间取得很好的平衡,无论数据分布如何。
Hadoop将数据存储在文件中,并且不对它们编制索引。为了找到一些东西,我们必须运行一个MapReduce作业来处理所有的数据。对于数据库来说数据太大的Hadoop非常有效。对于非常大的数据集,再生索引的成本非常高,您无法轻松索引更改的数据。
但是,我们可以在HDFS中使用两种类型的索引。基于文件的索引&基于InputSplit的索引。 让我们假设我们有2个文件存储在HDFS中进行处理。第一个是500 MB,第二个是250 MB。因此,我们将在第一个文件中有4个InputSplits,每个在第2个文件中有3个InputSplits。 我们可以为上述案例应用两种索引 - 1.使用基于文件的索引,最终将包含2个文件(此处为完整数据集),这意味着您的索引查询将等同于完整扫描查询 2 。使用基于InputSplit的索引,您最终将得到4个InputSplits。性能应该比完整扫描查询更好。
现在,为了实现InputSplits指数,我们需要执行以下步骤:
代码示例和其他详细信息请参阅本 -
https://hadoopi.wordpress.com/2013/05/24/indexing-on-mapreduce-2/