哪个Hadoop产品更适合快速查询大型数据集?

时间:2009-12-12 03:12:42

标签: hadoop

我正在研究Hadoop以了解哪些产品适合我们对大数据集快速查询的需求(每套数十亿条记录)

将根据芯片排序数据执行查询。每条记录都是文件中的一行。下面要清楚显示数据集中的示例记录。

一行(记录)看起来像:

1-1-174-418 TGTGTCCCTTTGTAATGAATCACTATC U2 0 0 1 4 ***103570835*** F .. 23G 24C

突出显示的字段称为“匹配位置”,我们感兴趣的查询是此“匹配位置”的特定范围内的序列数。例如,范围可以是“匹配位置”> 200和“匹配位置”+ 36< 200000。

关于Hadoop产品的任何建议我应该从完成任务开始? HBase,Pig,Hive还是......?

4 个答案:

答案 0 :(得分:4)

粗略的准则:如果您需要快速返回并且不需要聚合数据的大量查询,则需要使用HBase。如果您正在查看更多分析和聚合聚焦的任务,那么您需要Pig或Hive。

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

答案 1 :(得分:2)

对于后人,这是Xueling在Hadoop邮件列表上收到的答案:

首先,来自雪岭的进一步细节:

  

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

来自Cloudera的Todd Lipcon的回应:

  

在那种情况下,我会推荐   以下内容:

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

         

  6.         

    你基本上给予补偿   每10K记录左右。如果你   索引每10K记录,然后5   十亿美元将意味着100,000指数   条目。每个索引条目不应该是   超过20个字节,因此有100,000个条目   将是2MB。这非常容易安装   进入记忆。 (你可以索引   每100条记录改为结束   200MB,仍然很容易适应   存储器)

         

    然后满足你的计数范围   查询,你可以简单地扫描你的   内存稀疏索引。某些   索引块将完全   包括在该范围内,在这种情况下   你只需加上“条目数   关注“专栏。开始和   完成块将部分   覆盖,所以你可以使用该文件   偏移信息以关闭该文件   HDFS,开始读取该偏移量,   并完成计数。

         

    每个查询的总时间应<100毫秒   没问题。

随后的一些回复建议HBase。

答案 2 :(得分:0)

你也可以看一下JAQL(http://code.google.com/p/jaql/),但不幸的是它是用于查询JSON数据。但无论如何这可能会有所帮助。

答案 3 :(得分:0)

您可能需要查看HBase或Cassandra等No-SQL Database方法。我更喜欢HBase,因为它有一个不断发展的社区。