데이터분석 인프라 구축기 (1/4)

개요

호기심 반 필요 반으로 데이터 digging을 해보고 있다. 지금까지는 RDB로부터 쿼리만 날려서 엑셀로 챠팅(charting)해서 보다가 쿼리 뿐만 아니라 스크립팅 + 챠팅 + 리포트 등의 니즈도 생겨서 Jupyter로 넘어왔다. 그런데 CSV 같은 다른 데이터 소스도 늘어나고 개발팀 아닌 다른 부서에서도 이를 직접 분석하고 싶은 요구가 생기고 있다. 그래서 이번 기회에 만들어야 살겸 하둡 및 스팍 등을 활용해 데이터분석 스택을 구축해보기로 했다. 아래 주제들을 하나씩 쪼개서 포스팅 해보고자 한다.

Hadoop Source Compilation

그럼 일단 첫번째 포스팅으로 Hadoop을 컴파일하는 것부터 해보자. 아래 링크처럼 버전별로 Pre-built 이미지도 많을텐데 왜 빌드부터 하냐면.. 그냥 호기심.. 하둡의 컴파일 환경이 어떻게 되는지 어떤 패키지들을 참조하는지 등을 엿보고 싶었다.

https://www.apache.org/dist/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz

일단, 하둡을 소스로부터 컴파일하기 위해서는 java 컴파일 가능한 환경이 있어야한다. 거기에 protocol buffer, ssl 등 참조하고 있는 라이브러리 패키지들도 있어야한다. 이런걸 매번 설치할 수는 없으니 도커로 설정해두자.

아래 apt 패키지들은 컴파일 실패해가면서 그때그때 필요한 것 추가한 것이라 하나도 빠뜨리면 안된다. 또, 한가지 특이사항은 Hadoop 2.x 컴파일할때 반드시 libprotoc 2.5.0 버전이 필요하다는 점. 기본 패키지 버전이 2.6.1 로 다운그레이드(downgrade)가 필요하다.

FROM ubuntu:16.04
RUN apt-get update &&     \
apt-get install -y \
build-essential \
openjdk-8-jdk \
maven \
wget \
cmake \
make \
automake \
autoconf \
libprotobuf-dev \
protobuf-compiler \
pkg-config \
libssl-dev
RUN wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz && \
tar xvzf protobuf-2.5.0.tar.gz && \
cd protobuf-2.5.0 && \
./configure && \
make && \
make install && \
ldconfig
RUN cd / &&                  \
rm -rf protobuf-2.5.0 && \
rm protobuf-2.5.0.tar.gz
ADD compile_script.sh /root/
RUN chmod a+x /root/compile_script.sh
WORKDIR /root
ENTRYPOINT ["./compile_script.sh"]

전체 코드는 https://github.com/sangwonl/docker-hadoop-compiler 여기에.. 아래 명령으로 컴파일 완료하면 output 디렉토리에 빌드된 hadoop 파일이 생성됨.

$ docker run -v $(PWD)/output:/root/output run sangwonl/hadoop-compiler 2.7.2
$ ls ./output
hadoop-2.7.1.tar.gz