티스토리 뷰
[hadoop] 설치 및 clustering 셋팅
이번주에는 Cloud Distribute File System으로 각광을 받고있는 Hadoop에 대해 알아보고 설치 및 분산 저장을 해보려고 합니다.
Hadoop은 크게 총 두가지의 요소로 나누어져 있습니다.
1. HDFS
2. Map Reduce
입력한 데이터를 지정한 DataNode에 Distribution 및 Replication을 수행합니다. ( HDFS )
[ 그림1 ] HDFS Architecture ( http://hadoop.apache.org 참조 )
HDFS로 분산하여 저장하였다면 이제 데이터를 가져오기 위하여 데이터를 조회하고 원하는 데이터를 가져오기 위한 연산을 처리하는 과정을 MapReduce라고 합니다.
[ 그림2 ] MapReduce architecture ( http://hadoop.apache.org 참조 )
그럼 이제부터 개발환경을 셋팅해 보도록 하겠습니다. 개발 환경은 아래와 같습니다.
Server1
CPU : Intel(R) Pentium(R) Dual CPU T2410 @ 2.00GHz
Memory : 2GB
JAVA : JDK 1.6.0_29
Hadoop : hadoop-1.0.1.tar.gz
Server2 ( VM OS )
CPU : Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz ( X2 )
Memory : 2GB
JAVA : JDK 1.6.0_29
Hadoop : hadoop-1.0.1.tar.gz
1. Hadoop 설치
step 1. Hadoop Download 및 설치
Download URL : http://ftp.daum.net/apache/hadoop/core/stable/
위의 URL에 접속하여 현재 안정화 버전인 hadoop-1.0.1.tar.gz 파일을 다운 받습니다.
$ mkdir ~/work
$ tar xvfz hadoop-.0.1.tar.gz -C ~/work
step 2. 환경변수 설정
자바와 hadoop path를 환경변수로 등록합니다.
~/.bash_profile
export HADOOP_HOME="/home/rocksea/work/hadoop-1.0.1"
conf/hadoop-env.sh
step 3. 설치 TEST
간단하게 설치 후 MapReduce TEST를 진행합니다.
$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
$ cat output/*
2. Psuedo Distribution (가분산) 설정
stpe 1. 네임노드 설정
로컬서버에 가분산을 위한 네임노드를 설정합니다.
conf/core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
step 2. Replication 설정
Replication갯수 및 디렉토리를 설정합니다.
conf/hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/rocksea/work/hadoop-1.0.1/name</value> //name 디렉토리 생성한다 ( 없을시 오류 )
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/rocksea/work/hadoop-1.0.1/data</value>
</property>
</configuration>
step 3. MapReduce 설정
MapReduce를 위한 jobtracker를 설정합니다.
conf/mapred-site.xml:
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
step 4. ssh dsa key 등록
dsa key 생성 ( Server1, Server2 )
server1 $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
상대의 서버에있는 ~/.ssh/authorized_keys에 현재 생성된 id_dsa.pub 키값 추가 (server1 -> server2, server2 -> server1)
이제 localhost로 접속하게 되면 비밀번호 입력 없이 로그인이 가능합니다.
Welcome to Ubuntu 11.10 (GNU/Linux 3.0.0-12-generic i686)
* Documentation: https://help.ubuntu.com/
397 packages can be updated.
124 updates are security updates.
step 5. namenode
$HADOOP_HOME 으로 이동해서 distributed-filesystem 을 포맷합니다.
step 6. process 실행
namenode, jobtracker, datanode 등을 실행합니다.
$ jps
16374 NameNode16621 DataNode
17232 TaskTracker
17328 Jps
16869 SecondaryNameNode
16968 JobTracker
- NameNode : 분산 파일 시스템에 위치한 파일들에 대한 위치정보를 포함하는 정보. 일반적으로 파일시스템 에서 표현되는 파일명과 디렉토리 위치에 해당한다고 보면 이해가 빠를 것입니다.
- SecondaryNameNode : NameNode 의 slave
-DataNode : 분산파일을 저장하는 노드
3. Psuedo Distribution (가분산) 테스트
설정이 끝났다면 아래의 URL로 접속하여 확인한다.
step 1. 가분산을 위한 테스트를 진행
hdfs 안으로 conf directory 내용을 input으로 저장 후 간단한 map reduce 테스트를 진행합니다. ( 시간소요가 있음 )
server1 $ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
step 2. HDFS 파일 꺼내기
server1 $ bin/hadoop fs -get output output
server1 $ cat output/*
step 3. 기타
cat을 이용하여 파일내용을 출력합니다.
4. Full Distribution (분산) 셋팅
가분산까지 성공하였다면 이제 진짜 분산환경인 Full Distribution 환경에 대하여 설정 해 보도록 하겠습니다.
아래의 설정파일 수정 후 다른 서버에 rsync를 이용한 전체 동기화를 시킬 것 이므로 NameNode가 되는 Server1번에
설정을 합니다.
step 1. core-site 설정
conf/core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://server1:9000</value>
</property>
</configuration>
fs.default.name
네임노드를 설정합니다.
step 2. hdfs-site 설정
conf/hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/rocksea/work/hadoop-1.0.1/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/rocksea/work/hadoop-1.0.1/data</value>
</property>
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
</configuration>
dfs.replication (복제셋)
시스템이 다운됐을 때의 Fail Over 나 한 서버에 몰리는 부하를 나누어 주는 역할을 합니다. 2 이라고 하면 같은 데이타를 2곳으로 나누어서 (같은 데이타 2번)저장하라는 것입니다.
dfs.name.dir(네임 노드)
네임노드의 정보를 저장하는 곳입니다.
dfs.data.dir(데이터 노드)
데이타노드의 정보를 저장하는 곳입니다.
step 3. mapred-site 설정
conf/mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>server1:9001</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/home/rocksea/work/hadoop-1.0.1/mapred/system</value>
</property>
</configuration>
mapred.job.tracker
현재 맵-리듀스 작업을 할 때 그 작업을 각 테스크별로 분배해주는 기능을 하는 서버의 위치를 지정하게 되어 있습니다 . 네임노드가 위치한 곳과 같은 곳을 지정하게 해줍니다.
step 4. masters 설정
conf/masters
masters 파일은 네임노드의 위치를 적어주는 부분이 아닌. secondary name-node 의 위치를 저장하는 파일입니다. secondary name-node 는 네임노드 (name-node) 가 죽었을 경우 동작하는 네임노드 입니다.
step 5. slaves 설정
conf/slaves
server2
slaves 파일은 데이터노드 (datan-node) 가 저장될 서버들을 추가합니다.
step 6. 서버 동기화
모든 hadoop서버는 설정이 같으므로 동기화를 합니다. 서버가 10대이든 100대이든 설정이 모두 같으므로 rsync를 이용하여 동기화를 합니다.
server1 $ cd ~/work/hadoop-1.0.1
server1 $ rsync -av . hadoop@server2:/home/rocksea/work/hadoop-1.0.1/
step 7. 실행 및 Test
아래의 script를 실행한다.
server 1
16997 NameNode
18021 Jps
17244 DataNode
17382 JobTracker
17629 TaskTracker
server 2
13527 Jps
13199 SecondaryNameNode
13387 TaskTracker
13004 DataNode
아래의 url로 접속하여 확인한다.
[ 그림 3 ] NameNode 정보
아무 파일을 HDFS에 넣어 Replication 테스트를 한다.
[ 그림 4 ] 데이타 노드정보
현재 2개의 서버의 데이터 노드가 떠있는 것을 확인 할 수 있다.
[ 그림5 ] 디렉토리 확인
tar라는 디렉토리가 생성된 것을 확인 할 수 있다
이상으로 hadoop Full Distribution 에 대한 포스팅을 마치도록 하겠습니다.
참고 blog URL : http://crazia.tistory.com/
by rocksea.
'Developer' 카테고리의 다른 글
[ VMware ] kernel 3.2 patch (0) | 2012.05.02 |
---|---|
[ inode ] inode 관련자료 (0) | 2012.04.24 |
[installation guid] nginx installatation guide (0) | 2012.04.19 |
SSH Local Tunneling (0) | 2012.04.18 |
redmine1.3.2 mylyn-connector 설치 (0) | 2012.04.17 |
- Total
- Today
- Yesterday
- it
- 가정법
- 조동사
- 비교구문
- mongoDB
- hdfs
- k8s
- nodejs
- 베트남
- JBOSS
- 비지니스 영어
- 영작
- memcached
- 스페인 여행
- PostgreSQL
- Python Django
- 여행
- 영문법
- AWS
- NGINX
- Python
- hadoop
- 다낭
- redis
- 해외여행
- maven
- 도덕경
- 대명사 구문
- Business English
- ubuntu
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |