从 Hadoop 1.0.3 中 AWS EMR 上的 HDFS 清除数据

Posted

技术标签:

【中文标题】从 Hadoop 1.0.3 中 AWS EMR 上的 HDFS 清除数据【英文标题】:Clear data from HDFS on AWS EMR in Hadoop 1.0.3 【发布时间】:2017-08-07 14:07:12 【问题描述】:

由于各种原因,我正在使用 AMI 2.4.11/Hadoop 1.0.3 在 EMR 上运行一些作业。我试图通过添加一个额外的 EMR 步骤在我的工作之后运行 HDFS 的清理。使用 boto:

    step = JarStep(
        'HDFS cleanup',
        'command-runner.jar',
        action_on_failure='CONTINUE',
        step_args=['hadoop', 'dfs', '-rmr', '-skipTrash', 'hdfs:/tmp'])
    emr_conn.add_jobflow_steps(cluster_id, [step])

但是,它经常失败,在 EMR 控制台中的 stderr 中没有任何内容。 为什么我很困惑是如果我 ssh 进入主节点并运行命令:

hadoop dfs -rmr -skipTrash hdfs:/tmp

它以 0 成功,并显示它已成功删除所有内容的消息。所有正常的 hadoop 命令似乎都按记录工作。有谁知道这是否有明显的原因?亚马逊分销有问题吗?某些命令中的未记录行为?

注意: 我在 Hadoop 2 中运行了其他作业,并且记录在案:

hdfs dfs -rm -r -skipTrash hdfs:/tmp

作为一个步骤和一个命令都可以正常工作。

【问题讨论】:

【参考方案1】:

我的解决方案通常是把所有东西都升级到 Hadoop2,在这种情况下这可行:

        JarStep(
            '%s: HDFS cleanup' % self.job_name,
            'command-runner.jar',
            action_on_failure='CONTINUE',
            step_args=['hdfs', 'dfs', '-rm', '-r', '-skipTrash', path]
        )

这是我能用 Hadoop1 获得的最好的结果。

        JarStep(
            '%s: HDFS cleanup' % self.job_name,
            'command-runner.jar',
            action_on_failure='CONTINUE',
            step_args=['hadoop', 'fs', '-rmr', '-skipTrash',
                       'hdfs:/tmp/mrjob']
        )

【讨论】:

以上是关于从 Hadoop 1.0.3 中 AWS EMR 上的 HDFS 清除数据的主要内容,如果未能解决你的问题,请参考以下文章

[AWS][大数据][Hadoop] 使用EMR做大数据分析

AWS EMR 文件已存在:Hadoop 作业读取和写入 S3

在 AWS EMR 上的 PySpark 脚本上找不到 com.amazon.ws.emr.hadoop.fs.EmrFileSystem

AWS EMR kerberizing 集群 hadoop.security.AccessControlException

避免在 S3 中使用 hadoop (EMR) 创建 _$folder$ 键

通过AWS EMR降低集群计算成本