'Hadoop'에 해당되는 글 4건
- 2010.11.29 hadoop의 정의 및 설치 1
1장 Hadoop
1.1 Hadoop의 정의
Hadoop : 분산컴퓨팅 지원 프레임웤으로 아래와 같은 서브프로젝트로 구성되어있음.
Hadoop core :
하둡의 주력 프레임웍
HDFS, MapReduce Distribute Computing Framework 지원
Chukwa
큰 분산환경에서 데이터를 분석 및 모니터링하기 위한 오픈소스 데이터 수집시스템
HBase
Hadoop의 HDFS를 지원하기 위한 구글의 BigTable 구현체
Hive
Hadoop File에 저장된 큰 데이터셋의 통계 및 질의를 쉽게 사용할수 있는 유틸리티를 제공하는
데이터 웨어하우징의 구현체
배치프로세싱 시스템에 기반을 두었기 때문에 쿼리의 짧은 응답시간을 약속할 수 없고 RDBMS의
realtime query와는 반대되는 개념이라 RDBMS와 비교는 불가능
Pig
병렬컴퓨팅을 위한 High-level-data-flow 언어
Zookeeper
분산환경에서 노드들간의 정보공유, 락, 이벤트등 다양한 용도로 사용되는 프레임웍
1.2 HDFS 설치하기
1.2.1 설치서버 환경
OS : centOs5.3
Master Domain : hadoop1.xener.com
Slave Domain : hadoop2.xener.com
1.2.2 Java 버전 및 설치 경로
Version : 1.6.0_14
설치경로 : /usr/local/java
1.2.3 Hadoop data 및 name 노드 폴더
/hdfs/data
/hdfs/name
/hdfs/mapred/system
/hdfs/mapred/local
1.2.4 Hadoop 설치 폴더
임의의 폴더에 hadoop의 압축을 풉니다. (테스트 서버는 /usr/local/hadoop 에 설치되어있습니다.)
/home/hadoop/hadoop_0.20
1.2.5 HDFS 설치방식
Standalone 방식
Pseudo-Distributed 방식
Fully-Distributed 방식
1.2.5.1 Pseudo-Distributed 방식
단일노드에서 Hadoop Daemon이 분리된 Java Process로 수행되는 방식
i. 아래 명령을 이용하여 ssh 와 rsync 를 설치. ssh와 rsync 를 설치하는 이유는 hadoop 내부에서
데이터 리플리케이션에 rsync를 사용하고 슬래이브서버와의 통신에 ssh를 사용하기 때문임.
$ sudo apt-get install ssh
$ sudo apt-get install rsync
% 위 명령어는 ubuntu Linux환경에서 사용하는 명령임.
각 리눅스 배포버전에 맞는 설치 및 확인 방법으로 ssh와 rsync의 설치 유무
를 판단하고 설치되어있지 않을시에 위 프로그램들을 설치해주시기 바랍니다.
ii. conf/core-site.xml 파일을 아래와 같이 수정.
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop1.xener.com:9000</value>
</property>
</configuration>
iii. conf/hdfs-site.xml 파일을 아래와 같이 수정.
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
iv. conf/mapred-site.xml 파일을 아래와 같이 수정.
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoop1.xener.com:9001</value>
</property>
</configuration>
v. 아래의 명령어를 입력하여 localhost 를 신뢰관계로 세팅.
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
vi. 방화벽 설정을 변경.
# System-config-securitylevel 명령어로 아래와 같은 포트를 열어둡니다.
(WEB 에서 HDFS상태를 확인하는데 사용하는 포트들입니다)
9000, 9001, 50010, 50020, 50030, 50060, 50070, 50075, 50090, 50470, 50475
vii. HDFS를 사용하기 위해 namenode를 포맷하고 실행
$ bin/hadoop namenode -format
$ bin/start-all.sh
viii. Jps 명령으로 hadoop 데몬이 정상적으로 로딩되어있는지 확인.
아래와 같은 데몬들이 동작하고 있으면 정상동작하고 있는것임.
7365 Jps
6828 NameNode
7030 SecondaryNameNode
7228 TaskTracker
7099 JobTracker
6925 DataNode
1.2.5.2 Fully-Distributed 방식
여러대의 컴퓨터를 클러스터로 묶는 방식으로 여기서는 master를 hadoop1.xener.com,
슬레이브를 hadoop2.xener.com으로 가정하고 진행.
각 설정파일의 자세한 설명은 오른쪽 링크에서 확인 가능함 click
i. Hadoop의 설정파일에는 두종류가 있음
A. Read-only default Configuration :
src/core/core-default.xml,
src/hdfs/hdfs-default.xml,
src/mapred/mapred-default.xml.
B. Site-specific Configuration :
conf/core-site.xml
conf/hdfs-site.xml
conf/mapred-site.xml
ii. Master를 아래와 같이 세팅.
A. conf/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop1.xener.com:9000</value>
</property>
</configuration>
B. conf/hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name><value>/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name><value>/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name><value>2</value>
</property>
<property>
<name>dfs.block.size</name><value>1048576</value>
</property>
</configuration>
C. conf/mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://hadoop1.xener.com:9001</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/hdfs/mapreduce/system</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/hdfs/mapreduce/local</value>
</property>
</configuration>
D. Conf/slaves
hadoop1.xener.com
hadoop2.xener.com
E. Conf/masters
hadoop1.xener.com
iii. 슬레이브를 아래와 같이 세팅합니다.
A. conf/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop1.xener.com:9000</value>
</property>
</configuration>
B. conf/hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.block.size</name>
<value>1048576</value>
</property>
</configuration>
C. conf/mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker </name>
<value>hdfs://slave 주소:9001</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/hdfs/mapreduce/system</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/hdfs/mapreduce/local</value>
</property>
</configuration>
iv. Hadoop1.xener.com과 hadoop2.xener.com을 신뢰관계로 등록
Hadoop1.xener.com ~/.ssh/authorized_keys에
Hadoop2.xener.com 의 id_dsa.pub파일의 내용을 넣어주고
Hadoop2.xener.com 의 ~/.ssh/authorized_keys에
Hadoop1.xener.com 의 id_dsa.pub파일의 내용을 넣어줍니다.
v. 양 서버간에 ssh 통신에 이상이 없는지 테스트.
Hadoop1.xener.com 에서
$ ssh hadoop2.xener.com
Hadoop2.xener.com 에서
$ ssh hadoop1.xener.com
vi. Master에서 아래 명령을 수행하여 namenode를 format하고 hadoop을 실행
(슬레이브에서는 수행시키시면 안됩니다.)
$ bin/hadoop namenode -format
$ bin/start-all.sh
vii. %JAVA_HOME%/bin/jps를 실행하여 아래와같이 잘 수행되는지 확인
마스터 실행상황
32740 JobTracker
32647 SecondaryNameNode
32492 DataNode
32343 NameNode
22255 Jps
388 TaskTracker
슬레이브 실행상황
29270 Jps
30595 DataNode
31425 TaskTracker