出于各种原因,我正在使用AMI 2.4.11 / Hadoop 1.0.3在EMR上运行一些工作。我试图在我的工作之后通过添加额外的EMR步骤来清理HDFS。使用boto:
opacity
然而,它经常在EMR控制台中的stderr中没有任何内容。 为什么我感到困惑的是,如果我进入主节点并运行命令:
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])
成功显示0并显示已成功删除所有内容的消息。所有正常的hadoop命令似乎都有记录。有谁知道这是否有明显的原因?亚马逊分销问题?某些命令中没有记录的行为?
注意: 我在Hadoop 2中运行了其他工作,并记录在案:
hadoop dfs -rmr -skipTrash hdfs:/tmp
可以作为一个步骤和一个命令工作。
答案 0 :(得分:0)
我的解决方案通常是将所有内容升级到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']
)