[Hadoop]Fedora 23 버전에서 Hadoop 2.7.1 설치하기(Install Hadoop 2.7.1 in Fedora 23)

프로그래밍 팁/Hadoop 2015. 11. 21. 10:37

 Fedora가 yum을 버리고 dnf를 사용하는 등 세세한 변화가 있어 이러한 환경에서 Hadoop을 설치하는 자세한 방법을 찾으면서 포스팅 해 보았습니다.


- 개발환경

운영체제 : Fedora 23

하둡 : Hadoop 2.7.1

ProtoBuffer : Protoc 2.5.0

JAVA : Java Development Kit 8


1. 시작하기에 앞서 dnf를 통해 아래의 프로그램드을 설치해주세요.


# dnf update

# dnf install gcc gcc-c++ automake kernel-devel openssl-devel cmake


2. 1.7+ 버전 이상의 Java를 설치합니다. 본 포스팅에서는 최신 버전의 JDK 8을 설치하였으며 Fedora 23의 경우 기본 설치된 JDK를 사용하시면 됩니다.


$ java -version



3. Maven 3.0 이상의 버전을 설치합니다. 본 포스팅에서는 Maven 3.3.9를 설치합니다.


# wget http://apache.tt.co.kr/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz

# tar -xzf apache-maven-3.3.9-bin.tar.gz

# mv apache-maven-3.3.9 /usr/local


4. ProtocolBuffer를 설치합니다. Hadoop 2.7.1의 경우 ProtocolBuffer 2.6.1을 설치해야 합니다.


# wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz

# tar -xzf protobuf-2.5.0.tar.gz

# mv protobuf-2.5.0 /usr/local/lib

# cd /usr/local/lib/protobuf-2.5.0

# ./configure

# make -j4

# make check

# make install

# make ldconfig


 5. Fedora에 기본으로 깔려있는ProtocolBuffer가 있다면 삭제 후 새로 설치한 ProtocolBuffer을 설정해줍니다.


# rm /usr/bin/protoc

# update-alternatives --install "/usr/bin/protoc" "protoc" "/usr/local/bin/protoc" 1

# protoc --version



6. bashrc 파일을 수정하여 설치한 Maven과 ProtocolBuffer를 사용할 수 있도록 설정합니다.


# vi ~/.bashrc


export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

export M2_HOME=/usr/local/apache-maven-3.3.9

export PATH=$M2_HOME/bin:$PATH


 

7. Hadoop 2.7.1을 다운로드 받은 후 압축을 풀어줍니다.


$ wget http://apache.mirror.cdnetworks.com/hadoop/common/hadoop-2.7.1/hadoop-2.7.1-src.tar.gz

$ tar -xzf hadoop-2.7.1-src.tar.gz

$ mv hadoop-2.7.1-src ~/

$ cd ~/hadoop-2.7.1-src


8. 이제 Hadoop을 컴파일 합니다. 컴파일 명령어는 아래와 같이 입력해줍니다.


# mvn clean package -Pdist,native -DskipTests -Dtar -Dmaven.javadoc.skip=true



 위의 화면과 같이 끝까지 수행하게 되면 Hadoop의 컴파일이 완료된 것입니다. 이제 Hadoop-dist 폴더를 확인하시면 컴파일된 Hadoop이 있는 것을 확인하실 수 있습니다.




 이제 컴파일된 Hadoop을 자신이 원하는 환경대로 구현을 하면 되겠습니다.

300x250

[Hadoop]JDK 8 버전에서 Hadoop 2.6.2 컴파일시 에러 해결방법

프로그래밍 팁/Hadoop 2015. 11. 19. 12:01

 버전이 높아질 수록 다양한 기능이 제공되기도 합니다만 때로는 호환성에 문제가 생겨 프로그램이 정상적으로 동작되지 않는 경우가 발생합니다. 아래와 같은 경우 Java Development Kit 8에서 hadoop을 컴파일하게 되었을 때 발생하는 에러입니다.


-개발환경

운영체제    : Ubuntu 12.04(64-bit)

하둡        : Hadoop 2.6.2

ProtoBuffer : Protoc 2.5.0

JAVA       : Java Development Kit 8


[INFO] Apache Hadoop Annotations ......................... FAILURE [4.086s]

---

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.8.1:jar (module-javadocs) on project hadoop-annotations: MavenReportException: Error while creating archive:

[ERROR] Exit code: 1 - C:\hadoop-src\hadoop-common-project\hadoop-annotations\sr

c\main\java\org\apache\hadoop\classification\InterfaceStability.java:27: error:

unexpected end tag: </ul>

[ERROR] * </ul>

[ERROR] ^

[ERROR]

[ERROR] Command line was: "C:\Program Files\Java\jdk1.8.0_05\jre\..\bin\javadoc.exe" -J-Dhttp.proxySet=true -J-Dhttp.proxyHost=proxy -J-Dhttp.proxyPort=3128 @op

tions @packages

[ERROR]

[ERROR] Refer to the generated Javadoc files in 'C:\hadoop-src\hadoop-common-project\hadoop-annotations\target' dir.

[ERROR] -> [Help 1]

[ERROR]

