[클러스터] Hadoop File System 환경 구축 하기

Hadoop File System 환경 구축 하기

작성일 : 2008년 10월 24일
작성자 : 클루닉스/ 서진우

1. 다운로드

url: http://www.apache.org/dyn/closer.cgi/hadoop/core/

에서 다운로드 가능

2. 시스템 구성 및 구축 시 유의 사항

– 시스템 구성

Hadoop 시스템 구성 시스템은 크게 3가지로 나누어 진다.

NameNode, DataNode, ClientNode

NameNode : 데이터의 메타 정보를 저장하고, 관리한다.
DataNode : 실제적인 데이터를 분산 저장 관리한다.
ClientNode : NameNode를 통해 DataNode에 저장된 데이터에 접근만 가능한 노드

– 구성 시 유의 사항

NameNode, DataNode 역시 Client 가 될 수 있고, Namenode 가 Datanode 역할을 동시에
할 수도 있다.

하지만 성능을 고려하면, Name 노드는 독립적으로 구성하는 것이 좋다. 또한 Data 노드 역시
독립적으로  구성하는 것을 권장한다. data 노드가 client가 되는 경우 네트워크에 상당한
병목이 생김으로 성능 저하의 주요 원인이 될 수 있다.

만일 Name 노드와 DATA 노드를 동일한 서버에 구성할 경우 Name 서비스 관련 정보와 Data 저장
정보는 별도의 파티션에 구성하는 것을 권장한다.

– HDFS 호스트 정보

vi /etc/hosts
————————————————————
192.168.123.151                super01   # hdfs name node
192.168.123.152                super02   # hdfs client node
192.168.123.154                tst01          # hdfs data node
192.168.123.155                tst02          # hdfs data node
192.168.123.156                tst03          # hdfs data node

2. 설치 준비

먼저 JAVA 환경이 기본적으로 구현되어 있어야 한다.
기본적으로 JRE 1.5 이상의 환경이여야 하고, 가능하면, JRE1.6 환경에서 구현하도록 하자 .

sun.com 사이트에서 jre-1.6.x 버전을 받는다.

– Jre  설치

모든 서버에 설치 한다.

rpm -Uvh jre-6u10-linux-amd64.rpm

기본적으로 /usr/java/jre1.6.0_10 위치에 설치가 되어 진다.

– hdfs(namenode,datanode) 기본 디렉토리 구조 생성

mkdir -p /scratch/hdfs/hadoop
mkdir -p /scratch/hdfs/filesystem
mkdir -p /scratch/hdfs/local
mkdir -p /scratch/hdfs/home

;; /scratch 디렉토리는 설치하는 시스템의 디렉토리 구조에 맞게 변경가능하다.
;; 단 hdfs 하위 디렉토리 구조는 일치해야 한다.

3. 설치 및 설정

모든 서버 구성 요소에 hadoop을 설치한다.
설치는 tar.gz 압축 파일을 푸는 것으로 완료된다.

tar xzvf hadoop-0.18.1.tar.gz -C /engrid
ln -sf /engrid/hadoop-0.18.1 /engrid/hadoop

모든 서버에 hadoop 패키지를 설치해도 되고, 별도의 어플리케이션 서버를 두고 NFS 디렉토리
에 설치 하여 공유하여도 된다. NFS의 안정성 보장만 되면, 패키지 관리가 편할 것이다.

이제 설정을 한다. 모든 설정 파일은  /engrid/hadoop/conf 경로에 위치한다.

cd /engrid/hadoop/conf

– 기본 환경 설정 (모든 서버)

vi hadoop-env.sh
—————————————————————-
export HADOOP_HOME=/engrid/hadoop
export JAVA_HOME=/usr/java/jre1.6.0_10
—————————————————————

vi /etc/profile.d/hadoop.sh
—————————————————————
!/bin/sh

export PATH=/engrid/hadoop/bin:$PATH
export HADOOP_HOME=/engrid/hadoop
export JAVA_HOME=/usr/java/jre1.6.0_10
—————————————————————

vi masters
super01

vi slaves
tst01
tst02
tst03

vi hadoop-site.xml

<?xml version=”1.0″?>
<?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>

<!– Put site-specific property overrides in this file. –>

