Hadoop HDFS BASIC Usage Over View : 하둡 사용 개요

 

 

출처 : 국가생물자원정보관리센터 (KOBIC ) - 조수안 연구원

Hadoop Installation Guide

Rockscluster 기반하에서 설명된 메뉴얼임을 알림.>

(# - > root, $ -> hadoop )

* 설치를 시작하기전에 JDK1.5 이상 System에 설치되어 있어야 함.

Step1) 계정 생성

# useradd hadoop(hadoop 계정을 생성해 준다)

# passwd hadoop(hadoop 계정의 password를 설정한다)

# rocks-user-sync(frontend와 노드간의 sync를 맞춰준다.

이작업을 하면 frontend에서 노드로 비번없이 접근이 가능함)

Step2) Hadoop System 폴더 생성

# mkdir /data/hadoop/hdfs(Hadoop관련 디렉토리를 생성한다.

(hdfs이후로는 절대 폴더를 생성하지 않아야함)

# chown -R hadoop.hadoop /data(폴더에 hadoop권한을 준다)

Step3) Hadoop Download

$ wget http://ftp.apache-kr.org/lucene/hadoop/hadoop-$version.tar.gz

(hadoop 홈폴더 안에 Download)

$ tar zxvf hadoop-$version.tar.gz(압축을 품)

$ cd hadoop-$version(압축 푼 폴더로 이동)

$ ant package(설치 command)

Step4) 설정파일 편집

$ vi ./conf/hadoop-env.sh

: 아래와 같이 JAVA_HOME 경로, slaves 설정 파일 경로를 편집합니다.

HADOOP_HOME 은 실제로 hadoop이 설치된 경로를 설정합니다.

export JAVA_HOME=/usr/java/jdk_$version

export HADOOP_HOME=/home/hadoop/HADOOP

export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves

export HADOOP_LOG_DIR=${HADOOP_HOME}/logs

$ vi conf/hadoop-site.xml(붉은 부분이 실제 자신의 환경에 맞게 편집할 부분임)

fs.default.name

clustome.kobic.re.kr:9000

The name of the default file system. Either the literal string

"local" or a host:port for NDFS.

mapred.job.tracker

clustome.kobic.re.kr:9001

The host and port that the MapReduce job tracker runs at. If

"local", then jobs are run in-process as a single map and

reduce task.

mapred.map.tasks

4

define mapred.map tasks to be number of slave hosts

mapred.reduce.tasks

1

define mapred.reduce tasks to be number of slave hosts

dfs.name.dir

/data/hadoop/hdfs/name

dfs.data.dir

/data/hadoop/hdfs/data

mapred.system.dir

/data/hadoop/hdfs/mapreduce/system

mapred.local.dir

/data/hadoop/hdfs/mapreduce/local

dfs.replication

2

$ vi conf/slaves(실제 slave노드들의 호스트 네임을 적어놓는다)

c0-1

c0-2

c0-3

.

.

.

Step5) 방화벽 설정

# vi /etc/sysconfig/iptables (Master Node)

-A INPUT -m state --state NEW -p tcp --dport 9000 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 9001 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50010 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50030 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50040 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50050 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50060 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50070 -j ACCEPT

# /etc/init.d/iptables restart

# vi /etc/sysconfig/iptables(Slave Node)

-A INPUT -m state --state NEW -p tcp --dport 50010 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50040 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50050 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50060 -j ACCEPT

# /etc/init.d/iptables restart

Step6) ssh key 생성

* Rocks 시스템의 경우 rocks-user-sync만 해주면 됨.

* 일반 리눅스 시스템일 경우엔 기존 ssh key 설정 방법과 같음.

Step7) NameNode Format

$ ./bin/hadoop namenode -format(해당 command를 실행 후 y를 누르면 포맷이 완료됨.)

Step8) 데몬 실행

$ ./bin/start-all.sh(마스터와 슬레이브의 모든 데몬을 한꺼번에 실행)

Step9) 실행 확인

* 웹브라우져에서 다음의 주소로 확인한다.

