문제 상황 요약
C:\\Users\\사용자명>python C:\\Users\\사용자명\\Desktop\\python\\main.py
24/09/23 15:40:22 WARN Shell: Did not find winutils.exe: java.io.FileNotFoundException: Hadoop bin directory does not exist: C:\\Program Files\\Hadoop\\bin -see <https://wiki.apache.org/hadoop/WindowsProblems>
로컬에 하둡을 설치한게아니라 도커에 깔아서 winutils이 필요한가? 라는 생각을 하게 되었고, 더 알아보기 위해 글을 작성하게 되었습니다.
해결 방법
제가 프로젝트를 했을 당시는, Spark가 로컬 파일(파이썬) 시스템에 접근해야 하는 경우이므로 winutils이 필요했습니다.
따라서 코드에 하둡 버전에 맞는 winutils을 설치후 경로를 설정해줍니다.
C:\Program Files\Hadoop\bin 에 설치를 해주고 , 시스템 환경변수 설정을 통해 hadoop home과 path를 등록하고, 파이썬에도 이 코드를 추가하며 해결하였습니다.
import os
os.environ['HADOOP_HOME'] = r'C:\\Program Files\\Hadoop' # winutils.exe가 있는 폴더 경로
os.environ['PATH'] = r'C:\\path\\to\\winutils;' + os.environ['PATH']
winutils.exe의 주요 역할
- 파일 시스템 접근 권한 설정:
- Hadoop은 파일 시스템 접근 시 권한을 확인합니다. 리눅스에서는 chmod, chown 같은 명령어를 통해 권한을 설정할 수 있지만, Windows에는 이러한 명령어가 없습니다. winutils.exe는 이러한 명령어를 에뮬레이션하여 Hadoop이 Windows에서 올바르게 작동하도록 돕습니다.
- Hadoop 임시 디렉토리 생성 및 관리:
- Hadoop은 작업 중 임시 디렉토리를 생성하고 관리하는데, 이 과정에서 특정 권한이 필요합니다. winutils.exe는 이러한 임시 디렉토리 생성 및 권한 관리 작업을 Windows에서 수행할 수 있게 해줍니다.
- Hadoop과 Spark 오류 방지:
- Windows 환경에서 winutils.exe가 없을 경우, 권한 오류나 임시 디렉토리 관련 오류가 발생할 수 있습니다. winutils.exe는 이러한 오류를 방지하여 Hadoop과 Spark 작업이 Windows에서 원활하게 실행되도록 합니다.
'트러블슈팅' 카테고리의 다른 글
Hadoop ssh 포트 거부 (1) | 2025.02.06 |
---|---|
apt 업데이트 및 패키지 설치 오류 해결 (도커 Debian Stretch 컨테이너) / nano 설치 오류 (1) | 2025.01.13 |
호스트 시스템의 "host.docker.internal" 인식불가 (2) | 2025.01.06 |
VScode 파이썬 Python 버전/ 비트 변경 적용 안 될 때 (0) | 2025.01.06 |