<configuration>
<property>
        <name>fs.default.name</name>
        <value>hdfs://super01:9000</value>
</property>

<property>
        <name>mapred.job.tracker</name>
        <value>super01:9001</value>
</property>

<property>
        <name>dfs.name.dir</name>
        <value>/scratch/hdfs/filesystem/name</value>
</property>

<property>
        <name>dfs.data.dir</name>
        <value>/scratch/hdfs/filesystem/data</value>
</property>

<property>
        <name>mapred.system.dir</name>
        <value>/scratch/hdfs/filesystem/mapreduce/system</value>
</property>

<property>
        <name>mapred.local.dir</name>
        <value>/scratch/hdfs/filesystem/mapreduce/local</value>
</property>

<property>
        <name>dfs.replication</name>
        <value>3</value>
</property>

</configuration>

– ssh key 인증

ensh 통해 처리 함.

– Namenode Format

nodenode 에서 실행한다.

/engrid/hadoop/bin/hadoop namenode -format
————————————————————————
[root@super01 ~]# hadoop namenode -format
08/10/24 11:56:16 INFO dfs.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = super01/192.168.123.151
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 0.18.1
STARTUP_MSG:   build = http://svn.apache.org/repos/asf/hadoop/core/branches/branch-0.18 -r 694836; compiled by ‘hadoopqa’ on Fri Sep 12 23:29:35 UTC 2008
************************************************************/
08/10/24 11:56:16 INFO fs.FSNamesystem: fsOwner=root,root,bin,daemon,sys,adm,disk,wheel
08/10/24 11:56:16 INFO fs.FSNamesystem: supergroup=supergroup
08/10/24 11:56:16 INFO fs.FSNamesystem: isPermissionEnabled=true
08/10/24 11:56:16 INFO dfs.Storage: Image file of size 78 saved in 0 seconds.
08/10/24 11:56:16 INFO dfs.Storage: Storage directory /scratch/hdfs/filesystem/name has been successfully formatted.
08/10/24 11:56:16 INFO dfs.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at super01/192.168.123.151
************************************************************/

– hdfs 데몬 시작
name node 에서 실행한다.

[root@super01 ~]# /engrid/hadoop/bin/start-all.sh
starting namenode, logging to /engrid/hadoop/logs/hadoop-root-namenode-super01.out
tst03: starting datanode, logging to /engrid/hadoop/logs/hadoop-root-datanode-tst03.out
tst02: starting datanode, logging to /engrid/hadoop/logs/hadoop-root-datanode-tst02.out
tst01: starting datanode, logging to /engrid/hadoop/logs/hadoop-root-datanode-tst01.out
super01: starting secondarynamenode, logging to /engrid/hadoop/logs/hadoop-root-secondarynamenode-super01.out
starting jobtracker, logging to /engrid/hadoop/logs/hadoop-root-jobtracker-super01.out
tst03: starting tasktracker, logging to /engrid/hadoop/logs/hadoop-root-tasktracker-tst03.out
tst01: starting tasktracker, logging to /engrid/hadoop/logs/hadoop-root-tasktracker-tst01.out
tst02: starting tasktracker, logging to /engrid/hadoop/logs/hadoop-root-tasktracker-tst02.out

이제 모든 서버에 hadoop 데몬이 실행되었다.

– hdfs 기본 테스트

cd /engrid/hadoop
hadoop dfs -put conf input

hadoops dfs -ls
Found 1 items
drwxr-xr-x   – root supergroup          0 2008-10-24 12:02 /user/root/input

– monitoring :

iostat -d -x 2 | awk ‘{print $9}’

vi hdfs_mon.sh
—————————————————————–
#!/bin/sh

hdfs_dev=/dev/sda
DATE=`date +%y%m%d-%H%M`
while [ 1 ]
do
/usr/bin/iostat -d -x 1 2 $hdfs_dev | awk ‘{print $8,$9}’  | grep -v wkB | grep -v “^[  ]*$” | tail -n 1 > /tmp/hdfs_mon.tmp

if [ $# -eq 1 ]
then
cat /tmp/hdfs_mon.tmp >> hdfs_mon_${1}.res
else
cat /tmp/hdfs_mon.tmp >> hdfs_mon_${DATE}.res
fi

done
—————————————————————-

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.