복붙노트

[HADOOP] hadoop fs -ls 결과는 "no such file or directory"입니다.

HADOOP

hadoop fs -ls 결과는 "no such file or directory"입니다.

10 노드 클러스터에 Hadoop 2.5.2를 설치하고 구성했습니다. 1은 masternode 및 다른 노드를 slavenodes로 사용합니다.

hadoop fs 명령을 실행할 때 문제가 있습니다. hadoop fs -ls 명령은 HDFS URI와 잘 작동합니다. HDFS URI없이 사용하면 "ls :`. ': 메시지가 없습니다."

ubuntu@101-master:~$ hadoop fs -ls
15/01/30 17:03:49 WARN util.NativeCodeLoader: Unable to load native-hadoop 
ibrary for your platform... using builtin-java classes where applicable
ls: `.': No such file or directory
ubuntu@101-master:~$ 

반면 HDFS URI로 동일한 명령을 실행하는 경우

ubuntu@101-master:~$ hadoop fs -ls hdfs://101-master:50000/
15/01/30 17:14:31 WARN util.NativeCodeLoader: Unable to load native-hadoop      
library for your platform... using builtin-java classes where applicable
Found 3 items
drwxr-xr-x   - ubuntu supergroup          0 2015-01-28 12:07 hdfs://101-master:50000/hvision-data
-rw-r--r--   2 ubuntu supergroup   15512587 2015-01-28 11:50 hdfs://101-master:50000/testimage.seq
 drwxr-xr-x   - ubuntu supergroup          0 2015-01-30 17:03 hdfs://101-master:50000/wrodcount-in
 ubuntu@101-master:~$ 

이 동작으로 인해 MapReduce 프로그램에서 예외가 발생합니다. jarlib은 HDFS 파일 위치를 가리키는 반면, jarlib은 Hadoop 노드의 로컬 파일 시스템에 저장된 jar 파일을 참조합니다.

해결법

  1. ==============================

    1.보고있는 동작이 예상됩니다. hadoop fs 명령으로 작업 할 때 어떤 일이 벌어지고 있는지 설명해 드리겠습니다.

    보고있는 동작이 예상됩니다. hadoop fs 명령으로 작업 할 때 어떤 일이 벌어지고 있는지 설명해 드리겠습니다.

    명령 구문은 다음과 같습니다. hadoop fs -ls [경로]

    기본적으로, 위의 명령에 [경로]를 지정하지 않으면, hadoop은 hdfs에서 경로를 / home / [사용자 이름]으로 확장합니다. 여기서 [username]은 명령을 실행하는 linux 사용자 이름으로 대체됩니다.

    따라서이 명령을 실행할 때 :

    ubuntu@xad101-master:~$ hadoop fs -ls
    

    그 오류를보고있는 이유는 ls : '.'입니다 : hadoop이 / home / 우분투 경로를 찾고 있기 때문에 그러한 파일이나 디렉토리가 없습니다.이 경로가 hdfs에 존재하지 않는 것처럼 보입니다.

    이 명령을 사용하는 이유는 다음과 같습니다.

    ubuntu@101-master:~$ hadoop fs -ls hdfs://101-master:50000/
    

    [path]를 명시 적으로 지정했고 hdfs의 루트이기 때문에 작동합니다. 다음을 사용하여 동일한 작업을 수행 할 수도 있습니다.

    ubuntu@101-master:~$ hadoop fs -ls /
    

    자동으로 hdfs의 루트로 평가됩니다.

    희망, 이것은 hadoop fs -ls 명령을 실행하는 동안보고있는 동작을 지 웁니다.

    따라서 로컬 파일 시스템 경로를 지정하려면 file : /// url scheme을 사용하십시오.

  2. ==============================

    2.이것은 사용자의 누락 된 홈 디렉토리와 관련이 있습니다. 일단 로그인 한 사용자의 hdfs 아래에 홈 디렉토리를 만들면 매력과 같이 작동합니다.

    이것은 사용자의 누락 된 홈 디렉토리와 관련이 있습니다. 일단 로그인 한 사용자의 hdfs 아래에 홈 디렉토리를 만들면 매력과 같이 작동합니다.

    hdfs dfs -mkdir /user
    
    hdfs dfs -mkdir /user/{loggedin user}
    
    hdfs dfs -ls
    

    이 방법은 내 문제를 해결했습니다.

  3. ==============================

    3.Hadoop의 사용자 디렉토리는 (HDFS에서)

    Hadoop의 사용자 디렉토리는 (HDFS에서)

    /user/<your operational system user>
    

    이 오류 메시지가 나타나면 HDFS 내에 사용자 디렉토리를 아직 만들지 않았기 때문일 수 있습니다.

    용도

    hadoop fs -mkdir -p /user/<current o.p. user directory>
    

    현재 운영 체제 사용자가 무엇인지 확인하려면 다음을 사용하십시오.

    id -un
    

    hadoop fs -ls 작업을 시작해야합니다 ...

  4. ==============================

    4.직장에서 몇 가지 일이 있습니다. "jarlib은 HDFS 파일 위치를 참조합니다"에 기반하여 실제로 HDFS 경로가 fs.default.name으로 설정되어있는 것처럼 들리지만 실제로는 일반적인 설정입니다. 그래서 hadoop fs -ls를 타이핑 할 때, 실제로 HDFS를 들여다 보려고합니다. 현재 작업 디렉토리를 보면 hdfs : // 101-master : 50000 / user / 우분투와 같은 것이어야합니다. 오류 메시지는 불행히도 그 사실을 알려주지 않으므로 다소 혼란 스럽습니다. 그 전체 경로로 해석되었다. hadoop fs -mkdir / user / 우분투의 경우 hadoop fs -ls가 작동하기 시작해야합니다.

    직장에서 몇 가지 일이 있습니다. "jarlib은 HDFS 파일 위치를 참조합니다"에 기반하여 실제로 HDFS 경로가 fs.default.name으로 설정되어있는 것처럼 들리지만 실제로는 일반적인 설정입니다. 그래서 hadoop fs -ls를 타이핑 할 때, 실제로 HDFS를 들여다 보려고합니다. 현재 작업 디렉토리를 보면 hdfs : // 101-master : 50000 / user / 우분투와 같은 것이어야합니다. 오류 메시지는 불행히도 그 사실을 알려주지 않으므로 다소 혼란 스럽습니다. 그 전체 경로로 해석되었다. hadoop fs -mkdir / user / 우분투의 경우 hadoop fs -ls가 작동하기 시작해야합니다.

    이 문제는 "jarlib"문제와 관련이 없습니다. 로컬 파일 시스템에 명시 적으로 저장된 파일을 참조하려고 할 때마다 경로가 Hadoop의 경로 분석을 통과하는 경우 Hadoop이 로컬 파일 시스템을 참조하도록하려면 file : ///을 추가하기 만하면됩니다. 예 :

    hadoop fs -ls file:///tmp
    

    jar 파일 경로를 fille file : /// path / to / your / jarfile로 전달하면 제대로 작동합니다.

  5. ==============================

    5.WARN util.NativeCodeLoader : 네이티브 - hadoop 라이브러리를로드 할 수 없습니다. 플랫폼 ... 내장 Java 클래스 사용 (해당되는 경우)

    WARN util.NativeCodeLoader : 네이티브 - hadoop 라이브러리를로드 할 수 없습니다. 플랫폼 ... 내장 Java 클래스 사용 (해당되는 경우)

    이 오류는 .bashrc 파일에서이 명령을 사용하여 제거됩니다.

    export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/native"
    
    ------------------------------------------------------
    /usr/local/hadoop is location where hadoop is install
    -------------------------------------------------------
    
  6. from https://stackoverflow.com/questions/28241251/hadoop-fs-ls-results-in-no-such-file-or-directory by cc-by-sa and MIT license