过滤大型数据集的最佳方法

时间:2014-11-04 12:44:57

标签: hadoop hbase bigdata

我有一个关于如何从大型金融交易数据集中过滤相关记录的查询。我们使用Oracle 11g数据库,其中一个要求是生成各种各样的标准的各种日终报告。

相关表格大致如下:

trade_metadata             18m rows, 10 GB
trade_economics            18m rows, 15 GB
business_event             18m rows, 11 GB
trade_business_event_link  18m rows, 3 GB

我们的一份报告现在需要很长时间才能运行(> 5小时)。底层过程已经一次又一次优化,但新标准不断增加,所以我们再次开始挣扎。 proc是非常标准的 - 加入所有表并应用一系列where子句(最后计数为20)。

我想知道我是否有足够大的问题来考虑大数据解决方案,以便每隔几个月摆脱这种优化查询游戏。无论如何,数量只会上升。我已经阅读了一些关于Hadoop + HBase,Cassandra,Apache Pig等的内容,但对于这个领域来说还是一个新手,对于最佳的继续操作方式有点困惑。

我想这不是map-reduce问题。 HBase似乎确实提供过滤器,但我不确定它们的性能。这里的开明人士能否为我回答几个问题:

  1. 数据集是否足以容纳大数据解决方案(我是否需要先进入亿万俱乐部?)
  2. 如果是的话,HBase会是一个很好的选择吗?
  3. 即使数量稳步增长,我们也不会很快离开甲骨文。我是否每天都在使用相关表格中的转储来填充HDFS?或者每天都可以写delta?
  4. 非常感谢!

1 个答案:

答案 0 :(得分:2)

欢迎来到各种各样的大数据生态系统。如果您的数据集大小足够大,以至于使用传统工具分析它的能力,那么它对于大数据技术来说已经够大了。正如您可能已经看到的那样,有大量的大数据工具可供使用,其中许多工具具有重叠功能。

首先,您没有提及是否有群集设置。如果没有,那么我建议按ClouderaHortonworks查看产品。这些公司提供Hadoop发行版,其中包括许多最流行的大数据工具(hbase,spark,sqoop等),并使配置和管理组成集群的节点变得更加容易。两家公司都免费提供发行版,但您必须支付费用。

接下来,您需要将数据从Oracle中获取并以hadoop集群中的某种格式进行分析。通常用于从关系数据库和集群中获取数据的工具是Sqoop。 Sqoop能够将表加载到Hadoop分布式文件系统(HDFS)上的HBase,Hive和文件中。 Sqoop还能够为更新而不是整个表加载执行增量导入。您选择的这些目的地中的哪一个会影响您在下一步中可以使用的工具。 HDFS是最灵活的,您可以从PIG,您编写的MapReduce代码,Hive,Cloudera Impala等访问它。我发现HBase非常容易使用,但其他人强烈推荐使用Hive。

抛开:有一个名为Apache Spark的项目,预计将取代Hadoop MapReduce。与传统的hadoop mapreduce工作相比,Spark声称速度提升了100倍。包括Hive在内的许多项目都将在Spark上运行,使您能够对大数据进行类似SQL的查询并快速获得结果(Blog post

现在您的数据已加载,您需要运行那些结束日期的报告。如果您选择Hive,那么您可以重用大量的SQL知识,而不必编写Java或学习Pig Latin(不是很难)。 Pig将Pig Latin转换为MapReduce作业(现在就像Hive的查询语言一样),但是,像Hive一样,Pig can target Spark也是如此。无论您为此步骤选择哪种工具,我建议您查看Oozie以自动化提取,分析和结果移出群集(sqoop导出为此)。 Oozie允许你schedule recurring workflows喜欢你的,所以你可以专注于结果而不是过程。 Oozie的全部功能记录在案here

您可以随意使用大量工具,这种生态系统的变化速度可以让您鞭打。 cloudera和Hortonworks都提供了可用于尝试分发的虚拟机。我强烈建议花更少的时间深入研究每个工具,只是尝试其中的一些(如Hive,Pig,Oozie,......),看看什么最适合您的应用程序)。