1

我正在尝试在使用 python 的 AWS 平台上创建一个基本的 ETL。在 S3 存储桶(我们称之为“A”)中,我有很多原始日志文件,经过 gzip 压缩。我想要做的是定期(=数据管道)解压缩,由python脚本处理,该脚本将重新格式化每一行的结构,并将其输出到另一个S3存储桶(“B”),最好作为gzips源自 A 中相同 gzip 的相同日志文件,但这不是强制性的。

我编写了它需要做的python脚本(从stdin接收每一行)并输出到stdout(或stderr,如果一行无效。在这种情况下,我希望它被写入另一个桶, “C”)。

我正在摆弄数据管道,尝试运行一个 shell 命令作业,以及一个使用 python 脚本进行排序的 hive 作业。EMR 集群已创建、运行、完成,没有失败或错误,也没有创建日志,我不明白出了什么问题。另外,我希望在处理并写入目标或错误的日志存储桶后删除原始日志。

有没有人有这种配置的经验?和建议的话?

4

1 回答 1

0

您要做的第一件事是在 EMR 集群上设置“终止保护”,只要它由 Data Pipeline 启动。(这也可以编写脚本)。

然后您可以登录到“主实例”。这是在 EMR 集群详细信息下的“硬件”窗格下。(您也可以通过集群 ID 在 EC2 控制台中搜索)。

您还必须定义一个“密钥”,以便您可以通过 SSH 连接到主服务器。

登录到主服务器后,您可以在 /mnt/var/log/hadoop/steps/ 下查看日志 - 或 /mnt/var/lib/hadoop/.. 查看实际工件。您可以使用 HDFS utils 浏览 hdfs。

日志(如果它们被写入 stdout 或 stderr)已经移动到 S3。如果你想移动额外的文件,你必须编写一个脚本并使用'script-runner'运行它。您可以使用“s3distcp”复制大量文件。

于 2015-07-12T02:28:09.380 回答