'대전 SSM 24-1기' 카테고리의 다른 글
[공고] 15년 상반기 삼성전자 SW멤버십 회원 모집 공고 (0) | 2014.09.26 |
---|---|
[공모전] 2014 웨어러블 컴퓨터 경진대회 (0) | 2014.05.14 |
[알고리즘 공부] A등급으로 올라가보자! (0) | 2014.04.08 |
삼성소프트웨어멤버십 2014년 하반기 신입회원 모집 (0) | 2014.03.16 |
SIG? (0) | 2014.03.09 |
[공고] 15년 상반기 삼성전자 SW멤버십 회원 모집 공고 (0) | 2014.09.26 |
---|---|
[공모전] 2014 웨어러블 컴퓨터 경진대회 (0) | 2014.05.14 |
[알고리즘 공부] A등급으로 올라가보자! (0) | 2014.04.08 |
삼성소프트웨어멤버십 2014년 하반기 신입회원 모집 (0) | 2014.03.16 |
SIG? (0) | 2014.03.09 |
Color Scripter는 다양한 언어의 코드를 하이라이트해 HTML 텍스트로 복사해주는 유틸리티입니다.
저도 얼마전까지는 'SyntaxHighlighter'를 썼었는데요..
제가 사용법을 잘 모르는건지, 원래 그렇게 해야 되는 건지는 모르겠지만
html 코드를 이용하여 소스를 적는 것이다 보니 '<', '>'를 그냥 쓰게 되면은 이것을 자동으로 html의 태그로 인식해버려서 #include <iostream> 뒤에 </iostream>이 붙어버리더군요..
그렇기 때문에 제가 전에 올린 'SyntaxHighlighter' 포스팅을 보시면 아시겠지만..
2014/02/10 - [끄적끄적] - 티스토리에 프로그래밍 소스 코드 넣기 (HTML 양식) 'SyntaxHighlighter'
<와 >를 각각 < 와 >로 일일히 바꿔줘야 한다는 불편함이 있습니다.
혹시나 SyntaxHighlighter를 계속 쓰시겠다고 하시는 분들 중에서 일일이 치환히기가 불편한 경우 변환을 커니님께서 만드신 변환툴을 이용하시면 될 것 같습니다. (링크 : 커니님 블로그) (다운로드 : 커니님의 변환 툴 다운로드)
공식 홈페이지 : http://prev.kr/apps/ColorScripter
color scripter의 경우 설치해서 사용하는 것과 설치없이 바로 웹에서 사용할 수 있는 버전이 있습니다.
저처럼 설치하는 것이 싫으신 분들은 홈페이지를 즐겨찾기 해놨다가 바로 가서 쓰면 될 것 같습니다.
[웹에서 바로 이용하기]
메인 페이지에서 '웹에서 실행'을 선택
바로 클릭해서 들어가면 사용한 언어를 선택합니다.
굉장히 다양한 언어를 제공하고 있어서, 코드 포스팅을 하는 사람들에게 많은 사랑을 받을 것 같습니다.
언어 이외에도 스타일, 복사 스타일, 복사 설정, 세부 설정 등의 다양한 설정이 있어서 쉽고 편하게 코드 포스팅을 할 수 있을 것 같습니다.
[후기] 페이퍼플레인 PP1101 그레이오렌지 (0) | 2014.04.20 |
---|---|
[후기] 머큐리 포커스 범퍼 케이스 - S4 민트 (0) | 2014.04.18 |
티스토리에 프로그래밍 소스 코드 넣기 (HTML 양식) 'SyntaxHighlighter' (1) | 2014.02.10 |
[공모전 정보]어느 것을 해 볼까? (0) | 2014.01.28 |
각자마다 설치 경로가 다르고, 사용자명이 다를 것입니다.
그것을 참고하면서 이 포스팅을 보시기 바랍니다.
저와 똑같이 했다고 설치가 한 번에 잘되는 것이 아닙니다!
저는 완전분산모드 (Fully-distributed mode) 환경을 목표로 설치합니다.
1. Introduction
하둡(Hadoop) 공식 홈페이지에 업로드 되어 있는 컴파일 된 하둡을 사용할 때 다음과 같은 문제가 발생할 것입니다.
(하둡만 운영한다면 문제가 될 에러는 아니지만 Java의 native 라이브러리를 사용하려고 하면 해결해야 할 문제입니다.)
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
이 오류는 32비트 운영체제에서 컴파일 된 것이기 때문에 64비트에서 사용하게 되어 WARNING 에러가 발생한 것입니다. 그래서 이 포스팅은 하둡 2.2.0을 64비트로 컴파일하여 Fully-distributed mode 설정까지 할 것입니다.
2. Environment
build-essential : 프로그램 개발하는데 필요한 라이브러리를 제공하는 패키지
maven : 메이븐은 자바용 프로젝트 관리 도구로써 Hadoop은 메이븐으로 설치
openjdk-7-jdk : 메이븐을 운용하기 위해서 자바 설치
cmake, libssl-dev : 하둡 설치 시 Common Library와 컴파일로 사용
ssh : 하둡에서 ssh 설정에 필요
(↓ 설치 중)
$ mkdir tools
$ cd tools
~/tools$ wget http://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
~/tools$ tar -zxvf protobuf-2.5.0.tar.gz
~/tools$ cd protobuf-2.5.0
~/tools/protobuf-2.5.0$ ./configure
~/tools/protobuf-2.5.0$ make
~/tools/protobuf-2.5.0$ sudo make install
~/tools/protobuf-2.5.0$ sudo ldconfig
~/tools/protobuf-2.5.0$ cd ..
3.2. Hadoop Compile
소스를 컴파일 할 것이기 때문에 소스를 압축한 hadoop-2.2.0-src.tar.gz을 다운로드 받는다.
~/tools$ wget http://mirror.apache-kr.org/hadoop/common/hadoop-2.2.0/hadoop-2.2.0-src.tar.gz
~/tools$ tar xfz hadoop-2.2.0-src.tar.gz
~/tools$ cd hadoop-2.2.0-src
3.2.1. Apply HADOOP-10110
패치 없이 하둡을 컴파일 할 시 Apache Hadoop Auth 부분에서 에러가 발생하여 컴파일이 중단된다.
아파치 하둡에서 해당 에러를 패치(Patch) 할 수 있게 대응했다.
해당 패치는 Hadoop Auth 설정 파일인 hadoop-common-project/hadoop-auth/pom.xml 파일을 패치한다.
(https://issues.apache.org/jira/browse/HADOOP-10110)
~/tools/hadoop-2.2.0-src$ wget https://issues.apache.org/jira/secure/attachment/12614482/HADOOP-10110.patch
~/tools/hadoop-2.2.0-src$ patch -p0 < HADOOP-10110.patch
patching file hadoop-common-project/hadoop-auth/pom.xml
Hunk #1 succeeded at 55 (offset 1 line)
3.2.2. Command of Hadoop Compile
~/tools/hadoop-2.2.0-src$ mvn package -Pdist,native -DskipTests -Dtar
컴파일이 완료되었다면 ~/tools/hadoop-2.2.0-src/hadoop-dist/target 폴더 안에 다음과 같이 압축이 풀린 하둡 폴더와 Tarball로 압축된 두 가지 형태의 하둡을 볼 수 있다. 어느 것이든 가져다 설정하여 쓸 수 있다.
3.3 Error Report
3.3.1. Hadoop Common Error
3.2.1. 에서 Apache Hadoop Auth 말고 Apache Hadoop Common에서 FAILURE가 뜬다면 보조 모듈설치에서 설치하는 cmake와 libssl-dev를 설치하지 않았거나 설치시 문제가 생겼을 경우이다.
4. Setting of Hadoop
4.1. Kind of Hadoop Mode
실행모드 |
용도 |
필요 장비 |
Standalone 모드 |
|
|
Pseudo-distributed |
|
1대 (윈도우 환경) |
Fully-distributed |
|
최소 2대 이상 (리눅스 환경) |
4.2. Setting of Path
여기서부터 매우 중요합니다. 지금 이 포스팅을 참고하시는 분들도 본인의 설치 경로를 고려하면서 알맞게 설정하세요.
환경 변수를 설정하는 데, 하둡에서 사용하는 환경 변수도 함께 설정하기 때문에 환경 변수명을 바꾸어서는 안된다.
추가로 하둡 설정 파일에서 환경 변수의 JAVA_HOME 경로를 읽어들이는데, 하둡이 사용하는 사용자 그룹과 환경 변수를 사용하는 그룹은 다르다. 이 문서에서는 ~/.bashrc 에 환경 변수를 설정하고 하둡의 설정에서 복수로 설정한다.
하지만 복잡한 설정을 하고 싶지 않으면 모든 사용자가 사용하는 환경변수 설정인 /etc/environment에 설정을 하면된다.
(다만 environment에 설정하면 시스템을 재부팅 해줘야 한다.)
$ vim ~/.bashrc
#Java Setting
export JAVA_HOME=$HOME/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
# Hadoop Path
export HADOOP_PREFIX=$HOME/hadoop
export PATH=$PATH:$HADOOP_PREFIX/bin
export PATH=$PATH:$HADOOP_PREFIX/sbin
export HADOOP_HOME=$HOME/hadoop
export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
export YARN_HOME=${HADOOP_PREFIX}
export HADOOP_YARN_HOME=${HADOOP_PREFIX}
export HADOOP_CONF_DIR=${HADOOP_PREFIX}/etc/hadoop
# Native Path
export HADOOP_COMMON_LIB_NATIVE_DIR=${YARN_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=$YARN_HOME/lib/native"
~$ source ~/.bashrc
4.3. Setting of SSH
하둡이 노드들과 통신을 할 때 기본으로 SSH를 사용한다. Hadoop 시작 및 사용 시 노드간의 비밀번호를 요구하지 않도록 설정하기 위해 각각의 SSH Key를 생성하고 이를 공유한다.
먼저 전체 노드에서 다음과 같이 RSA Key를 생성하고 이를 authorized_keys 파일에 붙여넣도록 한다.
~$ ssh-keygen -t rsa -P ""
~$ cd ~/.ssh
~/.ssh$ cat_id_rsa.pub >> authorized_keys
모든 노드에서 RSA Key 생성이 완료되면 해당 키 값들을 모두 마스터 노드에 모아 저장한다. 마스터 노드에서 전체 노드에 대해 다음의 명령을 수행하도록 한다.
~$ ssh hadoop@slave01 'cat ~/.ssh/id_rsa.pub' >> ~/.ssh/authorized_keys
~$ ssh hadoop@slave02 'cat ~/.ssh/id_rsa.pub' >> ~/.ssh/authorized_keys
마스터 노드로 공개키 복사가 모두 완료되면 각 노드들이 자유롭게 타 노드로 접속할 수 있도록 모든 노드로 공개키를 배포한다.
~$ scp authorized_keys hadoop@slave01:~/.ssh/authorized_keys
~$ scp authorized_keys hadoop@slave02:~/.ssh/authorized_keys
이때 ~/.ssh 폴더의 권한은 700 이며, authorized_keys 파일의 권한은 600으로 설정되어야 한다.
4.4. Setting of Hadoop
Fully-distributed mode 형태로 설정을 진행한다. 설정파일들은 모두 ${HADOOP_PREFIX}/etc/hadoop 디렉토리 안에 존재한다.
파일명 |
형식 |
설명 |
hadoop-env.sh |
bash스크립트 |
하둡을 구동하는 스크립트에서 사용되는 환경 변수 |
core-site.xml |
하둡 설정 xml |
HDFS와 맵리듀스에 공통적으로 사용되는 IO설정같은 하둡 코어를 위한 환경 설정 구성 |
hdfs-site.xml |
하둡 설정 xml |
네임노드, 보조네임노드, 데이터노드 등과 같은 HDFS 데몬을 위한 환경 설정 구성 |
mapred-site.xml |
하둡 설정 xml |
잡트래커와 태스크트래커같은 맵리듀스 데몬을 위한 환경 설정 구성 |
masters |
일반 텍스트 |
보조 네임노드를 구동시킬 컴퓨터의 목록(라인당 하나) |
salves |
일반 텍스트 |
데이터노드와 태스크트래커를 구동시킬 컴퓨터의 목록(라인당 하나) |
hadoop-metric.properties |
자바 속성 |
매트릭스가 하둡에서 어떻게 표시되는지를 제어하는 속성 |
log4i.properties |
자바 속성 |
시스템 로그 파일을 위한 속성,네임노드의 감시로그, 태스크트래커의 자식 프로세스의 수행 로그 |
4.4.1. hadoop-env.sh
하둡이 실행하는 모든 프로세스에 적용되는 시스템 환경 값에 대한 스크립트 파일로, 전체 클러스터 노드에 복사해 사용하는 설정 파일이다.
$ cd /hadoop/etc/hadoop
~/hadoop/etc/hadoop$ vim hadoop-env.sh
export JAVA_HOME=${JAVA_HOME}
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}
4.4.2. yarn-env.sh
yarn(Yet Another Resouce Negotiator)는 분산된 환경을 운영 할 수 있도록 제공하는 환경 설정 파일이다.)
~/hadoop/etc/hadoop$ vim yarn-env.sh
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native"
4.4.3. core-site.xml
HDFS와 MapReduce에서 공통으로 사용하는 로그 파일, 네트워크 튜닝, I/O 튜닝, 파일 시스템 튜닝, 압축 등과 같은 하둡 코어를 위한 환경 설정 파일이다. MapReduce에서도 공통으로 사용한다. fs.default.name 에 hdmaster는 namenode 호스트 이름을 적는다. hadoop.tmp.dir는 자신의 설정에 따라 경로를 적도록 한다.
~/hadoop/etc/hadoop$ vim core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hdmaster:9000</value>
<final>true</final>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>${HADOOP_PREFIX}/hdfs/tmp</value>
</property>
</configuration>
4.4.4. hdfs-site.xml
이 파일은 네임노드, 보조 네임노드, 데이터 노드 등과 같은 HDFS 데몬을 위한 환경을 구성한다. dfs.namenode.name.dir은 파일의 디렉토리 정보와 파일 정보 등을 저장하는 폴더이다. 해당 저장위치는 hdfs가 아닌 로컬에 저장을 한다. dfs.datanode.name.dir은 하둡 파일 시스템에 저장되는 모든 파일이 저장되는 위치이다. dfs.replications의 경우 얼마나 많은 노드에 동일한 자료를 복제하여 저장할 것인지 설정하는 것으로 전체 데이터 노드의 개수보다 작아야 한다.
~/hadoop/etc/hadoop$ vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replications</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:${HADOOP_PREFIX}/hdfs/namenode</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:${HADOOP_PREFIX}/hdfs/datanode</value>
<final>true</final>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.http.address</name>
<value>hdmaster:50070</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hdmaster:50090</value>
</property>
</configuration>
※ 주의! ※
${HADOOP_PREFIX} 뒤에 붙은 경로들은 현재 본인 디렉토리에 없는 경로들이겠지만
4.4.7.에서 디렉토리를 생성할 예정이므로 걱정하지 않으셔도 됩니다.
4.4.5. mapred-site.xml
이 파일은 잡트래커와 태스크트래커와 같이 맵리듀스 데몬을 위한 환경설정 파일이다. 해당 파일은 mapred-site.xml.teplate로 제공되며 mapred-site.xml로 변경하여 사용한다.
~/hadoop/etc/hadoop$ vim mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>file:${HADOOP_PREFIX}/hadoop/mapred/system</value>
<final>true</final>
</property>
<property>
<name>mapred.local.dir</name>
<value>file:${HADOOP_PREFIX}/hadoop/mapred/local</value>
<final>true</final>
</property>
※ 주의! ※
${HADOOP_PREFIX} 뒤에 붙은 경로들은 현재 본인 디렉토리에 없는 경로들이겠지만
4.4.7.에서 디렉토리를 생성할 예정이므로 걱정하지 않으셔도 됩니다.
4.4.6. yarn-site.xml
yarn과 관련된 데몬을 설정하는 파일이다.
~/hadoop/etc/hadoop$ vim yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
4.4.7. Create Directories
hdfs-site.xml과 mapred-site.xml에서 설정한 디렉토리 경로에 맞게 디렉토리를 생성한다. 디렉토리 이름들은 사용자가 원하는대로 변경해도 된다.
~$ mkdir –p ${HADOOP_PREFIX}/hadoop/hdfs/namenode
~$ mkdir –p ${HADOOP_PREFIX}/hadoop/hdfs/datanode
~$ mkdir –p ${HADOOP_PREFIX}/hadoop/mapred/system
~$ mkdir –p ${HADOOP_PREFIX}/hadoop/mapred/local
5. Start Hadoop
5.1. NameNode Format
최초 실행시 NameNode를 포맷해준다.
~$ hdfs namenode -format
5.2. 데몬 실행
데몬 실행 스크립트는 ${HADOOP_PREFIX}/sbin 에 위치해 있다. start-all.sh로 모든 데몬을 실행한다.
|
실행 |
종료 |
전체 데몬 |
start-all.sh |
stop-all.sh |
HDFS만 |
start-dfs.sh |
stop-dfs.sh |
YARN만 |
start-yarn.sh |
stop-yarn.sh |
※ 모두 stop한 이후에 재부팅을 해야할 때!!
sudo init 6
5.3. 데몬 실행 확인
5.3.1. JPS
jps 명령으로 자바 가상 머신(JVM)의 프로세스 상태를 확인한다. 다음과 같이 하둡과 관련된 5개의 데몬과 jps 명령 1개의 데몬 총 6개의 데몬이 실행 되어있으면 된다.
01. Introduction to Big Data (3) - MapReduce? (0) | 2014.04.23 |
---|---|
01. Introduction to Big Data (2) - Hadoop? (0) | 2014.04.20 |
01. Introduction to Big Data (1) - BigData (0) | 2014.04.11 |
[빅데이터] 스터디 일정 (0) | 2014.03.09 |