리한다. 그리고오픈소스이기때문에소규모회사및단체에서도무료로사용할수있으며디버깅, 모니터링을위한환경도제공한다. 본보고서에서는 Hadoop의설치를다루었던이전 TR [1] 에이어가상분산처리환경이아닌실제완전분산처리환경을구축하는방법에대해알아본다. 본보고서에서완전분산처리환경을구축하기

Similar documents
About me 현 ) 그루터 ( 책임개발자 전 ) 큐릭스, NHN, 엔씨소프트 저서 ) 시작하세요! 하둡프로그래밍 : 기초부터실무

PowerPoint 프레젠테이션

<30322E F6F7020BCB3C4A1BFCD20BED6C7C3B8AEC4C9C0CCBCC7C0C720B1B8B5BF28B1DDC5C2C8C62C20B1E8BCBCC8B82C20C0CCBBF3C1D8292E687770>

DKE Templete

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

슬라이드 1

System Recovery 사용자 매뉴얼

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

2 노드

Windows 8에서 BioStar 1 설치하기

PowerPoint 프레젠테이션

빅데이터분산컴퓨팅-5-수정

PowerPoint 프레젠테이션

슬라이드 1

Hadoop 예제 실행 매뉴얼

DBPIA-NURIMEDIA

JVM 메모리구조

항목

<30392DB5A5C0CCC5CDBAA3C0CCBDBA20B9D720C0CEC5CDB3DDC0C0BFEB2DC1A4C8B8B0E62E687770>

Contributors: Myung Su Seok and SeokJae Yoo Last Update: 09/25/ Introduction 2015년 8월현재전자기학분야에서가장많이쓰이고있는 simulation software는다음과같은알고리즘을사용하고있다.

네이버블로그 :: 포스트내용 Print VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52 /carrena/ VMware 에서 l

[ 2014 Capstone Design2 ] 지도교수 Twitter 분석시스템 < 졸업작품계획서 > 컴퓨터공학부 지도교수 민덕기교수님 T 박미관 김의명 제출일자

문서의 제목 나눔고딕B, 54pt

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

슬라이드 1

<30362DB5A5C0CCC5CDC5EBBDC520B9D720B3D7C6AEBFF6C5A92DBEE7C0CFB5EE2E687770>

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - chap01-C언어개요.pptx

< B1E8C7F6C1D65FC7CFB5D3B1E2B9DDBAF2B5A5C0CCC5CDB1E2B9FDB8A6C0CCBFEBC7D128BCF6C1A4292E687770>

<30302DB8F1C2F7BFDC2E687770>

IP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

PowerPoint 프레젠테이션

API 매뉴얼

고객 카드

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Microsoft PowerPoint 자동설치시스템검증-V05-Baul.pptx

Cloud Friendly System Architecture

쉽게 풀어쓴 C 프로그래밊

빅데이터_DAY key

HDFS 맵리듀스

리눅스 프로세스 관리

2장 변수와 프로시저 작성하기

H3250_Wi-Fi_E.book

Microsoft Word - CAE 클러스터 환경 구축-ABAQUS.doc

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

Microsoft PowerPoint - CSharp-10-예외처리

작성자 : 기술지원부 김 삼 수

BEA_WebLogic.hwp

PowerPoint 프레젠테이션

초보자를 위한 분산 캐시 활용 전략

슬라이드 1

DKE Templete

Windows Server NTP 설정가이드 Author 이종하 (lovemind.tistory.com) 1

PowerPoint 프레젠테이션

운영체제실습_명령어

Tablespace On-Offline 테이블스페이스 온라인/오프라인

The Pocket Guide to TCP/IP Sockets: C Version

Linux Server - FTP Good Internet 소 속 IDC실 이 름 정명구매니저

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PowerPoint 프레젠테이션

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

RHEV 2.2 인증서 만료 확인 및 갱신

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

들어가는글 2012년 IT 분야에서최고의관심사는아마도빅데이터일것이다. 관계형데이터진영을대표하는오라클은 2011년 10월개최된 오라클오픈월드 2011 에서오라클빅데이터어플라이언스 (Oracle Big Data Appliance, 이하 BDA) 를출시한다고발표하였다. 이와

