복붙노트

[HADOOP] '파일을 해결하는 방법은 hadoop에서 1 대신'0 노드에만 복제 할 수 있습니까? '

HADOOP

'파일을 해결하는 방법은 hadoop에서 1 대신'0 노드에만 복제 할 수 있습니까? '

웹 사이트를 크롤링하고 HDFS에 캐시하는 간단한 작업이 있습니다. 매퍼는 URL이 HDFS에 이미 있는지 확인하고, 그렇지 않은 경우 URL을 사용하여 페이지를 다운로드하고 HDFS에 저장합니다.

페이지를 다운로드하는 동안 네트워크 오류 (404 등)가 발생하면 URL은 완전히 건너 뛰고 HDFS에 기록되지 않습니다. ~ 1000 개의 웹 사이트를 실행할 때마다 필자는 가상 배포판에서 반복적으로 작업을 중단시키는이 오류가 발생하는 것 같습니다. 무엇이 문제 일 수 있습니까?

Hadoop 0.20.2-cdh3u3을 사용하고 있습니다.

org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/raj/cache/9b4edc6adab6f81d5bbb84fdabb82ac0 could only be replicated to 0 nodes, instead of 1
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1520)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:665)
    at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:557)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1434)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1430)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:416)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1157)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1428)

해결법

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

    1.문제는 파일 시스템에 입력을 캐싱하는 데 사용 된 매퍼의 닫히지 않은 FileSystem InputStream 인스턴스입니다.

    문제는 파일 시스템에 입력을 캐싱하는 데 사용 된 매퍼의 닫히지 않은 FileSystem InputStream 인스턴스입니다.

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

    2.소스를 보면 로컬 시스템 (또는 VM)의 공간을 확보 할 수 있습니다. 이 예외는 시스템이 복제를위한 충분한 노드를 찾을 수 없기 때문에 발생합니다. 노드를 선택하는 클래스는 ReplicationTargetChooser입니다.

    소스를 보면 로컬 시스템 (또는 VM)의 공간을 확보 할 수 있습니다. 이 예외는 시스템이 복제를위한 충분한 노드를 찾을 수 없기 때문에 발생합니다. 노드를 선택하는 클래스는 ReplicationTargetChooser입니다.

    http://javasourcecode.org/html/open-source/hadoop/hadoop-0.20.203.0/org/apache/hadoop/hdfs/server/namenode/ReplicationTargetChooser.java.html

    주요 메소드는 chooseTarget (줄 67)입니다. 코드로 들어가면 isGoodTarget 메쏘드로 들어가게됩니다.이 메쏘드는 노드에 충분한 공간이 있는지를 검사합니다 : 404 행. 디버그 로그를 활성화하면 관련 메시지가 표시됩니다.

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

    3.타임 스탬프와 일치하는 namenode 로그를 확인하십시오. IPC 문제에 대한 표시가 있으면 "xcievers"가 부족할 수 있습니다. 필자의 경우, hdfs-site.xml의 dfs.datanode.max.xcievers를 4096 또는 8192와 같이 큰 값으로 설정하면 해당 문제가 해결되었습니다.

    타임 스탬프와 일치하는 namenode 로그를 확인하십시오. IPC 문제에 대한 표시가 있으면 "xcievers"가 부족할 수 있습니다. 필자의 경우, hdfs-site.xml의 dfs.datanode.max.xcievers를 4096 또는 8192와 같이 큰 값으로 설정하면 해당 문제가 해결되었습니다.

  4. from https://stackoverflow.com/questions/9987033/how-to-resolve-file-could-only-be-replicated-to-0-nodes-instead-of-1-in-hadoo by cc-by-sa and MIT license