我正在研究Hadoop以了解哪些产品适合我们对大数据集快速查询的需求(每套数十亿条记录)
将根据芯片排序数据执行查询。每条记录都是文件中的一行。下面要清楚显示数据集中的示例记录。
一行(记录)看起来像:
1-1-174-418 TGTGTCCCTTTGTAATGAATCACTATC U2 0 0 1 4 ***103570835*** F .. 23G 24C
突出显示的字段称为“匹配位置”,我们感兴趣的查询是此“匹配位置”的特定范围内的序列数。例如,范围可以是“匹配位置”> 200和“匹配位置”+ 36< 200000。
关于Hadoop产品的任何建议我应该从完成任务开始? HBase,Pig,Hive还是......?
答案 0 :(得分:4)
粗略的准则:如果您需要快速返回并且不需要聚合数据的大量查询,则需要使用HBase。如果您正在查看更多分析和聚合聚焦的任务,那么您需要Pig或Hive。
HBase允许您指定扫描的开始行和结束行,这意味着它应该满足您提供的查询示例,并且似乎最适合您的用例。
答案 1 :(得分:2)
对于后人,这是Xueling在Hadoop邮件列表上收到的答案:
首先,来自雪岭的进一步细节:
数据集不会经常更新。 但是对数据集的查询是 频繁。查询越快,越快 更好。例如,我们已经完成了 在Mysql数据库上测试(50亿 记录随机分散到24 表)和最慢的查询 最大的表(400,000,000 记录)大约12分钟。因此,如果 使用任何Hadoop产品都可以加快速度 然后搜索产品就是我们 正在寻找。
来自Cloudera的Todd Lipcon的回应:
在那种情况下,我会推荐 以下内容:
- 将所有数据放在HDFS上
- 编写一个MapReduce作业,按匹配位置对数据进行排序
- 醇>
作为此作业的第二个输出,您可以编写“稀疏索引” - 基本上是一组这样的条目:
你基本上给予补偿 每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,因为它有一个不断发展的社区。 p>