哪种Hadoop产品更适合在大型数据集上进行快速查询?

哪种Hadoop产品更适合在大型数据集上进行快速查询?,hadoop,Hadoop,我正在研究Hadoop,看看它的哪些产品适合我们对大数据集(每套数十亿条记录)进行快速查询的需要 将对芯片测序数据执行查询。每个记录是一个文件中的一行。为了清楚起见,下面显示了数据集中的一个示例记录 一行(记录)看起来像: 1-1-174-418 TGTGTCCCTTTGTAATGAATCACTATC U2 0 0 1 4 ***103570835*** F .. 23G 24C 突出显示的字段称为“匹配位置”,我们感兴趣的查询是在该“匹配位置”的特定范围内的#个序列。例如,范围可以是“匹配位

我正在研究Hadoop,看看它的哪些产品适合我们对大数据集(每套数十亿条记录)进行快速查询的需要

将对芯片测序数据执行查询。每个记录是一个文件中的一行。为了清楚起见,下面显示了数据集中的一个示例记录

一行(记录)看起来像:

1-1-174-418 TGTGTCCCTTTGTAATGAATCACTATC U2 0 0 1 4 ***103570835*** F .. 23G 24C
突出显示的字段称为“匹配位置”,我们感兴趣的查询是在该“匹配位置”的特定范围内的#个序列。例如,范围可以是“匹配位置”>200和“匹配位置”+36<200000


对于Hadoop产品,我有什么建议可以帮助我完成任务吗?HBase、Pig、Hive或…?

粗略的指导原则:如果您需要大量快速返回且不需要聚合数据的查询,那么您需要使用HBase。如果您正在寻找更注重分析和聚合的任务,那么您需要Pig或Hive


HBase允许您指定扫描的开始行和结束行,这意味着它应该满足您提供的查询示例,并且似乎最适合您的用例。

粗略的指导原则:如果您需要大量返回速度快且不需要聚合数据的查询,您希望使用HBase。如果您正在寻找更注重分析和聚合的任务,那么您需要Pig或Hive


HBase允许您指定扫描的开始行和结束行,这意味着它应该满足您提供的查询示例,并且似乎最适合您的用例。

对于后代,以下是Xueling在Hadoop邮件列表中收到的答案:

首先,雪玲的进一步细节:

数据集不会经常更新。 但是对数据集的查询是 频繁的。查询的速度越快,结果就越好 更好。例如,我们已经做到了 在Mysql数据库上测试(50亿) 记录随机分为24组 表)和对 最大的表(400000000) 记录)约为12分钟。所以如果 使用任何Hadoop产品都可以加速 搜索然后产品就是我们想要的 我们正在寻找

Cloudera的Todd Lipcon的回应是:

在这种情况下,我建议 以下:

  • 将所有数据放在HDFS上
  • 编写一个MapReduce作业,按匹配位置对数据进行排序
  • 作为此作业的第二个输出,您可以编写“稀疏索引”- 基本上是这样的一组条目:

  • 你基本上是在给补偿 大约每10公里记录一次。如果你 每10K记录索引一次,然后5 总计10亿将意味着10万个指数 条目。每个索引项都不应该是 超过20个字节,因此有100000个条目 将是2MB。这是超级容易适应 进入记忆。(你也许可以建立索引 而是每100次记录一次,然后结束 具有200MB,仍然易于安装 内存)

    然后满足您的计数范围 查询时,您只需扫描 内存稀疏索引。一些 索引块将被完全删除 包括在范围内,在这种情况下 您只需将“条目数”相加即可 下面是“第二栏”。起点和终点 饰面砌块将部分拆除 已覆盖,因此您可以使用该文件 加载该文件的偏移量信息 HDFS,从偏移量开始读取, 完成计数


    对于后代而言,每次查询的总时间应,以下是Xueling在Hadoop邮件列表上收到的答案:

    首先,雪玲的进一步细节:

    数据集不会经常更新。 但是对数据集的查询是 频繁的。查询的速度越快,结果就越好 更好。例如,我们已经做到了 在Mysql数据库上测试(50亿) 记录随机分为24组 表)和对 最大的表(400000000) 记录)约为12分钟。所以如果 使用任何Hadoop产品都可以加速 搜索然后产品就是我们想要的 我们正在寻找

    Cloudera的Todd Lipcon的回应是:

    在这种情况下,我建议 以下:

  • 将所有数据放在HDFS上
  • 编写一个MapReduce作业,按匹配位置对数据进行排序
  • 作为此作业的第二个输出,您可以编写“稀疏索引”- 基本上是这样的一组条目:

  • 你基本上是在给补偿 大约每10公里记录一次。如果你 每10K记录索引一次,然后5 总计10亿将意味着10万个指数 条目。每个索引项都不应该是 超过20个字节,因此有100000个条目 将是2MB。这是超级容易适应 进入记忆。(你也许可以建立索引 而是每100次记录一次,然后结束 具有200MB,仍然易于安装 内存)

    然后满足您的计数范围 查询时,您只需扫描 内存稀疏索引。一些 索引块将被完全删除 包括在范围内,在这种情况下 您只需将“条目数”相加即可 下面是“第二栏”。起点和终点 饰面砌块将部分拆除 已覆盖,因此您可以使用该文件 加载该文件的偏移量信息 HDFS,从偏移量开始读取, 完成计数


    每个查询的总时间应该是您也可以简单地看一下JAQL(),但不幸的是,它是用于查询JSON数据的。但这可能会有所帮助。

    您也可以简单地看一下JAQL(),但不幸的是,它是用于查询JSON数据的。但这可能会有所帮助。

    您可能需要了解诸如HBase或Cassandra之类的无SQL数据库方法。我更喜欢HBase,因为它有一个不断增长的社区。

    您可能需要了解诸如HBase或Cassandra之类的无SQL数据库方法。我更喜欢HBase,因为它有一个不断增长的社区。

    所以它不是针对Hadoop的,它不会处理他的数据,通常与手头的问题无关,但它可能还是有用的。嗯,你读了主页上的摘要了吗?“Jaql是为Java设计的查询语言