Hadoop 3.0.2 소스파일을 다운받아 빌드하는 과정을 다룬다.
[환경]
- virtualbox 사용
- OS : CentOS 7
- memory : 20GB
- disk : 20GB (처음에 10GB 잡았다가 디스크 FULL 됨)
[과정]
크게 다음과 같은 과정으로 진행한다.
- VirtualBox 만들기
- 하둡소스 다운 받기
- 하둡빌드에 필요한 것들 설치하기
- 하둡 빌드하기
- 테스트
그럼 하나씩 디테일하게 정리해보자
1. VirtualBox 만들기
2. 하둡 소스파일 다운 받기
# wget http://apache.mirror.cdnetworks.com/hadoop/common/hadoop-3.0.2/hadoop-3.0.2-src.tar.gz
# tar -xvzf hadoop-3.0.2-src.tar.gz
압축을 풀면, hadoop-3.0.2-src 디렉토리가 생긴다. 여기서 BUILDING.txt 파일을 보면 하둡빌드에 필요한 requirements 내용이 적혀있다. 그 내용에 따라 하둡빌드에 필요한 것들을 설치해보자!
3. 하둡빌드에 필요한 것들 설치하기
# yum list java*jdk-devel
# yum install java-1.8.0-openjdk-devel.x86_64
# wget http://apache.mirror.cdnetworks.com/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
# tar -xvzf apache-maven-3.6.0-bin.tar.gz
# yum list protobuf // 설치가능한 protobuf 버전 확인
# yum install protobuf
# yum install protobuf-compiler
- CMake 3.1 or newer (if compiling native code)
# yum install gcc-c++.x86_64 // cmake에 필요한 것들 설치
# wget https://github.com/Kitware/CMake/releases/download/v3.13.2/cmake-3.13.2.tar.gz
# tar -xvzf cmake-3.11.4-Linux-x86_64.tar.gz
# cd cmake-3.13.2
# ./bootstrap
# make
# make install
- Zlib devel (if compiling native code)
- openssl devel (if compiling native hadoop-pipes and to get the best HDFS encryption performance)
# yum install openssl-devel
- Node.js / bower / Ember-cli (for YARN UI v2 building)
# yum install epel-release //epel저장소 추가
# yum install nodejs
# npm install -g bower
# npm install -g ember-cli
4. 하둡 빌드하기
- 환경변수 설정 (/etc/profile 작성)
export M2_HOME=/opt/apache-maven-3.6.0
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
export CMAKE_HOME=/opt/cmake-3.13.2
export CMAKE=$CMAKE_HOME/bin:$CMAKE
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
export PATH=$PATH:$JAVA_HOME/bin
(참고) java_home 환경변수 설정
- javac 위치 확인
# which javac
/usr/bin/javac
- 실제 위치 확인
# readlink -f /usr/bin/javac
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/bin/javac
- java_home 환경변수 값
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
하둡소스파일 압축 풀어놓은 경로로 이동하여 수행한다.
# cd /opt/hadoop-3.0.2-src
# mvn package -Pdist -Pnative -DskipTests -Dtar -Dmaven.javadoc.skip=true
/opt/hadoop-3.0.2-src/hadoop-dist/target/hadoop-3.0.2 디렉토리가 생성됐는지 확인한다.
[테스트]
hadoop 홈디렉토리를 지정하고, 거기에 /opt/hadoop-3.0.2-src/hadoop-dist/target/hadoop-3.0.2 를 넣는다.
# mkdir /opt/hadoop
# cd /opt/hadoop-3.0.2-src/hadoop-dist/target/hadoop-3.0.2
# cp -rf ./ /opt/hadoop
우선 네임노드를 구동시키기 전, 최소한의 설정들을 해줘야 한다.
1) /opt/hadoop/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://10.10.10.82:9000</value>
</property>
</configuration>
2) /opt/hadoop/etc/hadoop/hdfs-site.xml
- 싱글노드 환경이므로 replication factor는 1로 설정한다.
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
- 네임노드와 데이터노드의 metadata를 저장할 경로를 설정한다.
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/NameNode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/DataNode</value>
</property>
# cd /opt/hadoop/bin
# ./hdfs namenode -format
# cd ../sbin
# ./hadoop-daemon.sh start namenode
# jps
//네임노드가 구동되는 걸 확인할 수 있다 !