*º¹ÁöÁöµµµµÅ¥-¸Ô2Ä)

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

(SW3704) Gingerbread Source Build & Working Guide

adfasdfasfdasfasfadf

소프트웨어설치 1. 소프트웨어설치및제거 ( 소스코드 ) 소스코드컴파일을이용한 S/W 설치 1. 소스코드다운로드 - 예 ) httpd tar.gz - 압축해제 : #tar xzvf httpd tar.gz - INSTALL 또는 README파일참조

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

Microsoft PowerPoint - Java7.pptx

ISP and CodeVisionAVR C Compiler.hwp

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기

UI TASK & KEY EVENT

ADP-2480

PowerPoint 프레젠테이션

Microsoft Word - PLC제어응용-2차시.doc

SBR-100S User Manual

HTCondor 입문_배상욱_ _ver1 .key

PowerPoint 프레젠테이션

4. CSR 값확인. (vi csr.pem) CSR(Certificate Signing Request) 즉, 인증서서명요청입니다. 이는자신이설치할웹서버에서 DN 값, 각종정보를암호화한파일로써 한국전자인증 신청란에서붙여넣으면됩니다. 인증서설치 1. 직접 CSR 및 KEY

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

Microsoft PowerPoint - 10Àå.ppt

졸업작품중간보고서 - 구글 MapReduce 를이용한클라우드컴퓨팅 조중연 서종덕 지도교수님진현욱교수님 ( 인 )

JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른

슬라이드 1

PowerPoint 프레젠테이션

1,000 AP 20,000 ZoneDirector IT 5, WLAN. ZoneFlex AP ZoneDirector. WLAN. WLAN AP,,,,,,., Wi-Fi. AP. PSK PC. VLAN WLAN.. ZoneDirector 5000 WLAN L

백봉현, 하일규, 안병철 Bong-Hyun Back, Ilkyu Ha, ByoungChul Ahn 1. 서론 최근들어소셜네트워크활성화로 에서발생하는대량의데이터 로부터정보를추출하여이를정치 경제 개인서비 스 연애등다양한분야에활용하고자하는노력이 계속되고있다 상의데이터를빠르게

DBMS & SQL Server Installation Database Laboratory

Microsoft Word - release note-VRRP_Korean.doc

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

Transcription:

빅데이터분석을위한 Hadoop 설치및활용가이드 (II) Installation and Operation Guide of HADOOP for Big-data Analysis (II) 옥창석 부산대학교컴퓨터공학과, 그래픽스응용연구실 csock@pusan.ac.kr Abstract 본보고서에서는빅데이터분석을위한 Hadoop 설치및활용가이드 (I) [1] 에서다루었던 pseudo-distributed mode 에서확장하여실제분산환경에맞는 fully distributed mode 로설정하는방법을알아본다. 그리고 4 대의서버가연결된완전분산처리환경에서 Hadoop 의 wordcount 예제를구동해보고, wordcount 예제를통해 Hadoop 에서 MapReduce 를이용하여분산처리하는과정을알아보는것으로본보고서를마친다. 향후에는구축된 Hadoop 시스템을이용하여 BWT 를수행하는방법에대해연구할것이다. Keywords: Big-data, Hadoop, MapReduce, Distributed processing system 1 서론 이전의기술보고서 [1] 에서소개한바와같이, 최근소셜네트워크는물론활발한인터넷정보교류로인해방대한데이터들이생성되고있다. 이러한흐름에따라방대한데이터를분석하여시장의추세, 사용자들의성격등을예측하는빅데이터가각광을받고있다. 하지만수 TB 의초대용량데이터를분석하는것은엄청난시스템요구사항을필요로하기때문에기존의일반적인처리방식을사용하는것은불가능하다. 따라서다수의소규모시스템을엮어서로상호작용하며처리하는방식인분산처리기법이다시활발히연구되고있으며, 그중 Hadoop이라는맵리듀스기반의분산처리프레임워크가오픈소스로공개되면서빅데이터의진입장벽이낮아졌다. Hadoop은서버같이대규모시스템과달리비교적불안정한소규모 PC를대상으로분산처리작업을하도록설계되었기때문에안정성이뛰어나며설치및사용에있어편리하다. 또한맵리듀스를기반으로하는분산처리환경으로인해실제프로그래머는맵과리듀스부분만을프로그래밍하면작업의분할및할당, 결과종합은 Hadoop 프레임워크에서모두자동으로처 1