ex) http://clustome.kobic.re.kr:50030 (Hadoop Map/Reduce Administration)

ex) http://clustome.kobic.re.kr:50070 (Data Node Information)

Hadoop Operation Guide

○ Hadoop Startup

* Hadoop cluster를 시작하기 위해서는 HDFS와 Map-Reduce cluster를 구동시켜야 한다.

$ bin/hadoop namenode -format(새로운 분산파일시스템 포맷)

$ bin/start-dfs.sh(HDFS 구동(NameNode))

* bin/start-dfs.sh script 파일은 ${HADOOP_CONF_DIR}/slaves 파일에 리스팅 되어있는 모든

노드의 DataNode 데몬을 구동시킨다.

$ bin/start-mapred.sh(Map-Reduce 구동(JobTracker))

* bin/start-mapred.sh script 파일은 ${HADOOP_CONF_DIR}/slaves 파일에 리스팅 되어있는 모든

노드의 TaskTracker 데몬을 구동시킨다.

Hadoop Shutdown

$ bin/stop-dfs.sh(HDFS 중지(NameNode)

* bin/stop-dfs.sh script 파일은 ${HADOOP_CONF_DIR}/slaves 파일에 리스팅 되어있는 모든

노드의 DataNode 데몬을 중지시킨다.

$ bin/stop-mapred.sh(Map-Reduce 중지(JobTracker))

* bin/stop-mapred.sh script 파일은 ${HADOOP_CONF_DIR}/slaves 파일에 리스팅 되어있는 모든

노드의 TaskTracker 데몬을 중지시킨다.

★ 위의 모든 작업을 해주는 스크립트가 ./bin/start-all.sh 와 ./bin/stop-all.sh 이다.

Hadoop FSShell Usage

* Usage: java FsShell

[-fs ]

[-conf ]

[-D <[property=value>]

[-ls ]

[-lsr ]

[-du ]

[-dus ]

[-mv ]

[-cp ]

[-rm ]

[-rmr ]

[-expunge]

[-put ]

[-copyFromLocal ]

[-moveFromLocal ]

[-get [-crc] ]

[-getmerge [addnl]]

[-cat ]

[-copyToLocal [-crc] ]

[-moveTo!Local [-crc] ]

[-mkdir ]

[-setrep [-R] ]

○ Hadoop FSShell Example

* jar 파일 실행

[hadoop@clustome HADOOP]$ bin/hadoop jar hadoop-bioliterext.jar medline_2000 medline_2000_result

- hadoop-bioliterext.jar 파일은 파라미터로 input_dir 과 output_dir 을 받는다.

여기서는 medline_2000 이 input_dir, medline_2000_result 가 output_dir 이다.

* 리눅스 ls 명령 실행

[hadoop@clustome HADOOP]$ bin/hadoop dfs -ls

* 리눅스 로컬 데이터를 분산파일시스템으로 복사

[hadoop@clustome HADOOP]$ bin/hadoop dfs -copyFromLocal sample dfs_sample

- sample 이라는 디렉토리를 HDFS(Hadoop Distributed File System)의 dfs_sample 이라는

디렉토리로 복사하는 명령

* 분산파일시스템의 데이터를 로컬 디스크로 복사

[hadoop@clustome HADOOP]$ bin/hadoop dfs -copyToLocal dfs_sample sample

- dfs_sample 이라는 HDFS(Hadoop Distributed File System)의 디렉토리를 로컬 디스크의

sample로 복사하라는 명령

===================================

===================================

======= Fuse installing =============

====================================

리눅스 시스템으로 마운팅해서 일반 리눅스에서 사용하기

hdfs 를 리눅스 파일시스템으로 마운트 시키기 위해 준비해야 할 것은 다음과 같다

Fuse-Hadoop Installation Guide

<Hadoop 0.16.2 Version / Fuse-2.7.3 / Fuse-j-hadoopfs / Fuse-j-2.4를 기준으로 작성된 매뉴얼이며 Rockscluster 기반하에서 설명된 메뉴얼임을 알림.>

(# - > root, $ -> hadoop )

* 설치를 시작하기전에 JDK1.5 이상 System에 설치되어 있어야 함.

* 모든 설치가 끝난 후 마운트 전엔 반드시 Hadoop Demon이 올라와 있어야 함.

Step1) 설치파일 다운

$ mkdir /$Hadoop_Home/fuse

$ cd fuse

$ wget http://jaist.dl.sourceforge.net/sourceforge/fuse/fuse-2.7.3.tar.gz

-> Fuse-2.7.3

$ wget http://jaist.dl.sourceforge.net/sourceforge/fuse-j/fuse-j-2.4-prerelease1.tar.gz

-> Fuse-j-2.4

$ wget http://issues.apache.org/jira/secure/attachment/12371549/fuse-j-hadoopfs-03.tar.gz

->Fuse-j-hadoopfs

Step2) Fuse-2.7.3 설치

$ tar xvfz fuse-2.7.3(압축을 푼다.)

$ cd fuse-2.7.3(해당 패키지 폴더로 이동)

# ./configure(환경설정 및 make 파일 체크)

# make(반드시 root로 해야함. 이유는 /usr/local/lib 와 /usr/local/include에 관련 파일을 쓰기 때문)

# make install

# modprobe fuse

Step3) Fuse-j-2.4 설치

$ tar xvfz fuse-j-2.4(압축을 품)

$ cd fuse-j-2.4(해당 패키지 폴더로 이동)

$ vi build.conf(설정파일 편집)

- JDK_HOME=자신의 머신에 맞게 설정

- FUSE-HOME=자신의 머신에 맞게 설정

$ ant(빌드함)

$ make

Step4) Fuse-j-hadoopfs

$ tar xvfz fuse-j-hadoopfs(압축을 품)

$ cd fuse-j-hadoopfs(해당 패키지 폴더로 이동)

$ vi build.properties(설정파일 편집)

- JDK_HOME=/usr/java/jdk1.5.0_07(자바경로 설정)

- HADOOP_HOME=/home/hadoop/HADOOP(hadoop 경로설정)

- FUSE_HOME=/home/hadoop/fuse/(fuse 홈 설정)

- FUSE_J_HOME=/home/hadoop/fuse/fuse-j-2.4-prerelease1(fuse-j 홈 설정)

- FUSE_J_DOWNLOAD_URL=http://www.jaql.org/fuse-j/fuse-j.tar.gz

(fuse-j 다운로드 설정: 이 구문 설정을 해놓으면 fuse-j 가 없을 경우 자동으로 다운 받게 해줌.)

$ cp fuse-2.7.3/lib/.lib/libfuse.so.2 fuse-j-2.4/jni(해당 lib 복사)

$ ant compile -Dbuild-fuse-j-hadoopfs=1(컴파일 함)

# chown hadoop.hadoop /dev/fuse(hadoop관련 마운트 디바이스 파일을 hadoop 계정으로 줌)

$ ./hadoofs_fuse_mount.sh [마운트포인트]

(마운트 포인트는 / 및에 아무곳이라도 상관없다. 단, hadoop권한이 있어야 함.)

= 정말 수백번의 삽질 끝에 알아낸 설치 정보이다. 삽질결과 다음과 같은 정보를 뽑아낼 수 있었음.=

설치 후 리눅스 기본 명령어 테스트 결과 (cp, mkdir, scp ,rsync, rm, ls, vi... 등등) 잘 됨.

단, df 명령어를 하였을 경우 hadoop 파일시스템으로 마운트 된 정보는 나오질 않음

하지만 데이터가 실제로 들어가는지에 대한 확인 및 관리는 다음의 url로 확인이 가능함.

(http://clustome2.kobic.re.kr:50070)

remote 네트워크 파일 copy 수행 결과 평균 속도 30M ~ 35M를 유지하고 있으며 현재까진 안정적이다.

fuse-hadoop-0.1.0_fuse-j.2.4_hadoop.0.5.0 패키지를 이용하여 마운트를 하는 방법도 있지만

필자가 테스트 해본 결과 위의 방식이 가장 안정적이며 속도 또한 잘 나온다.

+ Recent posts