1

我的用例:

我想通过 SQOOP 从 EC2 将大数据导入 Hive。Hive 中导入的数据将通过应用一些算法在 Hive 中进行处理,并生成一些结果(以表格形式,仅在 Hive 中)。并且生成的结果将仅通过 SQOOP 再次导出回 Ec2。

我是 Amazon Web Services 的新手,想在 AWS EMR 的帮助下实施这个用例。我已经在本地机器上实现了它。

我已经阅读了一些与 AWS EMR 相关的链接,用于启动实例以及 EMR 是什么、它是如何工作的等等......

我对 EMR 有一些疑问,例如:

1) EMR 使用 S3 Buckets,它保存输入和输出数据 Hadoop 处理(以对象的形式)。---> 我没有得到如何在 S3 上以对象的形式存储数据(我的数据将是文件)

2)如前所述,我已经在 J​​ava 中为我的用例实现了一项任务。因此,如果我创建程序的 JAR 并使用自定义 JAR 创建作业流。是否有可能像这样实现,还是需要为此做一些额外的事情?

3) 正如我在用例中所说,我想在 SQOOP 的帮助下将结果导出回 Ec2。EMR 是否支持 SQOOP?

--edited part 4) 此外,我将每天/每周从 SQL Server 导入我的数据,因为我在 SQL Server 中的数据每天/每周都会更新。如果我想在 S3 上导入该数据并将其提供给 Hive,那么我该怎么做?(因为 Hive 将其数据存储在 /user/hive/warehouse 目录下的 HDFS 上)。如何链接到 HDFS 中的 S3 和 /user/hive/warehouse 目录。

请尽快回复我您的答案。我想尽早做到这一点。

非常感谢。

4

3 回答 3

5

可以在 AWS EMR 上安装 Sqoop。您不需要使用 S3 来存储文件,而是可以使用本地(临时)HDFS。安装 Sqoop 后,您可以将数据与它一起导入 HDFS,在 HDFS 中运行计算,然后再次使用 Sqoop 导出数据。

这是我写的一篇关于如何在 AWS EMR 上安装 Sqoop 的文章: http ://blog.kylemulka.com/2012/04/how-to-install-sqoop-on-amazon-elastic-map-reduce-emr/

于 2012-04-24T02:35:29.677 回答
2

与我在 Hive 邮件列表中的回复相同:

要回答您的问题:

1) S3 术语使用“对象”一词,我相信他们有充分的理由说明原因,但对我们 Hive'ers 来说,S3 对象与存储在 S3 上的文件相同。文件的完整路径将是 Amazon 所称的 S3“密钥”,相应的值将是文件的内容,例如 s3://my_bucket/tables/log.txt 将是密钥和文件的实际内容将是 S3 对象。您可以使用 AWS Web 控制台创建存储桶并使用 S3cmd (http://s3tools.org/s3cmd) 等工具将数据放入 S3。

但是,您不一定需要使用 S3。S3 通常仅在您想要持久存储数据时使用。大多数人会将他们的输入日志/文件存储在 S3 上以进行 Hive 处理,并将最终聚合和结果存储在 S3 上以供将来检索。如果您只是暂时将一些数据加载到 Hive 中,对其进行处理并将其导出,则不必担心 S3。构成集群的节点具有构成 HDFS 的临时存储。你可以用那个。唯一的副作用是一旦终止集群,您将丢失 HDFS 中的所有数据。如果没问题,请不要担心 S3。

EMR 实例基本上是 EC2 实例,并对其进行了一些额外的设置。我认为在 EC2 和 EMR 实例之间传输数据应该很简单。如果您的数据存在于 EBS 卷中,您可以考虑添加一个 EMR 引导操作,将相同的 EBS 卷挂载到您的 EMR 实例上。如果您可以在没有所有花哨的安装业务的情况下做到这一点,那可能会更容易。

此外,请记住,跨 Amazon 数据中心的数据传输可能会产生成本,如果可能的话,您可能希望将 S3 存储桶、EMR 集群和 EC2 实例保持在同一区域。在同一区域内,不应该有任何额外的转移费用。

2) 是的,EMR 支持自定义 jar。您可以在创建集群时指定它们。这应该需要对您的 jar 本身进行最小的移植更改,因为它在 Hadoop 和 Hive 上运行,这与您安装本地集群的内容与 EMR 上安装的内容相同(好吧,足够接近)。

3) 带有 EMR 的 Sqoop 应该没问题。

参考资料: http: //mail-archives.apache.org/mod_mbox/hive-user/201204.mbox/%3CCAGif4YQv1RVSoLt+Yqn8C1jDN3ukLHZ_J+GMFDoPCbcXO7W2tw@mail.gmail.com%3E

于 2012-04-25T00:21:48.980 回答
0

@mark-grover 提到您可以将 s3:// 与 hdfs:// 互换使用,这并不完全准确。在某些情况下,您可能会使用 apache sqoop 中内置的 AWS EMR 和它抱怨的 import 命令;

ERROR tool.ImportTool: Imported Failed: Wrong FS: s3://<my bucket path>, expected: hdfs://ip-<private ip>.ap-southeast-2.compute.internal:8020

(我这里显然没有足够的代表发表评论,但可以回复 go figure)

于 2018-07-25T05:22:27.033 回答