리한다. 그리고오픈소스이기때문에소규모회사및단체에서도무료로사용할수있으며디버깅, 모니터링을위한환경도제공한다. 본보고서에서는 Hadoop의설치를다루었던이전 TR [1] 에이어가상분산처리환경이아닌실제완전분산처리환경을구축하는방법에대해알아본다. 본보고서에서완전분산처리환경을구축하기위해사용한서버는총 4개이며, 그림 1과같이시스템구조를설계하였다. NameNode Host : diamond IP : 111.111.111.74 Secondary NameNode Host : photo IP : 111.111.111.89 MASTER DataNode Host : topaz IP : 111.111.111.73 DataNode Host : ruby IP : 111.111.111.96 SLAVE 그림 1: 4 개의서버를이용한완전분산처리모드구축설계도. Diamond 와 photo 가마스터서버가되며, topaz 와 ruby 가슬레이브가된다. NameNode인 diamond는실제 master역할을하는노드이며, photo는 diamond의동작에이상이발생하면대체되어전체시스템의안정성을향상시키는역할을수행하는 secondary NameNode이다. 초기 jobtracker는 NameNode인 diamond에서만동작하며, secondary NameNode 인 photo에서는동작하지않는다. 그리고 topaz와 ruby는 DataNode로써 diamond의명령을받아 Hadoop 프레임워크에서작업을처리한다. Tasktracker는 topaz와 ruby 두군데서동작한다. 2 배경지식 Hadoop은총세가지모드로나누어진다. 첫번째는 standalone mode로데몬프로세스가동작하지않고모두단독의 JVM 내에서동작하는모드이다. 이모드는테스트와디버그가쉽기때문에개발에적합하다. 두번째는 pseudo-distributed mode로 Hadoop 데몬프로세스가로컬컴퓨터에서동작하므로클러스터를시뮬레이션할수있다. 세번째는 fully distributed mode 로하둡데몬프로세스가여러컴퓨터로구성된그룹에서동작한다. Standalone mode는하둡을설치하면기본으로설정된값을사용하면바로사용할수있다. Pseudo-distributed mode는약간의설정파일을수정함으로써환경을구축할수있고, fully distributed mode는 pseudo-distributed mode에서약간의인터페이스를조절하고, 환경설정을 2

수정함으로써구축할수있다. 본격적인설치과정에들어가기에앞서, 간단하게 Hadoop에서사용하는용어를정리하면아래의표 1과같다. 표 1: Hadoop에서사용하는용어목록 [1]. 영문표기 한글표기 의미 HDFS 하둡분산파일시스템 다수의클러스터를제어하는분산파일시스템 NameNode 네임노드 파일시스템메타데이터관리와컨트롤서비스제공 DataNode 데이터노드 블록저장과읽기서비스제공 Master 마스터 파일시스템을관리하고클라이언트의접근을통제 Slave 슬레이브 마스터에의해제어되는클라이언트 Map 맵 각각의입력레코드를병렬로처리 Reduce 리듀스 모든관련레코드는하나의개체로처리 JobTracker 잡트레커 Job의제출, 모니터링, task 관리 TaskTracker 테스크트레커 Map/Reduce task 관리 3 Fully Distributed Mode 설정 본보고서는이전의보고서 [1] 를기반으로 pseudo-distributed mode에서 fully distributed mode 로변경하는방법을소개한다. 따라서본보고서의설정사항을따르기전에이전의보고서를참고하여 Hadoop의기본설치및환경설정방법을수행해야한다. 이전의보고서를따라 pseudodistributed mode 설정을완료하였다면, 각각의서버들끼리아무런제약없이 ssh로접속하여명령을교환할수있도록해야한다. ssh의설정과정은세부적으로 3단계로나누어지며, ssh-keygen 을이용하여공개키를생성하고생성된공개키를등록하고, ssh를이용하여접속가능여부를확인하는작업으로구성된다. ssh를이용한통신설정이완료되면, pseudo-distributed mode에서수정했던 conf디렉토리내의파일들을완전분산모드에맞도록수정한다. 더욱자세한사항은필자의블로그 [2] 를참조하기바란다. Fully distributed mode를설정하는데사용하는모든서버들은각자의 hostname을가지고있으며각각의서버 ip와 hostname을모든서버의 /etc/hosts파일에등록이되어있어야한다. hosts파일을수정하지않는다면아래의설명에서사용하는모든 hostname은 ip로바꾸어야한다. 3.1 공개키생성 본작업은 diamond 와 photo, topaz, ruby 에서각각이루어져야한다. 즉, diamond 에서공개키 를생성하고, photo 에서공개키를생성하는식으로모든과정이병렬적으로각각의서버에서 3

