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(붉은 부분이 실제 자신의 환경에 맞게 편집할 부분임)
The name of the default file system. Either the literal string
"local" or a host:port for NDFS.
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.
define mapred.map tasks to be number of slave hosts
define mapred.reduce tasks to be number of slave hosts
$ 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
[-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 패키지를 이용하여 마운트를 하는 방법도 있지만
필자가 테스트 해본 결과 위의 방식이 가장 안정적이며 속도 또한 잘 나온다.
'Computer Science' 카테고리의 다른 글
파이썬 코드 50라인으로 웹 크롤러 만들기 (0) | 2012.10.05 |
---|---|
[프로그래밍 Tip] 아래는 프로그램 소스코드를 공개하는 사이트를 모아둔 것입니다. (0) | 2012.10.04 |
오픈 소스 클라우드 분석 (0) | 2012.08.20 |
Visual studio 2010 에서 소스파일을 UTF-8 로 자동변환 (0) | 2012.08.19 |
HTML5로 자신만의 3D 엔진을 만들자 (0) | 2012.07.29 |