[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.

[ERROR] Re-run Maven using the -X switch to enable full debug logging.

[ERROR]

[ERROR] For more information about the errors and possible solutions, please read the following articles:

[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

[ERROR]


 위의 에러가 발생하는 이유는 Java Development Kit 8에서부터는 이전 버전에 비해 좀 더 엄격해져서 위의 태그 </ul>이 JDK8에서는 맞지 않아 에러를 발생시킨 경우 입니다. 이 경우 아래와 같이 명령어를 추가하면 간단하게 해결하실 수 있습니다.


$ mvn clean package -Pdist,native -DskipTests -Dtar -Dmaven.javadoc.skip=true


300x250

OpenCV 최신 버전에서 Python으로 SIFT, SURF 사용하기(Install OpenCV 3.0 in Ubuntu)

프로그래밍 팁 2015. 11. 18. 16:07

 최신 버전의 OpenCV 라이브러리를 사용하여 Python 환경에서 SIFT 알고리즘을 수행하려 해보았더니 아래와 같은 화면이 출력됩니다.




 OpenCV 3.0.0 버전 이후에는 이전 버전에서 사용할 수 있었던 일부 라이브러리의 사용이 제한되어 있습니다. 자주 사용되는 SIFT와 SURF 또한 이에 해당되어 OpenCV 최신 버전을 그대로 설치하면 이를 바로 사용할 수 없습니다. 최신 버전의 OpenCV에서 이를 사용하기 위해서는 opencv_contrib을 추가적으로 설정해 주어야 합니다.


 1. OpenCV 최신 버전을 설치하기 위해 아래의 프로그램들을 설치합니다.


$ sudo apt-get install build-essential cmake git pkg-config libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libatlas-base-dev gfortran python2.7-dev


 2. Python 2.X 버전을 설치합니다. 3.X 버전의 경우 동작이 되지 않는 경우가 종종 발생한다는 점을 유의하셔야 합니다. apt-get에서는 2.X 버전을 제공합니다.


$sudo apt-get install python


 3. Python 패키지 매니저인 pip를 설치합니다.


$ wget https://bootstrap.pypa.io/get-pip.py

$ sudo python get-pip.py


 4. 기존 Python OpenCV의 라이브러리와는 별도로 동작할 수 있게 하는 virtualenv와 virtualenvwrapper를 설치합니다.


$ sudo pip install virtualenv virtualenvwrapper


 5. 설치한 virtualenv와 virtualenvwrapper가 항상 수행될 수 있도록 bash를 수정합니다.


$ vi ~/.bashrc



 6. 수정한 bashrc를 바로 적용합니다.


$source ~/.bashrc


 7. 독립된 별도의 Python OpenCV 라이브러리 환경을 만들기 위한 가상 환경을 생성합니다.


$mkvirtualenv cv


 8. 최신 버전의 OpenCV 버전을 다운로드 받아 OpenCV 폴더에 압축을 풉니다.


http://opencv.org/downloads.html


 또는 Github를 통해 최신 버전의 OpenCV 소스코드를 다운로드 받습니다.


$ cd ~

$ git clone https://github.com/Itseez/opencv.git

$ cd opencv

$ git checkout 3.0.0


 9. 이전 버전의 OpenCV 라이브러리를 사용할 수 있도록 해주는 opencv_contrib를 다운로드 받습니다.


$ cd ~

$ git clone https://github.com/Itseez/opencv_contrib.git

$ cd opencv_contrib

$ git checkout 3.0.0


 10. 이제 본격적으로 OpenCV 라이브러리를 설치해 보도록 합니다. 아래와 같이 cmake를 통해 Makefile을 구성합니다. 이 과정에서 위에서 받은 opencv_contrib을 설정해줍니다.


$ cd ~/opencv

$ mkdir build

$ cd build

$ cmake -D CMAKE_BUILD_TYPE=RELEASE \

-D CMAKE_INSTALL_PREFIX=/usr/local \

-D INSTALL_C_EXAMPLES=ON \

-D INSTALL_PYTHON_EXAMPLES=ON \

-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \

-D BUILD_EXAMPLES=ON ..


 11. 구성요소를 컴파일한 다음 자신의 환경에서 만든 OpenCV를 설치합니다.


$make -j4

$sudo make install

$sudo make ldconfig


 12. OpenCV 설치가 완료되면 이를 Python에서 사용할 수 있도록 Sym-link를 추가해 줍니다.


$ cd ~/.virtualenvs/cv/lib/python2.7/site-packages/

$ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so


 13. 이로서 OpenCV의 설치가 완료되었습니다. cv2 라이브러리를 불러오는 것으로 실행을 확인해 봅니다.


>>> import cv2

>>> cv2.__version__



 위와 같이 자신이 설치한 OpenCV 버전이 나오면 설치는 성공한 것입니다! 이제 SIFT가 실행이 잘 되는지 확인해 보도록 합니다!


 아래 이미지에 대한 SIFT 연산을 수행하는 프로그램을 작성해 보겠습니다.



1
2
3
4
5
6
7
8
9
10
11
import cv2
import numpy as np
 
img = cv2.imread('elecs.png')
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
 
sift = cv2.xfeatures2d.SIFT_create()
kp = sift.detect(gray,None)
 
cv2.drawKeypoints(gray,kp,img,flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imwrite('sift_elecs.jpg',img)
cs


- 결과




 -참고자료

http://www.pyimagesearch.com/2015/06/22/install-opencv-3-0-and-python-2-7-on-ubuntu/

http://www.flowdas.com/blog/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-virtualenv/


300x250