본문 바로가기
개발 공부/Spark, Hadoop

[Spark][Hadoop] Windows 환경에서 실행시 오류 해결 (winutils.exe 다운로드 파일 및 링크)

by momo'sdad 2023. 11. 13.

Spark, Hadoop(스파크, 하둡) Windows 환경에서 실행시 오류 해결 

 윈도우 환경에서 스파크를 실행시 이런 에러들을 맞딱 뜨릴 것이다.

 

Error1 : ERROR org.apache.hadoop.util.Shell - 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.

ERROR org.apache.hadoop.util.Shell - 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.(Shell.java:293)
    at org.apache.hadoop.util.StringUtils.(StringUtils.java:76)
    at org.apache.hadoop.conf.Configuration.getStrings(Configuration.java:1514)
    at org.apache.hadoop.hbase.zookeeper.ZKConfig.makeZKProps(ZKConfig.java:113)
    at org.apache.hadoop.hbase.zookeeper.ZKServerTool.main(ZKServerTool.java:46)

 

Error2 : java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:382)
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:397)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:390)
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:80)
    at org.apache.hadoop.security.SecurityUtil.getAuthenticationMethod(SecurityUtil.java:611)
    at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:274)
    at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:262)
    at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:807)
    at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:777)
    at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:650)
    at org.apache.spark.util.Utils$.$anonfun$getCurrentUserName$1(Utils.scala:2412)
    at scala.Option.getOrElse(Option.scala:189)
    at org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2412)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:303)
    at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2555)
    at org.apache.spark.sql.SparkSession$Builder.$anonfun$getOrCreate$1(SparkSession.scala:930)
    at scala.Option.getOrElse(Option.scala:189)
    at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:921)
    at com.tutorial.spark.SimpleApp.main(SimpleApp.java:10)

 

원인

환경변수 HADOOP_HOME 경로가 세팅되어 있지않았고 그 경로에 Winutils.exe 파일이 없었다.

 

해결방법

 

1. HADOOP_HOME 환경변수 세팅(시스템 환경 변수 편집)

1. 아래 검색란에 '시스템 환경 변수 편집'을 입력하거나

[window]키 + Q 버튼을 눌러 '시스템 환경 변수 편집'을 입력한다.

 

2. 환경변수를 클릭한다.

 

3. 새로 만들기를 클릭한다.

 

4. 변수 이름과 변수 값에 위와 같이

HADOOP_HOME과 자신의 드라이브와 hadoop폴더를

C:\hadoop와 같이 입력한다.

(SPARK_HOME이 설정이 안됐다

HADOOP_HOME , SPARK_HOME에 path 에서 

%HADOOP_HOME%\bin%SPARK_HOME%\bin 으로 path 경로를 잡아주자 )

 

5. HADOOP_HOME 사용자 변수와 값을 확인하고 확인을 누른다.

 

1. HADOOP_HOME 환경변수 세팅(cmd/명령 프롬프트)

1. 아래 검색란에 명령프롬프트을 입력하거나 cmd를 입력하거나

CTRL + R (실행)를 누르고 cmd를 입력한 후

관리자 권한으로 CMD 또는 PowerShell 실행

 

2.

사용자 환경변수 등록 방

setx 변수명 "경로"

ex) setx HADOOP_HOME " C:\hadoop "

시스템 환경변수 등록 방법

setx /m 변수명 "경로"

ex) setx /m HADOOP_HOME " C:\hadoop "

 

명령 프롬프트를 열고 "C:\Hadoop\bin\winutils.exe chmod 777 /tmp/hive" 명령어를 실행

 

3. 관리자 권한으로 실행한 명령 프롬프트에서 bin\spark-shell을 실행

 

2. winutils.exe 다운로드 및 C:\Hadoop\bin 경로에 세팅

winutils.exe를 다운로드 한다.

 

아래 wintils.exe를 첨부파일과 다운로드 링크이다

 

첨부파일:

winutils.exe
0.10MB

 

 

 

winutils.exe 다운로드 링크:

https://github.com/steveloughran/winutils/blob/master/hadoop-2.7.1/bin/winutils.exe

 

다운로드한 winutil.exe파일을 

C:\hadoop\bin 경로에 winutils.exe를 옮긴다.

hadoop폴더 안에 bin폴더가 없다면 새폴더를 만들어 bin으로 바꿔준다.

 

이제 HADOOP/HOME 디렉토리가 잡히고

에러가 발생하지 않고 스파크가 실행된다!

 

반응형