使用 AWS Elastic MapReduce 获取时间序列数据的 Hive、HBase 和 Pig

Posted

技术标签:

【中文标题】使用 AWS Elastic MapReduce 获取时间序列数据的 Hive、HBase 和 Pig【英文标题】:Hive vs HBase vs Pig for time series data with AWS Elastic MapReduce 【发布时间】:2013-06-14 23:10:23 【问题描述】:

我正在尝试使用 AWS Elastic MapReduce 对相对平坦的时间序列数据进行统计分析。 AWS 让您可以选择使用 Hive、Pig 或 HBase 进行 EMR 作业——哪一个最适合这种类型的分析?我认为数据分析不会达到 TB 级——我表中的项目大多低于 1K。我也从未使用过这三种方法中的任何一种,但学习曲线应该不是问题。我更关心什么会更有效率;我也将很快交付这个项目,所以对于有 noSQL 经验的人来说,相对容易理解的东西会很好——但我主要是希望为我拥有的数据做出明智的选择。我可能会提出一个示例查询,例如“查找从上周到今天之间每天事件值超过 20 的所有帐户”。

【问题讨论】:

【参考方案1】:

恕我直言,这些都不是。当您的数据为big 时,您使用 MR、Hive、Pig 等,非常大,而且您正在谈论的数据集甚至不是 ~TB。而且您希望您的系统也高效。在这种情况下,使用这些工具将是矫枉过正。因此,对于您拥有的数据,sensible 选项将是您选择的 RDBMS。

如果只是为了学习目的,那么使用 HDFS+Hive 或 Pig(取决于哪个更适合你)。


回应您的评论:

如果我遇到这样的情况,我会使用 HDFS 和 Hive 来存储我的平面数据。我选择 Hive 的原因是我看不到这里发生了很多转换类型的事情。所以,是的,我会选择 Hive。而且,到目前为止,我真的没有看到任何 HBase 需求。当您需要随机实时访问数据的某些部分时,通常会使用 HBase。如果您的用例确实需要 HBase,那么您在设计架构时需要小心,因为您正在处理时间序列数据。

但是,决定是使用 Hive 还是 Pig,需要对您将对数据执行的操作类型进行更深入的分析。您可能会发现这些链接很有帮助: http://developer.yahoo.com/blogs/hadoop/pig-hive-yahoo-464.html http://www.larsgeorge.com/2009/10/hive-vs-pig.html

附: : 你可能想看看R project。

【讨论】:

理想情况下,我希望软件可以扩展。数据可能会无限期保存,如果进展顺利,它可能会扩大到更大的规模。我对 noSQL 数据库(主要是 mongo)比对关系 dbs 更熟悉——但总的来说,我没有很多 db 经验。我还想使用 EMR,因为系统的其余部分连接到 AWS——我的数据存储在 DynamoDB 中。如果您必须选择不考虑我的经验,认为数据最终会扩展并且您必须使用 Elastic MapReduce,您会选择这三个中的哪一个?感谢您的回复顺便说一句- 感谢您提供详细信息。请查看编辑后的答案。 非常感谢您的帮助!你太棒了:)【参考方案2】:

简短的回答:

Hive 是您数据分析的简单“首选”,因为它将使用熟悉的 SQL 语法。因此,前端分析工具有许多方便的连接器:Excel、Tableau、Pentaho、Datameer、SAS 等。

Pig 更多地用于传入 Hadoop 的数据的 ETL(转换)。在将数据存储到 Hive 之前,您的数据分析可能需要对数据进行一些“转换”。例如,您可以选择去除标题、应用来自其他来源的信息等。免费的Hortonworks sandbox tutorials 提供了一个很好的例子来说明这是如何工作的。

当您明确地在 hadoop (example) 之上寻找 NoSQL 存储时,HBase 更有价值。

【讨论】:

以上是关于使用 AWS Elastic MapReduce 获取时间序列数据的 Hive、HBase 和 Pig的主要内容,如果未能解决你的问题,请参考以下文章

Elastic MapReduce 中可用的 reducer

使用 Karmasphere Analyst 和 Amazon Elastic MapReduce 设置 jobconf 参数

大数据分析:结合 Hadoop或 Elastic MapReduce使用 Hunk

大数据分析:结合 Hadoop或 Elastic MapReduce使用 Hunk

Amazon Elastic MapReduce 中的容量调度程序

如何使用 Elastic beanstalk 和 Dockerrun.aws.json 正确部署到 AWS?