Hadoop 바이너리 경로에서 winutils 바이너리를 찾지 못했습니다.


108

최신 hadoop-2.2 릴리스의 namenode를 시작하는 동안 다음 오류가 발생합니다. hadoop bin 폴더에서 winutils exe 파일을 찾지 못했습니다. 나는 아래 명령을 시도했다

$ bin/hdfs namenode -format
$ sbin/yarn-daemon.sh start resourcemanager

ERROR [main] util.Shell (Shell.java:getWinUtilsPath(303)) - Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
    at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.main(ResourceManager.java:863)


그 오류 메시지를 없애기 위해 -Dhadoop.home.dir을 의미있는 값으로 설정했습니다. 이제 (로컬 경로가 변수 이름으로 바뀜) : Hadoop 바이너리에서 $ {HADOOP_HOME} \ bin \ winutils.exe 실행 파일을 찾을 수 없습니다. 그리고 무엇을 추측하십시오. 변수를 설정해도 바이너리가 나타나지 않았습니다. 또한 응용 프로그램이 계속되는 것처럼 보이기 때문에 우선 순위 ERROR가 잘못되었습니다. 내 눈에는 Hadoop 2.2.0의 버그입니다.
Hiran

이것에 대한 (오늘 열려있는대로) jira가 있습니다> issues.apache.org/jira/browse/HADOOP-10051
René Nyffenegger


1
Prasad D의 답변을 수락하십시오. 그는 사용할 준비된 파일을 제공했습니다. 따라서 노력을 피합니다.
Kaushik Lele

답변:


96

간단한 솔루션 : 여기 에서 다운로드 하여$HADOOP_HOME/bin

( 출처 )

중요 업데이트 :

들어 하둡-2.6.0 당신은에서 바이너리 다운로드 할 수 있습니다 >> 디도 Barik 블로그 .

HADOOP_HOME추출 된 directory 를 가리킬 필요가있을뿐만 아니라 기본 libs (dll)를로드 [path]하기위한 시스템 속성도 제공해야합니다 -Djava.library.path=[path]\bin.


