본문 바로가기

HADOOP

Hadoop 3.0.x build (CentOS 7)


Hadoop 3.0.2  소스파일을 다운받아 빌드하는 과정을 다룬다. 


[환경]

  • virtualbox 사용
  • OS : CentOS 7
  • memory : 20GB
  • disk : 20GB (처음에 10GB 잡았다가 디스크 FULL 됨)

[과정]

크게 다음과 같은 과정으로 진행한다.

  1. VirtualBox 만들기
  2. 하둡소스 다운 받기
  3. 하둡빌드에 필요한 것들 설치하기
  4. 하둡 빌드하기
  5. 테스트


그럼 하나씩 디테일하게 정리해보자

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. 하둡빌드에 필요한 것들 설치하기

  • JDK 1.8

# yum list java*jdk-devel

# yum install java-1.8.0-openjdk-devel.x86_64

  • Maven 3.3 or later

# 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

  • ProtocolBuffer 2.5.0

# 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)
# yum install zlib-devel
  • 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

  • 빌드 go!
하둡소스파일 압축 풀어놓은 경로로 이동하여 수행한다.
# 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_home 
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
9504 NameNode
9627 Jps

//네임노드가 구동되는 걸 확인할 수 있다 !