복붙노트

[HADOOP] Hadoop java.io.IOException : Mkdirs가 / some / path를 생성하지 못했습니다.

HADOOP

Hadoop java.io.IOException : Mkdirs가 / some / path를 생성하지 못했습니다.

내 작업을 실행하려고하면 다음과 같은 예외가 발생합니다.

Exception in thread "main" java.io.IOException: Mkdirs failed to create /some/path
    at org.apache.hadoop.util.RunJar.ensureDirectory(RunJar.java:106)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:150)

여기서 / some / path는 hadoop.tmp.dir입니다. 그러나 내가 / some / path에 dfs -ls cmd를 실행하면 그것이 존재하고 데이터 세트 파일이 존재한다는 것을 알 수 있습니다 (작업을 시작하기 전에 복사되었습니다). 또한 경로는 hadoop 구성에서 올바르게 정의됩니다. 모든 제안을 주시면 감사하겠습니다. 나는 0.21을 사용하고 있습니다.

해결법

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

    1.이것은 HDFS가 아니라 (작업 병을 풀기 위해) 생성되는 로컬 디스크의 파일입니다. 이 디렉토리를 mkdir 할 권한이 있는지 확인하십시오 (명령 행에서 시도하십시오).

    이것은 HDFS가 아니라 (작업 병을 풀기 위해) 생성되는 로컬 디스크의 파일입니다. 이 디렉토리를 mkdir 할 권한이 있는지 확인하십시오 (명령 행에서 시도하십시오).

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

    2.내 MacBook Air에서 CDH4 독립 실행 형 모드에서이 문제를 실행했습니다.

    내 MacBook Air에서 CDH4 독립 실행 형 모드에서이 문제를 실행했습니다.

    문제는 mahout 작업을 언 jarring 할 때 / tmp / hadoop-xxx / xxx / LICENSE 파일과 / tmp / hadoop-xxx / xxx / license 디렉토리가 대소 문자를 구분하지 않는 파일 시스템에서 작성되고 있다는 것입니다.

    필자는 다음과 같이 jar 파일에서 META-INF / LICENSE를 삭제하여이 문제를 해결할 수있었습니다.

    zip -d mahout-examples-0.6-cdh4.0.0-job.jar META-INF/LICENSE
    

    다음으로 확인했습니다.

    jar tvf mahout-examples-0.6-cdh4.0.0-job.jar | grep -i license
    

    희망이 도움이!

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

    3.문제는 OSX에 고유합니다. 이는 기본적으로 파일 시스템이 Mac에서는 대소 문자를 구분하지 않습니다 (대소 문자를 구분하지 않고 대소 문자를 구분하지 않음).

    문제는 OSX에 고유합니다. 이는 기본적으로 파일 시스템이 Mac에서는 대소 문자를 구분하지 않습니다 (대소 문자를 구분하지 않고 대소 문자를 구분하지 않음).

    이를 피하는 해킹 방법은 대소 문자를 구분하는 디스크 유틸리티를 사용하여 .dmg 디스크 이미지를 만들고 다음 이미지 (수퍼 유저)로 필요한 곳에이 이미지 (예 : hadoop.tmp.dir 또는 / tmp)를 마운트하는 것입니다.

    sudo hdiutil attach -mountpoint /tmp <my_image>.dmg
    

    도움이되기를 바랍니다.

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

    4.과거에이 문제가 여러 번 발생했는데, Mac 특정 문제라고 생각합니다. Maven을 사용하여 프로젝트를 빌드 했으므로 다음과 같이 Maven pom.xml에 라인을 추가하여이를 해결할 수있었습니다.

    과거에이 문제가 여러 번 발생했는데, Mac 특정 문제라고 생각합니다. Maven을 사용하여 프로젝트를 빌드 했으므로 다음과 같이 Maven pom.xml에 라인을 추가하여이를 해결할 수있었습니다.

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.0</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <transformers>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer">
                        </transformer>
                    </transformers>
                </configuration>
            </execution>
        </executions>
    </plugin>
    
  5. ==============================

    5.제 경우에는 Maven 프로젝트의 pom.xml에있는 코드 줄이 Mac에서 작동했습니다.

    제 경우에는 Maven 프로젝트의 pom.xml에있는 코드 줄이 Mac에서 작동했습니다.

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.0</version>
        <configuration>
          <shadedArtifactAttached>true</shadedArtifactAttached>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
              <configuration>
                <filters>
                  <filter>
                    <artifact>*:*</artifact>
                    <excludes>
                      <exclude>META-INF/*.SF</exclude>
                      <exclude>META-INF/*.DSA</exclude>
                      <exclude>META-INF/*.RSA</exclude>
                      <exclude>META-INF/LICENSE*</exclude>
                      <exclude>license/*</exclude>
                    </excludes>
                  </filter>
                </filters>
            </configuration>
          </execution>
        </executions>
      </plugin>
    
  6. ==============================

    6.필수 공간을 사용할 수 있는지 확인하십시오. 이 문제는 대부분 공간 문제로 인해 발생합니다.

    필수 공간을 사용할 수 있는지 확인하십시오. 이 문제는 대부분 공간 문제로 인해 발생합니다.

  7. ==============================

    7.MacOS Sierra를 사용하여 Mac에서 MapReduce 작업을 작성하는 동안이 같은 문제가 발생했습니다. 동일한 코드가 우분투 리눅스 (14.04 LTS 및 16.04 LTS)에서 문제없이 실행됩니다. MapReduce 배포판은 2.7.3이며, 단일 노드, 독립 실행 형 작업으로 구성되었습니다. 이 문제는 라이센스 파일을 META_INF 디렉토리에 복사하는 것과 관련이있는 것으로 보입니다. 내 문제는 변압기를 Maven Shade 플러그인 구성에 추가하여 해결되었습니다. 구체적으로는 ApacheLicenseResourceTransformer입니다.

    MacOS Sierra를 사용하여 Mac에서 MapReduce 작업을 작성하는 동안이 같은 문제가 발생했습니다. 동일한 코드가 우분투 리눅스 (14.04 LTS 및 16.04 LTS)에서 문제없이 실행됩니다. MapReduce 배포판은 2.7.3이며, 단일 노드, 독립 실행 형 작업으로 구성되었습니다. 이 문제는 라이센스 파일을 META_INF 디렉토리에 복사하는 것과 관련이있는 것으로 보입니다. 내 문제는 변압기를 Maven Shade 플러그인 구성에 추가하여 해결되었습니다. 구체적으로는 ApacheLicenseResourceTransformer입니다.

    다음은 섹션의 일부인 POM.xml의 관련 섹션입니다.

    <plugin>                                                                                                             <groupId>org.apache.maven.plugins</groupId>                                                                      
       <artifactId>maven-shade-plugin</artifactId>                                                                      
       <version>3.0.0</version>                                                                                         
       <executions>                                                                                                     
         <execution>                                                                                                    
           <phase>package</phase>                                                                                       
           <goals>                                                                                                      
             <goal>shade</goal>                                                                                         
           </goals>                                                                                                     
           <configuration>                                                                                              
             <transformers>                                                                                             
               <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">       
                 <mainClass>path.to.your.main.class.goes.here</mainClass>                                        
               </transformer>                                                                                           
               <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer">  
               </transformer>                                                                                           
             </transformers>                                                                                            
           </configuration>                                                                                             
         </execution>                                                                                                   
       </executions>                                                                                                    
     </plugin>  
    

    ManifestResourceTransformerto를 사용하여 MapReduce 작업의 기본 클래스를 지정합니다.

  8. ==============================

    8.제 경우에는 방금 "log_test.txt"파일의 이름을 변경했습니다.

    제 경우에는 방금 "log_test.txt"파일의 이름을 변경했습니다.

    OS (UBUNTU)가 동일한 이름의 폴더를 생성하려고 시도했기 때문입니다. "log_test.txt / __ results.json"

  9. from https://stackoverflow.com/questions/10522835/hadoop-java-io-ioexception-mkdirs-failed-to-create-some-path by cc-by-sa and MIT license