이것은 hdfs를 시작하는 데 도움이되지만 텍스트 파일을 hdfs에 넣으려고하면 스레드 "main"java.lang.UnsatisfiedLinkError : org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsBy teArray (II [BI [BIILjava / lang / String; JZ) V
Kaushik Lele

내 대답과 부분적으로 중복됩니다. 다운로드와 소스 모두 답변에서 언급했듯이 내 블로그의 링크입니다.
Abhijit

1
이것은 Hadoop 2.7.3에서도 작동하는 것으로 보입니다. 아니면 문제가 있습니까? 1) 위 페이지에서 다운로드하십시오. Hadoop 2.6 배포판을 제공하는 tar xfvz. 그런 다음 bin \ winutlis.exe를 2.73 \ bin 디렉터리에 복사합니다. 즉시 작동합니다. 지금까지는 적어도.
RichMeister 2010 년

28

Spark로 자체 포함 된 로컬 응용 프로그램을 실행할 때 (즉, spark-assembly-xxx-hadoopx.xxjar 또는 Maven 종속성을 프로젝트에 추가 한 후)이 문제에 직면하면 winutils.exe (다운로드 에서 여기 에) "C : \ \ 빈 winutil". 그런 다음 코드에 다음 행을 추가하여 winutils.exe를 hadoop 홈 디렉토리에 추가 할 수 있습니다.

System.setProperty("hadoop.home.dir", "c:\\\winutil\\\")

출처 : 여기를 클릭 하십시오


나를 위해 winutils 항목을 hadoop/bin/bin/. 따라서 binhadoop의 bin폴더 에 winutils 폴더를 복사하십시오 . ( HADOOP_HOMEENV에 설정되어있는 것은 바르)
holzkohlengrill

+1 디렉토리 경로에 너무 많은 슬래시가 있으므로 여기에 나 자신을 위해 남겨 System.setProperty("hadoop.home.dir", "c:\\winutil\\")
두겠습니다

27

Apache Hadoop 2.2.0 릴리스의 바이너리 배포를 직접 가져와 Microsoft Windows에서 실행하려고하면 ERROR util.Shell : Failed to find the winutils binary in the hadoop binary path.

Apache Hadoop 2.2.0 릴리스의 바이너리 배포에는 일부 Windows 기본 구성 요소 (예 : winutils.exe, hadoop.dll 등)가 포함되어 있지 않습니다. Windows에서 Hadoop을 실행하려면 필수 (선택 사항 아님)입니다.

그래서 당신은 hadoop의 소스 배포판 내부에있는 "BUILD.txt"파일에 따라 소스 코드로부터 hadoop의 Windows 네이티브 바이너리 배포판을 빌드해야합니다. 스크린 샷으로 단계별 가이드를 위해 다음 게시물을 따를 수도 있습니다.

Microsoft Windows OS에서 Apache Hadoop 2.2.0 빌드, 설치, 구성 및 실행

ERROR util. Shell : hadoop 바이너리 경로에서 winutils 바이너리를 찾지 못했습니다.


2
안녕 Abhijit. 자신의 지시를 따랐습니까? Hadoop은 Windows에서 지원되지 않습니다. 실제로 특정 버전의 Windows Server에서만 지원됩니다. 그것은 마이크로 소프트와 HortonWorks에 의해 매우 형편 없다.
javadba

2
그것은 2 년 전이었고 당시에는 매우 (매우!) 사실이었습니다. 저는 컨퍼런스에서 불과 2 주 전에 Hortonworks 엔지니어와 직접 확인했습니다.
javadba

18

java.io.IOException 문 : 실행 가능한 null \ bin \ winutils.exe를 찾을 수 없습니다.

환경 변수를 확장하거나 바꿀 때 null이 수신됨을 설명합니다. Common Package의 Shell.Java에 Source가 표시되면 HADOOP_HOME 변수가 설정되지 않고 그 대신 null이 수신되므로 오류가 발생합니다.

따라서 HADOOP_HOME을 적절히 설정하거나 변수 hadoop.home.dir 속성을 설정해야합니다.

도움이 되었기를 바랍니다.

감사합니다, Kamleshwar.


1
어떤 구성 파일에서 hadoop.home.dir 속성 (예 : hdfs-site.xml, core-site.xml)을 설정해야합니까?
Tushar Sarde 2014-08-21

4
System.setProperty ( "hadoop.home.dir", "C : \\ winutil \\"); 참조 : stackoverflow.com/a/33610936/3110474
Himanshu 반 다리

Windows를 사용하는 경우 경로를 값으로 쓸 때 이중 백 슬래시를 사용해야합니다.
rishirich

12

Winutils.exe는 SPARK에 대한 셸 명령을 실행하는 데 사용됩니다. Hadoop을 설치하지 않고 Spark를 실행해야하는 경우이 파일이 필요합니다.

단계는 다음과 같습니다.

  1. 다음 위치에서 winutils.exe를 다운로드하십시오. hadoop 2.7.1 https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin [참고 : 별도의 hadoop 버전을 사용하는 경우 위에서 언급 한 위치에서 GITHUB의 해당 hadoop 버전 폴더에있는 winutils.]

  2. 이제 C : \ 드라이브에 'winutils'폴더를 만듭니다. 이제 'winutils'폴더에 'bin'폴더를 만들고 해당 폴더에 winutils.exe를 복사합니다. 따라서 winutils.exe의 위치는 C : \ winutils \ bin \ winutils.exe가됩니다.

  3. 이제, 개방 환경 변수와 HADOOP_HOME = C로 설정 : \ winutils는 [주 : 추가하지 마십시오 \ 빈 에서 HADOOP_HOME 및 경로의 설정 HADOOP_HOME 할 필요]

문제가 해결되어야합니다 !!


11

Eclipse로 작업하는 동안이 문제가 발생했습니다. 제 경우에는 올바른 Hadoop 버전 (hadoop-2.5.0-cdh5.3.0.tgz)을 다운로드하고 내용을 추출하여 C 드라이브에 직접 넣었습니다. 그런 다음 나는 갔다

Eclipse-> 디버그 / 실행 구성-> 환경 (탭)-> 및 추가

변수 : HADOOP_HOME

값 : C : \ hadoop-2.5.0-cdh5.3.0



3

Pyspark에서 Pycharm을 사용하여 로컬 스파크 응용 프로그램을 실행하려면 아래 줄을 사용하십시오.

os.environ['HADOOP_HOME'] = "C:\\winutils"
print os.environ['HADOOP_HOME']

2

hadoop 관련 명령을 수행하려면 winutils.exe가 필요합니다. hadoop-common-2.2.0 zip 파일을 다운로드하십시오. winutils.exe는 bin 폴더에서 찾을 수 있습니다. zip 파일을 추출하고 로컬 hadoop / bin 폴더에 복사합니다.


2

나는 같은 문제에 직면했다. bin\HADOOP_HOME 경로에서 제거하면 문제가 해결되었습니다. HADOOP_HOME 변수의 경로는 다음과 같아야합니다.

C:\dev\hadoop2.6\

시스템을 다시 시작해야 할 수 있습니다. 제 경우에는 IDE를 다시 시작하는 것으로 충분했습니다.


2

문제를 해결하려면 Windows에서 HADOOP_HOME 변수를 설정하십시오 .

다음에서 답변을 찾을 수 있습니다 org/apache/hadoop/hadoop-common/2.2.0/hadoop-common-2.2.0-sources.jar!/org/apache/hadoop/util/Shell.java.

IOException from

  public static final String getQualifiedBinPath(String executable) 
  throws IOException {
    // construct hadoop bin path to the specified executable
    String fullExeName = HADOOP_HOME_DIR + File.separator + "bin" 
      + File.separator + executable;
    File exeFile = new File(fullExeName);
    if (!exeFile.exists()) {
      throw new IOException("Could not locate executable " + fullExeName
        + " in the Hadoop binaries.");
    }
    return exeFile.getCanonicalPath();
  }

HADOOP_HOME_DIR from

// first check the Dflag hadoop.home.dir with JVM scope
String home = System.getProperty("hadoop.home.dir");
// fall back to the system/user-global env variable
if (home == null) {
  home = System.getenv("HADOOP_HOME");
}


1

Windows에서 동일한 문제가 발생했습니다. 나는 그것을 고쳤다

  • 에서 hadoop-common-2.2.0-bin-master 다운로드 link 합니다 .
  • 환경 변수에 사용자 변수 HADOOP_HOME을 생성하고 hadoop-common bin 디렉토리의 경로를 값으로 지정합니다.
  • cmd에서 hadoop을 실행하여 확인할 수 있습니다.
  • IDE를 다시 시작하고 실행하십시오.

1

에서 (당신이 당신의 불꽃을 위해 구축되는 윈도우 다음 하둡 버전에 불꽃을 설치하는 경우 말) 다운로드 하둡 폴더의 버전을 원하는 우편으로 링크를.

원하는 디렉토리에 zip 압축을 풉니 다. 에 포함 된 모든 파일을 포함 하는 형식의 디렉토리 hadoop\bin( hadoop\bin원하는 경우 명시 적으로 이러한 디렉토리 구조 생성 )가 bin있어야합니다.bin다운로드 한 hadoop의 폴더에 . 여기에는 winutil.exe 외에도 hdfs.dll, hadoop.dll 등과 같은 많은 파일이 포함됩니다.

이제 환경 변수를 작성 HADOOP_HOME 하고로 설정합니다 <path-to-hadoop-folder>\hadoop. 그리고 추가 ;%HADOOP_HOME%\bin;PATH환경 변수.

"새 명령 프롬프트"를 열고 명령을 다시 실행하십시오.


이것은 나를 위해 일했으며 HADOOP_HOME이 bin 디렉토리 (부모가 아닌)를 가리키는 대안은 그렇지 않았습니다.
philwalk

0

"hbase-1.3.0"및 "hadoop-2.7.3"버전을 사용했습니다. HADOOP_HOME 환경 변수를 설정하고 HADOOP_HOME / bin 폴더에 'winutils.exe'파일을 복사하면 Windows OS에서 문제가 해결됩니다. HADOOP_HOME 환경을 hadoop의 설치 폴더로 설정해야합니다 (이 버전에서는 / bin 폴더가 필요하지 않음). 또한 Hbase 팀이 linux / unix env를 권장하기 때문에 크로스 플랫폼 도구 cygwin 을 사용하여 Linux OS 기능 (가능한 한)을 설정하는 것을 선호 했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.