在hadoop1.0.3中清除aws emr上hdfs的数据

jhdbpxl9  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(396)

出于各种原因,我正在使用ami2.4.11/hadoop1.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 正如人们所期望的那样,它既是一个步骤,又是一个命令。

dtcbnfnu

dtcbnfnu1#

我的解决方案通常是将所有内容升级到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']
        )

相关问题