실행되어야한다. 공개키를생성하는명령어는아래와같다. [ $ssh-keygen ] 각각의서버에서공개키를생성하는위명령어를입력하면다양한질문이나타나는데, 이 경우에모두아무런입력없이엔터만쳐서넘어가도록한다. 공개키생성과정을통해생성된 파일은 /.ssh/id rsa.pub 이며각노드별로생성하여파일명을변경한예는아래와같다. [ /.ssh/diamond id rsa.pub ] [ /.ssh/photo id rsa.pub ] [ /.ssh/topaz id rsa.pub ] [ /.ssh/ruby id rsa.pub ] 위 4 개의파일을각서버별로 ftp 등을이용하여모두가지도록한뒤, 4 개의파일을 cat 명령어를사용하여 authorized keys 에 append 한다. 3.2 공개키등록각서버에서생성한공개키 4개를각각의서버가모두가지도록한다음, 비밀번호입력없이상호간의 ssh접속이가능하도록 ssh의 authorized keys에등록한다. 이과정도각각의서버에서이루어져야한다. [ $cat /.ssh/diamond id rsa.pub >> /.ssh/authorized keys.pub ] [ $cat /.ssh/photo id rsa.pub >> /.ssh/authorized keys.pub ] [ $cat /.ssh/topaz id rsa.pub >> /.ssh/authorized keys.pub ] [ $cat /.ssh/ruby id rsa.pub >> /.ssh/authorized keys.pub ] ssh디렉토리내의 authorized keys는 ssh를이용하여접속시비밀번호입력등의인증과정을생략할수있도록인증된키를관리하는파일이다. 즉, authorized keys에자신의키가등록되어있으면별다른인증절차없이바로 ssh 접속이가능하다. 따라서본보고서에서는 Hadoop이설치된 4개의서버들각각에모든서버들의공개키를한꺼번에등록하여상호간에제약없이 ssh통신을가능하도록한것이다. 4

