오류: [cat: 파일이 존재하지 않습니다.] 14.04에서 hadoop 출력 파일을 열 수 없습니다.

오류: [cat: 파일이 존재하지 않습니다.] 14.04에서 hadoop 출력 파일을 열 수 없습니다.

내 시스템(14.04)에 hadoop-1.0.3을 설치했습니다.이 튜토리얼.

그리고 다음과 같이 단어 수에 대한 샘플 mapreduce 프로그램을 성공적으로 실행했습니다.

hadoopuser@arul-PC:/usr/local/hadoop$ bin/hadoop jar hadoop*examples*.jar wordcount /user/hadoopuser/SampleData /user/hadoopuser/SampleOutput
14/06/17 15:25:45 INFO input.FileInputFormat: Total input paths to process : 3
14/06/17 15:25:45 INFO util.NativeCodeLoader: Loaded the native-hadoop library
14/06/17 15:25:45 WARN snappy.LoadSnappy: Snappy native library not loaded
14/06/17 15:25:45 INFO mapred.JobClient: Running job: job_201406171444_0002
14/06/17 15:25:46 INFO mapred.JobClient:  map 0% reduce 0%
14/06/17 15:26:04 INFO mapred.JobClient:  map 66% reduce 0%
14/06/17 15:26:13 INFO mapred.JobClient:  map 100% reduce 0%
14/06/17 15:26:16 INFO mapred.JobClient:  map 100% reduce 22%
14/06/17 15:26:28 INFO mapred.JobClient:  map 100% reduce 100%
14/06/17 15:26:33 INFO mapred.JobClient: Job complete: job_201406171444_0002
14/06/17 15:26:33 INFO mapred.JobClient: Counters: 29
14/06/17 15:26:33 INFO mapred.JobClient:   Job Counters 
14/06/17 15:26:33 INFO mapred.JobClient:     Launched reduce tasks=1
14/06/17 15:26:33 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=33037
14/06/17 15:26:33 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
14/06/17 15:26:33 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
14/06/17 15:26:33 INFO mapred.JobClient:     Launched map tasks=3
14/06/17 15:26:33 INFO mapred.JobClient:     Data-local map tasks=3
14/06/17 15:26:33 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=21208
14/06/17 15:26:33 INFO mapred.JobClient:   File Output Format Counters 
14/06/17 15:26:33 INFO mapred.JobClient:     Bytes Written=880838
14/06/17 15:26:33 INFO mapred.JobClient:   FileSystemCounters
14/06/17 15:26:33 INFO mapred.JobClient:     FILE_BYTES_READ=2214875
14/06/17 15:26:33 INFO mapred.JobClient:     HDFS_BYTES_READ=3671899
14/06/17 15:26:33 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=3775759
14/06/17 15:26:33 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=880838
14/06/17 15:26:33 INFO mapred.JobClient:   File Input Format Counters 
14/06/17 15:26:33 INFO mapred.JobClient:     Bytes Read=3671523
14/06/17 15:26:33 INFO mapred.JobClient:   Map-Reduce Framework
14/06/17 15:26:33 INFO mapred.JobClient:     Map output materialized bytes=1474367
14/06/17 15:26:33 INFO mapred.JobClient:     Map input records=77931
14/06/17 15:26:33 INFO mapred.JobClient:     Reduce shuffle bytes=1207341
14/06/17 15:26:33 INFO mapred.JobClient:     Spilled Records=255966
14/06/17 15:26:33 INFO mapred.JobClient:     Map output bytes=6076101
14/06/17 15:26:33 INFO mapred.JobClient:     Total committed heap usage (bytes)=517210112
14/06/17 15:26:33 INFO mapred.JobClient:     CPU time spent (ms)=11530
14/06/17 15:26:33 INFO mapred.JobClient:     Combine input records=629172
14/06/17 15:26:33 INFO mapred.JobClient:     SPLIT_RAW_BYTES=376
14/06/17 15:26:33 INFO mapred.JobClient:     Reduce input records=102324
14/06/17 15:26:33 INFO mapred.JobClient:     Reduce input groups=82335
14/06/17 15:26:33 INFO mapred.JobClient:     Combine output records=102324
14/06/17 15:26:33 INFO mapred.JobClient:     Physical memory (bytes) snapshot=589725696
14/06/17 15:26:33 INFO mapred.JobClient:     Reduce output records=82335
14/06/17 15:26:33 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=1862012928
14/06/17 15:26:33 INFO mapred.JobClient:     Map output records=629172

출력 파일을 확인하면 출력 폴더에 존재합니다.

hadoopuser@arul-PC:/usr/local/hadoop$ bin/hadoop dfs -ls /user/hadoopuser/SampleOutput
Found 3 items
-rw-r--r--   1 hadoopuser supergroup          0 2014-06-17 15:26 /user/hadoopuser/SampleOutput/_SUCCESS
drwxr-xr-x   - hadoopuser supergroup          0 2014-06-17 15:25 /user/hadoopuser/SampleOutput/_logs

-rw-r--r-- 1 hadoopuser 슈퍼 그룹 880838 2014-06-17 15:26 /user/hadoopuser/SampleOutput/part-r-00000

다음 명령을 사용하여 열려고했습니다.

hadoopuser@avvenire-PC:/usr/local/hadoop$ bin/hadoop dfs -cat /user/hadoopuser/SampleOutput/part-r-0000

그러나 나는 다음과 같은 결과를 얻고 있습니다.

cat: File does not exist: /user/hadoopuser/SampleOutput/part-r-0000

나에게 해결책을 제공해주십시오. 미리 감사드립니다.

답변1

파일 이름을 확인하세요. 0은 4가 아니라 5개입니다.

bin/hadoop dfs -cat /user/hadoopuser/SampleOutput/part-r-00000

답변2

그래서 나는 답변이 이미 승인되었다는 것을 알고 있지만, 그 문제가 나에게 일어났을 때 해결책은 다음과 같습니다(다른 사람이 이 스레드를 볼 경우를 대비해).


TLDR; hadoop 디렉토리에 충돌하는 폴더 이름이 없는지 확인하십시오(나의 경우 /usr/local/hadoop이었습니다).

출력을 생성할 때 출력/이라는 폴더에 넣었지만 이 프로그램 이전에는 출력에도 쓰는 또 다른 폴더가 있었고 출력 데이터를 특별히 내 hadoop 디렉터리의 출력이라는 폴더에 저장했습니다. 를 실행할 때 해당 폴더가 표시되지 않았음에도 불구하고 bin/hadoop fs -ls명령이 bin/hadoop fs -cat output/*실제로 방금 실행한 프로그램의 출력 대신 이전에 생성한 폴더에서 검색하고 있었기 때문에 이로 인해 문제가 발생했습니다. 를 사용하여 해당 출력 디렉터리를 삭제한 후 rm -rf output/문제가 사라졌습니다.

관련 정보