본문 바로가기
Old Posts/Hadoop

[Hadoop] 'Unable to load native-hadoop library for your platform' 에러

by A6K 2021. 5. 12.

하둡 클라이언트를 통해서 데이터노드(Datanode)에 있는 데이터를 읽다보면 로그 파일에 다음과 같은 에러가 찍혀있는 경우가 있다.

Unable to load native-hadoop library for your platform

ShortCircuit Read라는 기능의 코드리뷰를 하다가 원격 디버거로 들여다볼라고 돌렸는데 이런 에러가 발생했었다. 에러 메시지의 내용은 libhadoop 라이브러리가 로드되지 않았다는 의미다.

하둡 클라이언트의 동작에는 문제가 없다. 다만 ShortCircuit Read 기능이 제대로 돌지 않기 때문에 성능 저하가 발생한다.

해결방법

이 문제를 해결하기 위해 libhadoop 라이브러리를 제대로 로드할 수 있도록 설정을 변경해줘야한다.

일반적으로 libhadoop.so 파일은 $HADOOP_HOME/lib/native 디렉토리에 위치하고 있다. 이 경로를 자바 프로그램 구동시 참조할 수 있도록 설정을 해줘야한다. LD_LIBRARY_PATH라는 환경변수에 libhadoop.so 파일의 경로를 추가해주면 된다.

(같이 읽으면 좋은글 : [Java] java.library.path와 LD_LIBRARY_PATH)

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native

libhadoop.so 파일이 설치된 위치가 다른 곳이라면 그 경로를 설정해주면 된다.

.bashrc 파일과 hadoop-env.sh 파일에 이 설정을 추가해주고, 다시 프로그램을 구동하면 'Unable to load native-hadoop library for your platform' 에러가 사라지게 된다.

댓글