3.3 ssh를이용한접속확인모든공개키를정상적으로등록하였다면 ssh를이용하여아래와같은명령어를입력하였을때, 비밀번호를묻지않아야한다. 이작업또한모든서버에서모든접속가능한쌍에대해수행해보아야한다. [ diamond$ssh diamond ] [ diamond$ssh photo ] [ diamond$ssh topaz ] [ diamond$ssh ruby ] [ ruby$ssh diamond ] 만약비밀번호를묻는다면공개키가정상적으로등록되지않은것이니공개키를생성하고 등록하는과정에서빠뜨린것이없는지확인해봐야한다. 3.4 환경설정파일수정 Fully distributed mode로변경하기위해서는 pseudo-distributed mode로설정할때수정했던 conf디렉토리내부의환경설정파일들을바꿔줘야한다. 수정할파일은 core-site.xml, hdfssite.xml, mapred-site.xml, masters, slaves 파일이다. 환경설정파일은마스터서버인 diamond 에서만수행하며, 모든수정이끝난후에나머지서버들에게공통적으로동기화시켜준다. 각환경설정파일에서사용하는옵션들에대한설명은하둡홈페이지의맵리듀스튜토리얼 [3] 을참고하기바란다. 3.4.1 core-site.xml core-site.xml파일에서는 HDFS와맵리듀스에공통적으로사용하는 I/O 등을설정할수있다. 본보고서에서는완전분산모드의마스터서버인 diamond를네임노드로설정한다. 이때사용되는포트는일반적으로 9000번을사용한다. [ csock#vi core-site.xml ] <property> <name>fs.default.name</name> <value>hdfs://diamond:9000</value> </property> 5

3.4.2 hdfs-site.xml hdfs-site.xml에서는네임노드와보조네임노드, 데이터노드등 HDFS 데몬을설정할수있다. 본보고서에서는아래와같이 HADOOP HOME/dfs에 name과 data 디렉토리를만들었다. 그리고데이터의안정성을위해사본 3개를만들도록설정한다. 이렇게사본의개수를설정하게되면각각의데이터노드에데이터의사본들이만들어져저장되며, 일부가손상되더라도사본을이용하여복구할수있어안정성이높아진다. [ csock#vi hdfs-site.xml ] <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.name.dir</name> <value>/home/csock/hadoop/hadoop-1.0.4/dfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/home/csock/hadoop/hadoop-1.0.4/dfs/data</value> </property> 3.4.3 mapred-site.xml mapred-site.xml 에서는잡트레커와테스크트레커등맵리듀스와관련된데몬을설정할수있다. 본보고서에서는네임노드인 diamond 의 9001 번포트에잡트레커를할당하였다. [ csock#vi mapred-site.xml ] 6

<property> <name>mapred.job.tracker</name> <value>diamond:9001</value> </property> <property> <name>mapred.system.dir</name> <value>/home/csock/hadoop/hadoop-1.0.4/mapred/system</value> </property> <property> <name>mapred.local.dir</name> <value>/home/csock/hadoop/hadoop-1.0.4/mapred/local</value> </property> 3.4.4 masters masters파일은마스터가될네임노드의호스트명을한줄에하나씩적으면된다. masters파일에적힌노드는보조네임노드 (Secondary NameNode) 가되며, 실제마스터인네임노드는 coresite.xml에설정한 diamond이다. 즉, masters파일에 diamond를넣게되면 diamond는네임노드이면서보조네임노드가되는것이다. 일반적으로보조네임노드는네임노드에문제가생겼을때, 네임노드의역할을대신하게되는안정성과관련된것으로, 네임노드와보조네임노드는서로분리된시스템으로설정해야한다. 따라서본보고서에서는앞서소개한설계사항에맞춰 photo 를보조네임노드로설정한다. [ csock#vi masters ] photo 3.4.5 slaves slaves파일은데이터노드가되어각각의테스크를처리하는노드를한줄에하나씩적으면된다. 본보고서에서는 fully distributed mode이기때문에 topaz와 ruby를데이터노드로지정한다. 이렇게하면최종적으로네임노드가 diamond, 보조네임노드가 photo, 데이터노드는 topaz와 ruby가된다. [ csock#vi slaves ] 7

topaz ruby 3.5 환경설정파일동기화지금까지수정한모든환경파일은 diamond뿐아니라다른서버들도같은환경설정을가지도록동기화해주어야한다. 리눅스의 ssh접속을열어놓았으므로리눅스의 rsync명령어를통해 photo, topaz, ruby서버에 diamond에서수정한환경설정파일들을모두동기화한다. 이때, diamond에서수정한파일의내용은절대변경해서는안되며수정한상태그대로각각의서버의환경설정파일로동기화되어야한다. rsync명령어는 diamond의 conf디렉토리내에서실행하며대상경로는자신이하둡을설치한경로로변경하면된다. [ diamond$rsync -av -e ssh. photo:$hadoop INSTALL/conf ] [ diamond$rsync -av -e ssh. topaz:$hadoop INSTALL/conf ] [ diamond$rsync -av -e ssh. ruby:$hadoop INSTALL/conf ] 3.6 방화벽설정 Pseudo-distributed mode와달리 fully distributed mode에서는각각의독립된서버상에서통신이이루어지기때문에방화벽설정에의해데이터송수신에제약이발생할수있다. 따라서 Hadoop을설치한 4대의서버간에는방화벽설정을풀어제약을없애야한다. 방화벽설정을바꾸는방법은리눅스의데스크탑 GUI화면에서방화벽설정에들어가서해당포트를개방해주면된다. 이때 Hadoop에서사용하는포트인 9000, 9001, 50000 50100번포트를개방한다. 만약데스크탑 GUI가없는리눅스환경이라면 /etc/sysconfig/iptables파일을수정하여개방할포트를설정해주면된다. 3.7 Hadoop 네임노드포멧 모든설정이끝났으면수정한사항을적용하여 HDFS 를포멧해야한다. 다음의명령어를이용 하여 Hadoop 의네임노드를포멧한다. [ csock#hadoop namenode -format ] 만약이전에작업한내용이남아있거나노드의정보 (ip 또는호스트명 ) 가변경된경우, 다음 의순서에따라포멧해야에러가발생하지않는다. 8

1. NameNode(diamond) 에서 NameNode 를포멧 [ diamond$hadoop namenode -format ] 2. diamond 를제외한다른노드의 HDFS 디렉토리완전삭제. 이때, 삭제할디렉토리경로는 hdfs-site.xml 에서 dfs.data.dir 에서설정한경로이다. [ photo$rm -rf /home/csock/hadoop/hadoop-1.0.4/hdfs ] [ topaz$rm -rf /home/csock/hadoop/hadoop-1.0.4/hdfs ] [ ruby$rm -rf /home/csock/hadoop/hadoop-1.0.4/hdfs ] 현재까지 conf 디렉토리내의파일들을수정하여 pseudo-distributed mode 로설정하는방법 을살펴보았다. 다음으로는정상적으로 Hadoop 이구동되는지를확인하기위해간단한예제를 실행해본다. 4 Hadoop 에서의 MapReduce 구동 4.1 Hadoop 실행 - 맵리듀스와 HDFS Hadoop 완전분산처리모드로의환경설정이끝났으면 Hadoop를이용하여작업을처리하는간단한예제인 wordcount가 MapReduce에서어떻게처리되는지를살펴본다. 예제를살펴보기에앞서 conf 디렉토리에서수정한파일들을이용하여 Hadoop을구동한다. Hadoop을구동하는방법은아래와같다. HDFS와맵리듀스를함께시작 : [ csock#start-all.sh ] HDFS와맵리듀스를함께중지 : [ csock#stop-all.sh ] HDFS만시작 : [ csock#start-dfs.sh ] HDFS만중지 : [ csock#stop-dfs.sh ] 맵리듀스만시작 : [ csock#start-mapred.sh ] 맵리듀스만중지 : [ csock#stop-mapred.sh ] 모든과정이정상적으로이루어졌다면 start-all.sh를두번실행했을때, 각각의프로세스번호가출력된다. 만약잘못되었다면 logging이라는메시지와함께로그가담긴파일명을출력한다. 해당로그는 Hadoop이설치된디렉토리 /home/csock/hadoop/hadoop-1.0.4/logs에있으며 *.log파일을열어보면에러메시지등을확인할수있다. 주의할점은 *.log파일은 append 9

되기때문에가장최근로그를확인하고싶으면아래쪽으로내려서확인해야한다. 또한그림 2 와같이웹브라우저를통해현재 Hadoop 노드들의상태를모니터링할수있다. 1. 네임노드인 diamond에서의모니터링페이지맵리듀스모니터링 : http://diamond:50030 HDFS 모니터링 : http://diamond:50070 2. topaz와 ruby에서의 50060(tasktracker) 를이용한테스크모니터링페이지 Task 모니터링 : http://topaz:50060, http://ruby:50060 (a) (b) 그림 2: 맵리듀스모니터링화면 (a) 와 HDFS 모니터링화면 (b). (a) 에서는각노드들이맵리듀스를수행하는과정을모니터링할수있으며각각링크를누르면더욱자세한정보를확인할수있다. (b) 에서는 HDFS 의용량및살아있는노드의정보와죽어있는노드의정보를확인할수있다. 4.2 MapReduce의동작 MapReduce는구글에서 2004년에논문 [4] 으로발표한분산처리용소프트웨어프레임워크이다. Hadoop은분산처리를위해 MapReduce를내부적으로사용하고있으며, Map과 Reduce라는두개의단계를통해분산처리를수행한다. 본보고서에서는 Hadoop에서사용하는 MapReduce의기본적인구조를소개하며사용자로부터입력받은작업인잡 (job) 을어떻게분산처리하는지를소개한다. 개략적인 Hadoop에서의 MapReduce를나타내면그림 3과같다. Hadoop에서 MapReduce를수행할때, 각단계별세부동작을거친다 [5]. 1. 사용자는잡에대한실행정보를설정한후 waitforcompletion 메서드를호출해잡을실 행한다. 10

네임노드 데이터노드 클라이언트 1. 맵리듀스잡실행잡클라이언트 2. 신규잡제출 3. 입력스플릿생성 입력데이터 Job Tracker Job Job Job 4. 잡할당 Task Tracker Task Task Task 매퍼 5. 매퍼실행 파티셔너 매퍼 키 - 값 키 - 값 6. 정렬, 병합 7. 리듀서실행 리듀서 리듀서 키 - 값 키 - 값 8. 출력데이터저장 출력데이터 그림 3: Hadoop 에서의 MapReduce 구조도. 크게네임노드와데이터노드로나누어지며실제 MapReduce 가동작되는곳은데이터노드쪽이다. 2. 잡인터페이스에서는새로운잡클라이언트객체가생성되고, 이객체가잡트래커에접속해잡을실행해줄것을요청한다. 이때, 잡트래커는잡클라이언트에게새로운잡ID를반환하고, 잡ID를전달받은잡클라이언트는사용자가설정한출력경로를확인하는데, 이미존재하는경로를입력했으면에러가발생하고맵리듀스프로그램이종료된다. 3. 잡클라이언트는잡의입력데이터에대한입력스플릿을계산한다. 입력스플릿이계산되고나면입력스플릿정보, 설정파일, 맵리듀스 JAR파일을 HDFS에저장하고, 잡트래커에게잡을시작할준비가끝났음을알려준다. 4. 잡클라이언트의메시지를받은잡트래커는잡을큐에등록하고, 잡스케줄러가큐 (Queue) 를가져와서초기화한다. 초기화후잡스케줄러는잡클라이언트가 HDFS에등록한입력스플릿정보를가져와입력스플릿의개수만큼맵태스크를생성하고 ID를부여한다. 태스크트래커는주기적으로잡트래커의하트비트라는메서드를호출해서자신의상태정보를잡트래커에게알려준다. 이상태정보에는 CPU, 메모리, 디스크와같은서버가용리소스정보와현재실행중인태스크개수, 실행가능한최대태스크개수, 신규태스크실행가능여부와같은태스크트래커의실행정보가저장된다. 잡트래커는하트비트메서드를 11

통해전달된정보를이용해어떠한태스크트래커에게태스크실행을요청할지결정한후, 해당태스크트래커에태스크실행을요청한다. 5. 태스크트래커는잡트래커가할당해준맵태스크를실행한다. 맵태스크는사용자가설정한매퍼클래스이며, 입력스플릿은키와값의형태로맵태스크의입력데이터로전달된다. 맵태스크는맵메서드에정의돼있는로직을실행하고, 출력데이터를메모리버퍼에저장한다. 이때파티셔너는해당출력데이터가어떤리듀스태스크에전달돼야할지를결정하고, 그에맞는파티션을지정해준다. 파티션에서는메모리에있는데이터를키에따라정렬한후, 로컬디스크에저장한다. 파티션별로디스크저장이완료되면이파일들은하나의출력파일로병합되고정렬된다. 6. 리듀스태스크는사용자가설정한리듀서클래스이다. 리듀스태스크는자신이필요한맵태스크의모든출력데이터가있어야만작업을실행할수있다. 이를위해, 맵태스크는출력이완료되면자신을실행한태스크트래커에게작업이성공적으로끝났다고알려주고, 이메시지를받은태스크트래커는잡트래커에게해당맵태스크의상태와맵태스크의출력데이터경로를알려준다. 리듀스태스크에서는주기적으로잡트래커에게맵태스크의출력데이터경로를물어보며, 출력데이터경로가정상적으로조회되면해당출력데이터를로컬노드로복사한다. 이때파일이크면디스크로복사하고, 작을경우메모리로복사한다. 7. 리듀스태스크는모든맵태스크의출력데이터를복사한후, 맵태스크의출력데이터를병합한다. 병합이완료되면리듀스메서드를호출해서분석로직을실행한다. 8. 리듀스태스크는출력데이터를 HDFS에 part-nnnnn이라고저장한다. 여기서 nnnnn는파티션 ID를의미하며, 00000부터 1씩증가된다. 이전 TR [1] 에서다룬 wordcount 예제를통해실제 MapReduce 과정이어떻게수행되는지를 살펴보면그림 4 와같다. 각단계별로세부적인동작과정은아래와같다 [5]. 1. 맵리듀스는입력파일을키와값형식의데이터로분류한다. 이예제에서키는라인번호이고값은문장이다. 2. 키와값형식의데이터는맵메서드의입력데이터로전달된다. 3. 맵메서드는라인번호별로문장을체크해키에해당하는글자별로글자수를출력한다. 4. 맵리듀스는맵메서드의출력데이터를정렬하고병합한다. 5. 4번의결과가리듀스메서드의입력데이터로전달된다. 12

Word count 입력데이터분리 맵메서드 정렬과병합 Map / Reduce Example read a book write a book <#1, read a book> <#2, write a book> 1 2 Map 3 <read, 1> <a, 1> <book, 1> <write, 1> <a, 1> <book, 1> 4 입력데이터 키 : 라인번호값 : 라인 키 : 글자값 : 글자수 리듀스메서드 저장 <read, (1)> <a, (1, 1)> <book, (1, 1)> <write, 1> 5 Reduce 6 <read, 1> <a, 2> <book, 2> <write, 1> 7 read, 1 a, 2 book, 2 write, 1 키 : 글자값 : 글자수목록 키 : 글자값 : 글자수합계 출력데이터 그림 4: WordCount 예제를통한 MapReduce 의동작과정. Mapper 에서는 (key:value) 를 (word:1) 로만들어출력하며, Reducer 에서는 (key:value) 를 (word: 글자수의합 ) 으로만들어출력한다. 5 결론 본보고서에서는 Hadoop의기본개념과함께실제완전분산처리환경인 fully distributed mode 로환경을설정하는방법을알아보았다. 앞선 TR [1] 에서소개한바와같이 Hadoop은오픈소스프로젝트로활발하게업그레이드되고있으며현재 2.0.3-alpha까지릴리즈되었다. 또한안정적인서버군을고려하고만들어진것이아니라일반적이고저렴한 PC환경을고려하여설계되었기때문에프레임워크자체의안정성및확장성이높다. 무엇보다도최근다양한분야에서끊임없이쏟아지는방대한데이터를처리하기위한빅데이터프로젝트가상당한인기를끌고있기때문에이러한흐름에맞춰빅데이터를분석하는데필요한분산처리시스템을사용하는방법을익히는것이중요하다. 따라서본보고서에서는본격적인활용을위해 Hadoop을완전분산처리환경으로구축하는방법을소개하고간단한예제를실행해보았으며 MapReduce 상에서어떻게예제가동작되는지를살펴보았다. 향후에는구축된분산처리환경을이용하여 BWT를수행하는방법을연구할것이다. 마지막으로 Hadoop 가이드 [1] 와본보고서에서다룬내용을요약하면아래와같다. 1. Hadoop 의설치및 pseudo-distributed mode 환경설정 2. Pseudo-distributed mode 에서의 WordCount 예제실행 3. Hadoop 의 fully distributed mode 환경설정 13

4. MapReduce 를이용한 WordCount 의동작과정 References [1] 옥창석, 빅데이터분석을위한 Hadoop 설치및활용가이드 (i), TR-13-02-OCS, 2013. [2] 옥창석, [ 빅데이터 ] (2) HADOOP, Fully Distributed mode 설정법, http://blog.naver. com/adonis50/178774994. [3] Apache, MapReduce Tutorial, http://hadoop.apache.org/docs/r1.0.4/mapred_ tutorial.html. [4] Jeffrey Dean and Sanjay Ghemawat, MapReduce: simplified data processing on large clusters, Commun. ACM, vol. 51, no. 1, pp. 107 113, Jan. 2008. [5] 정재화, 시작하세요! 하둡프로그래밍, 위키북스, 2012. 14