압축만 홀랑 풀면 설치되는 hadoop 배포판에 포함된 기본 제공 네이티브 라이브러리는 32비트 리눅스 기준이므로,
64비트에서 뭔가 실행하면 아래와 같은 경고 메세지가 출력됨.
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
네이티브 라이브러리를 체크해보면 아래처럼 전부 false로 나올 것임.
(원래 hadoop이 설치된 디렉토리는 $HADOOP_HOME 이라고 가정함.)
[root@localhost]# $HADOOP_HOME/bin/hadoop checknative
15/03/17 11:36:00 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Native library checking:
hadoop: false
zlib: false
snappy: false
lz4: false
bzip2: false
openssl: false
15/03/17 11:36:01 INFO util.ExitUtil: Exiting with status 1
64비트에 맞는 네이티브 라이브러리를 사용하려면 따로 hadoop 소스를 받아서 빌드해야 함.
준비물
JDK
설치여부를 확인해보고 없으면 환경에 맞게 openjdk, openjdk-devel 설치.
yum install java-1.8.0-openjdk.x86_64
yum install java-1.8.0-openjdk-devel.x86_64
Protocol Buffers
https://github.com/google/protobuf
- 다운로드
버전간 호환이 안되므로 반드시 2.5.0으로 설치해야 함.
wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
- 설치
./configure --prefix=/usr
(prefix 없이 설치하면 /usr/local 아래에 설치되는데 LD_LIBRARY_PATH에 /usr/local/lib가 등록되어 있지 않으면 제대로 동작을 안함. 굳이 prefix 없이 설치하려면 /etc/ld.so.conf 파일에 /usr/local/lib가 있는지 확인하고 없으면 넣어준 다음 ldconfig 명령어로 갱신해 줄 것)
make
make check (이게 실패하면 잠재적으로 문제가 된다니 한 번 확인해 볼 것)
make install
- 설치확인
protoc --version
Snappy
https://code.google.com/p/snappy
- 다운로드
wget https://snappy.googlecode.com/files/snappy-1.1.1.tar.gz
- 설치
./configure --prefix=/usr
make
make install
기타 빌드에 필요한 것들
설치여부를 확인하고 설치해 줄 것.
centos 라면 yum install 해주면 됨.
참조: http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/NativeLibraries.html#Build
gcc, gcc-c++, cmake
autoconf, automake, libtool
zlib, zlib-devel,
bzip2, bzip2-devel
openssl, openssl-devel
Maven
- 다운로드
wget http://mirror.apache-kr.org/maven/maven-3/3.2.5/binaries/apache-maven-3.2.5-bin.tar.gz
- 설치
- 압축해제. 압축해제 후 나온 디렉토리를 $MAVEN_HOME 이라고 가정.
- 압축해제 후$MAVEN_HOME/bin 디렉토리를 PATH에 추가.
ex) /etc/profile이나 ~/.bash_profile 열어서 PATH=$PATH:~~~ 뒷부분에 :$MAVEN_HOME/bin 추가
- 설치확인
mvn --version
Hadoop 소스 빌드
- 다운로드
wget http://mirror.apache-kr.org/hadoop/common/hadoop-2.6.0/hadoop-2.6.0-src.tar.gz
- 빌드
- 압축해제. 압축해제 후 나온 디렉토리를 $HADOOP_SRC_HOME 이라고 가정.
- $HADOOP_SRC_HOME으로 이동한 후 아래 명령어 실행
mvn package -Pdist,native -DskipTests -Dtar -Dmaven.javadoc.skip=true -Dsnappy.prefix=$HADOOP_HOME/snappy -Drequire.snappy=true
컴파일 된 네이티브 라이브러리 복사
// 원본백업
[root@localhost]# mv $HADOOP_HOME/lib/native{,_old}
// 컴파일 된 네이티브 라이브러리 복사
[root@localhost]# cp -r $HADOOP_SRC_HOME/hadoop-dist/target/hadoop-2.6.0/lib/native $HADOOP_HOME/lib
// libsnappy 복사
[root@localhost]# cp /usr/lib/libsnappy.* $HADOOP_HOME/lib/native
빌드한 네이티브 라이브러리가 제대로 적용되었는지 체크.
[root@localhost]# $HADOOP_HOME/bin/hadoop checknative
15/03/17 13:02:22 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native
15/03/17 13:02:22 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
Native library checking:
hadoop: true $HADOOP_HOME/lib/native/libhadoop.so.1.0.0
zlib: true /usr/lib64/libz.so.1
snappy: true $HADOOP_HOME/lib/native/libsnappy.so.1
lz4: true revision:99
bzip2: true /usr/lib64/libbz2.so.1
openssl: true /usr/lib64/libcrypto.so
이제 hadoop 관련 뭔가 실행해도 native library 관련 경고 메세지가 나오지 않음.
'Hadoop' 카테고리의 다른 글
[Hadoop] MapReduce가 이상할 정도로 오래 걸리거나 실패할 경우 (Too many fetch-failures) (0) | 2015.03.20 |
---|---|
[Hadoop] balancer 대역폭 변경 (set balancer bandwidth) (0) | 2015.03.19 |
[Hadoop] 데이터노드 추가/삭제 (2) | 2015.03.10 |
[Hadoop] 사용가능한 메모리가 있는데 swap 사용량이 증가할 때 (swapped out even when there is free memory available) (0) | 2015.01.28 |
[Hadoop] Streaming Map/Reduce 시 input 파일(디렉토리) 지정하기 (0) | 2012.08.10 |