我已经能够使用elastic-mapreduce ruby库很好地启动工作流程。现在我有了一个实例,它在作业完成后仍然是“活动的”。我已经使用SSH登录到is,并希望启动另一个作业,但每次尝试都失败了,因为hadoop找不到输入文件。我已经尝试在本地和S3上存储输入文件。
如何在SSH会话中直接创建新的hadoop作业?
我尝试的错误如下:
(第一次尝试使用本地文件存储,这是我通过使用SFTP上传文件创建的)
hadoop jar hadoop-0.20-streaming.jar \
-input /home/hadoop/mystic/search_sets/test_sample.txt \
-output /home/hadoop/mystic/search_sets/test_sample_output.txt \
-mapper /home/hadoop/mystic/ctmp1_mapper.py \
-reducer /home/hadoop/mystic/ctmp1_reducer.py \
-file /home/hadoop/mystic/ctmp1_mapper.py \
-file /home/hadoop/mystic/ctmp1_reducer.py
11/10/04 22:33:57 ERROR streaming.StreamJob: Error Launching job :Input path does not exist: hdfs://ip-xx-xxx-xxx-xxx.us-west-1.compute.internal:9000/home/hadoop/mystic/search_sets/test_sample.txt(第二次尝试使用s3):
hadoop jar hadoop-0.20-streaming.jar \
-input s3n://xxxbucket1/test_sample.txt \
-output /home/hadoop/mystic/search_sets/test_sample_output.txt \
-mapper /home/hadoop/mystic/ctmp1_mapper.py \
-reducer /home/hadoop/mystic/ctmp1_reducer.py \
-file /home/hadoop/mystic/ctmp1_mapper.py \
-file /home/hadoop/mystic/ctmp1_reducer.py
11/10/04 22:26:45 ERROR streaming.StreamJob: Error Launching job : Input path does not exist: s3n://xxxbucket1/test_sample.txt发布于 2011-10-05 23:37:52
第一种是行不通的。Hadoop将在HDFS中查找该位置,而不是本地存储。如果使用file://前缀,它可能会起作用,如下所示:
-input file:///home/hadoop/mystic/search_sets/test_sample.txt不过,我从来没有在流输入中尝试过这种方法,即使它确实有效,也可能不是最好的主意。
第二个(S3)应该可以工作。我们一直都在这么做。确保该文件确实存在:
hadoop dfs -ls s3n://xxxbucket1/test_sample.txt或者,您可以将文件放在HDFS中并正常使用。然而,对于电子病历中的工作,我通常发现S3是最方便的。
https://stackoverflow.com/questions/7655056
复制相似问题