되었다.
참고로 하둡 설치를 위한 준비 단계가 궁금하신 분께서는 아래의 링크를 클릭해주세요.
여분의 컴퓨터와 하드디스크가 준비되었다면(혹은 가상머신 셋팅이 완벽하게 끝났다면) 하둡을 설치할 차례이다.
그 전에!! (자꾸 질질 끄는 것 같아서 좀 그렇긴 하지만..)
CentOS를 깔아야 하지 않겠는가...
하지만 빠른 진행과 우분투 또는 다른 리눅스 체제 사용자를 위해 이 부분은 다루지 않기로 한다.
대신 다른 블로거 분들께서 열심히 작성해주신 CentOS 6.3 설치 방법과 Basic Minimal 서버에서의 GUI 환경 설치 등을 다룬 포스트의 링크를 걸도록 하겠다.
1. Cent OS 다운로드 및 설치
참고로 본인이 하둡 설치를 위해 구축한 환경은
- Cent OS 6.3
- Basic Server 버전 설치
- GUI 환경으로 설치함 (리눅스 터미널에 익숙하시지 않은 분들은 Basic Server버전 대신 Desktop 버전으로 설치하셔도 됩니다.)
- 클러스터가 될 4대에 모두 설치하였으며 네트워크 설정을 함.
이렇게 CentOS가 뜨면서 인터넷 연결까지 끝마쳤다면, 준비 완료.
2. Java JDK 다운로드 및 설치 -- 모든 컴퓨터에 설치
자바 JDK 설치는 하둡 설치를 위한 필수 단계이다. 이를 설치한 뒤 환경 변수 설정 등을 마쳐주고 하둡 설치를 진행해야 한다.
1) Java JDK 다운로드
b. Downloads의 Java for Developers를 클릭.
c. Java SE를 클릭.
d. 이제 사용자 환경에 맞는 파일을 다운로드 하면 된다. CentOS 사용자는 .rpm 파일을, 우분투 이용자라면 압축 파일을 받으면 된다.
2) Java JDK 설치
다운로드가 완료된 .rpm 파일을 클릭하여 설치해주면 끝!
혹은 터미널 상이라면 아래와 같이 입력하면 된다.
# rpm -Uvh jdk-<버전명>-linux-i586.rpm
3) Java JDK 설치 확인
정상적으로 설치되었다면 /usr/java/jdk_버전 경로로 설치되어 있을 것이다. (사용 환경에 따라 다를 수도 있습니다.)
이제 본격적으로 하둡을 설치해보자.
3. 하둡(Hadoop) 설치 -- 모든 컴퓨터에 설치 및 설정 적용
1) 하둡(Hadoop) 다운로드
가장 힘든 단계라고 할 수 있겠다.
무슨 이유에선지 다운로드가 잘 되지 않았다. 그래서 윈도우에서 어찌어찌 다운로드가 되었길래 개인적으로 갖고 있는 FTP에 올려서 클러스터용 컴퓨터로 다운로드 하였다.
어찌됐건 클러스터 모두에게 다운로드 받기 보다는 한 대에 받아서 USB 등으로 복사하길 권장한다. 다운로드가 너무 느리기 때문이다 ㅠㅠ
a. http://hadoop.apache.org로 접속
b. Download Hadoop을 클릭!
c. 'Download Hadoop' 하단의 releases를 클릭
d. 'Download' 하단의 Download a release now!를 클릭
e. 이제 사용자에게 추천하는 미러사이트의 링크가 나타나고 이를 클릭하면 하둡 다운로드가 이루어지게 된다.
(혹시 다운로드가 안되시는 분께서는 댓글로 알려주시면 제가 가진 버전(1.1.1)의 링크 주소를 알려드리겠습니다.)
2) 하둡(Hadoop) 설치 --- 모든 컴퓨터에 설정
a. 다운로드 된 폴더로 이동하여 아래의 명령어를 타이핑한다.(혹은 압축을 해제한다.)
# tar xvfz hadoop-1.1.1.tar.gz
※참고로 root 계정은 사용자 용량이 작게 할당이 된다. 따라서 하둡을 사용할 실제 계정의 홈디렉토리에 압축을 해제하는 것이 좋다. 예를 들어 하둡 계정명이 huser이라면 /home/huser/hadoop.
따라서 설치 과정을 root 권한으로 진행하기 보다는 하둡 전용 계정을 sudoer로 등록하여 하둡 전용 계정으로 설치 단계를 진행하는 것이 낫다.
3) /etc/profile 설정 --- 모든 컴퓨터에 설정
하둡이 있는 경로와 Java가 설치된 경로를 /etc/profile에 등록해야 한다.
위의 명령어를 타이핑하면 해당 문서의 내용을 보거나 편집할 수 있다. 편집하기 위해서는 Insert 키를, 완료 후 저장을 위해서는 ESC키를 누른 후 :wq 라고 타이핑한다.
다시 본론으로 돌아와서, 설정해야 할 내용은 아래와 같다.
#JAVA 7 JDK
JAVA_HOME=/usr/java/ jdk1.7.0_11 //자바 버전에 맞게 수정하면 됨.
HADOOP_HOME=/home/하둡계정명/하둡폴더명
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/-:$JAVA_HOME/jre/lib/-:$JAVA_HOME/jre/lib/ext/-:.
HADOOP_HOME_WARN_SUPPRESS=TRUE // $HADOOP_HOME is deprecated 라는 경고문을 뜨지 않도록 하는 코드
export JAVA_HOME HADOOP_HOME PATH CLASSPATH HADOOP_HOME_WARN_SUPPRESS //해당 경로명을 추가하면 됨.
위와 같이 설정했다면 /etc/profile 에 대한 설정은 끝난다.
4) /etc/hosts 설정 --- 모든 컴퓨터에 설정
하둡 클러스터는 네임노드와 하위 노드들로 나뉘게 된다. 네임노드는 쉽게 말해서 작업을 관장하는 작업반장 정도가 되겠고, 나머지 하위 노드들은 작업 지시에 따르는 역할이 되겠다.
이번 설정은 바로 네임노드와 하위노드들을 구분해주기 위한 네트워크명을 설정하는 단계이다. IP방식으로 해도 관계가 없으나 클러스터 내의 알기 쉬운 이름으로 지정하여 설정하길 권장한다.
나는 아래와 같이 host를 설정했다.
xxx.xxx.xxx.1 master
xxx.xxx.xxx.2 node1
xxx.xxx.xxx.3 node2
xxx.xxx.xxx.4 node3
※저장은 마찬가지로 ESC키를 누른 후 :wq를 타이핑하면 된다.
속도가 조금 더디지만 CPU가 많은 서버 컴퓨터를 네임노드(master)로 두었으며, 가장 최근에 나온 컴퓨터 3대를 하위 노드로 두었다. 그리고 쉽게 기억하고 구분하기 위해 이름을 단순하게 붙여주었다.
5) 하둡(Hadoop) 파일 시스템을 위한 폴더 생성 및 권한 설정 --- 모든 컴퓨터에 설정
하둡 자체를 root 권한으로 설치하고 또 사용하는 것이 아니기 때문에 미리 하둡 프로그램이 사용할 폴더를 생성해주고 권한을 바꿔주어야 한다. 그렇지 않은 경우 하둡 실행 때 에러가 발생했고, 한참 로그 파일을 뒤진 끝에 특정 폴더에 접근할 권한이 없다는 메시지를 찾을 수 있었다.
'퍼미션'이라는 단어를 질리도록 보기 전에 미리 만들어주도록 하자.
# mkdir /home/유저명/fs
# mkdir /home/유저명/fs/data
# mkdir /home/유저명/fs/name
# mkdir /home/유저명/fs/mapreduce
# mkdir /home/유저명/fs/mapreduce/local
# mkdir /home/유저명/fs/mapreduce/system
# chmod -R 755 /home/유저명/fs
6) SSH 설정 - 네임노드에서 생성하여 하위 노드 모두에게 복제.
네임노드에서 RSA키를 생성하여 하위 노드들에게 복제하는 과정이다. 이 과정을 통해 네임노드에서 하위노드로 SSH 명령을 했을 때 암호 입력이 필요없이 해당 하위노드로 접근이 가능하도록 하는 것이다. 네임노드에서 하위노드로만 복제하면 되며, 하위 노드에서 네임노드로 또는 하위 노드끼리 복제할 필요는 없다.
a. RSA키를 생성한다. -- 네임노드 PC에서 생성한다.
[kertz@master ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.Enter file in which to save the key (/kertz/.ssh/id_rsa): // 입력하지 않고 Enter
Enter passphrase (empty for no passphrase): // 입력하지 않고 Enter
Enter same passphrase again: // 입력하지 않고 Enter
Your identification has been saved in /kertz/.ssh/id_rsa.
Your public key has been saved in (/kertz/.ssh/id_rsa.pub.
[kertz@master ~]# cat ~/.ssh/id_rsa.pub // 생성한 키를 확인함.
b. RSA키를 복제 -- 네임노드 PC에서 하위 노드 PC들에게 복제
[kertz@master ~]# sudo scp ~/.ssh/id_rsa.pub kertz@node1:~/master_key //공개 키를 node1의 master_key 폴더로 복제
[kertz@master ~]# ssh node1 // node1로 접속함.
[kertz@node1 ~]# mkdir ~/.ssh // 여기서부터는 ssh 폴더를 생성하고 공인된 키로 네임노드의 키를 추가하는 과정임
[kertz@node1 ~]# chmod 700 ~/.ssh
[kertz@node1 ~]# mv ~/master_key ~/.ssh/authoried_keys
[kertz@node1 ~]# chmod 600 ~/.ssh/authoried_keys
※위와 같이 node2, node3에게도 반복해서 해주면 된다.
c. RSA키 정상 복제 여부 확인 - 네임노드에서 확인하면 됨.
정상적으로 복제되었는지 여부는 네임노드에서 ssh 명령어로 하위 노드에 접속해보는 것으로 확인이 가능하다. 정상 복제 되었다면 하위 노드 접속 시 암호를 묻지 않을 것이다.
[kertz@master ~]# ssh node1Last login: Thu Feb 6 16:52:02 2013 from master[kertz@node1 ~]#
※여기서 다시 한 번 강조하자면...
하둡을 사용할 계정(root를 제외한)을 이용해서 RSA키를 생성하고 복제하는 것이 좋다.
root는 한정적인 용량을 갖기 때문에 일부 경우를 제외하고는 하둡을 이용할 계정을 통해서 모든 과정을 진행해야 한다. 따라서 사전에 sudo 권한을 하둡 전용 계정에 부여하는 것이 좋으며, sudo 권한 부여에 대한 내용은 sudoer에 관한 구글 검색을 통해 참조하면 된다.
여기까지의 과정을 통해 하둡 설치는 끝났다. 하지만 하둡을 사용하기 위한 설정 단계가 아직 남아있다. 포스팅이 너무 길어져 힘들기 때문에 오늘 포스팅은 여기서 마치겠지만, 다음 포스팅을 위해 미리 언급하자면,
하둡의 수행 모드는 다음과 같이 3가지 단계로 나뉜다.
- Stand-alone 모드 (독립실행 모드)
- Pseudo-distributed 모드 (가상분산 모드)
- Fully-distributed 모드 (완전분산 모드)
독립실행 모드는 하둡의 기본 모드로 로컬 머신 상에서만 실행되는 모드이다. 혼자만 뚝딱뚝딱 하기 때문에 파일 공유도, 작업 분담도 필요없다. 따라서 HDFS(Hadoop Distributed File System)를 사용하지 않으며, 다른 데몬들을 실행시키지 않는다. 하둡의 본래 의미를 살리지 않는 기능 같지만, MapReduce 프로그램을 개발하고 디버깅하는 목적에서는 충분하기 때문에 이러한 용도로 사용한다. 물론 아직 나와는 거리가 먼 이야기 같다....
가상분산 모드는 한 대의 컴퓨터 상에서 가상으로 클러스터를 구축하는 모드이다. 즉 한 대 내에서 클러스터가 구성되며, 데몬들도 한 대 내에서 실행된다. 독립실행 모드에서 개발 또는 디버깅한 코드가 HDFS의 입출력이나 데몬들과의 연동 상 문제가 없는지 확인하는 목적으로 사용된다. 이 또한 아직 나와는 거리가 멀다....
완전분산 모드는 현재 구축하고자 하는 모드로 각 노드들이 각각의 컴퓨터로 이루어져 있는 클러스터를 말한다. 즉, 실제로 분산처리를 할 수 있는 형태이다.
어느 정도 눈치챘겠지만, 각각의 모드에 따라서 하둡의 설정법이 모두 다르다. 하지만 가장 힘든건 역시 실제로 클러스터를 구축하는 완전분산 모드이다. 이미 우리는 4대의 컴퓨터를 클러스터 입대를 위한 장정들로 마련해두었고 기본 교육(?)까지 마쳤으니 다음 포스팅에서는 완전 분산 모드의 설정 방법에 대해 다루고자 한다.
아 힘들다......
최근 덧글