Hands-On Exercise :Using HDFS 박영택 컴퓨터학부
Virtualbox 다운로드및설치
https://www.virtualbox.org/wiki/downloads 링크에서첫페이지에있는목록중현재사용중인 OS 에맞는버전선택및다운로드
설치시기타설정변경이필요한경우변경. 별다른설정이필요하지않은경우디폴트로설치진행하여도문제없습니다.
[ Virtualbox 설치후실행상태 ]
Cloudera Downloads for CDH5.5 이미지파일다운로드
http://www.cloudera.com/ 링크의첫페이지에서 Downloads 항목에서 QuickStart VMs 선택
SELECT A PLATFORM 에서가상머신은 VirtualBox 로선택후 GET IT NOW 클릭하여다운로드
Download 클릭시위와같은인적사항제출창팝업. 대충빈칸채워 submit 해도이미지파일다운로드에지장없음
아래체크후 SUBMIT
[ 다운받은파일구성요소 ] 다운로드시작및완료후이미지파일생성확인 SSUWIFI 사용시다운로드시간이매우오래걸릴수있기때문에인터넷속도가빠른곳에서다운로드 OR 다운로드파일을가지고있는친구한테 USB 로복사받는것을권장
파일 가상시스템가져오기 다운받은경로에서 ovf 확장자의파일로드
Cloudera 환경및사양설정 ( 위사진은현재디폴트값 ) 설정완료후 가져오기 하면해당이미지파일적재및부팅이수행 * RAM 은가능한넉넉하게주는게좋음
시작 버튼을누르면부팅이시작되며초기화면보임
Hadoop 실습환경 Hadoop 파일시스템테스트및결과확인
터미널실행!! 터미널실행후간단한명령수행확인 haoop fs mkdir testfolder 명령으로새디렉토리생성 hadoop fs ls 명령을통해새디렉토리생성확인
Hue : Hadoop 의 Eco system 으로서, 데이터분석을제공하는웹인터페이스 실행방법 : 브라우저실행위의그림상태에서 Hue 항목선택 ( 빨간박스 ) Username : cloudera, Password : cloudera 입력
좌측상단메뉴에서 터미널에서 hadoop fs mkdir 명령을통해생성했던 testfolder 디렉토리확인
Hadoop 시스템과의상호작용은 hadoop 이라는명령어를통해서한다. 만약터미널을열고, 인자없이명령어를실행하면도움말이나온다. 이와같이실행하기위해서, 아래명령어를실행 : $ hadoop hadoop 명령어는여러개의서브시스템으로세분화되어있다. 예를들어, HDFS 의파일을처리하기위한서브시스템과 MapReduce Processing Job 을관리하고실행하기위한서브시스템이있다.
Step 1: Exploring HDFS 하둡프로그램에서 HDFS 와관련된서브시스템은 FsShell 이라고한다. 이서브시스템은 hadoop fs 명령어로실행할수있다. 1. 데스크탑의 Terminal 아이콘을더블클릭하여 Terminal 을실행 2. 터미널에아래내용을입력 : $ hadoop fs 위내용을실행하면이서브시스템의모든명령어에대한설명을볼수있다.
Step 1: Exploring HDFS 하둡프로그램에서 HDFS 와관련된서브시스템은 FsShell 이라고한다. 이서브시스템은 hadoop fs 명령어로실행할수있다. 3. 아래내용을입력 : $ hadoop fs -ls / HDFS 안에 root 디렉토리의내용을볼수있다. 이디렉토리에는여러항목이있는데, 그중하나 가 /user 이다. 개별사용자는 home 디렉토리아래사용자이름으로된디렉토리를가지고있 다. 사용자의홈디렉토리는 /user/cloudera 이다.
Step 1: Exploring HDFS 하둡프로그램에서 HDFS 와관련된서브시스템은 FsShell 이라고한다. 이서브시스템은 hadoop fs 명령어로실행할수있다. 4. /user 디렉토리의내용을보려면아래와같은명령어를실행. $ hadoop fs -ls /user 디렉토리리스트안에 home(ex : /user/cloudera) 디렉토리를확인할수있다.
Step 1: Exploring HDFS 하둡프로그램에서 HDFS 와관련된서브시스템은 FsShell 이라고한다. 이서브시스템은 hadoop fs 명령어로실행할수있다. 5. 아래와같이입력후실행. $ hadoop fs ls /user/cloudera 경로상의아무런파일이없기때문에명령이자동으로종료된다. 만약 hadoop fs ls /foo 을실행하면이전에명령어를실행했을때와는다르게존재하지않 는디렉토리이기때문에에러메시지를보여준다. HDFS 의디렉토리구조와로컬파일시스템의디렉토리구조와는아무연관성이없다. 완전히분리 된네임스페이스라고봐야한다.
Sharing Folder Machine to VM #1 1 설정클릭 3 폴더아이콘클릭 v 4 기타선택자동마운트체크 2 공유폴더 5 경로설정확인후 OK e.g. 본예제는 Downloads 폴더를 Share 폴더로지정
Sharing Folder Machine to VM #2 2 바탕화면에 Computer sf_downloads 를열면내컴퓨터의 Downloads 폴더내용이보이는것을확인할수있음 권한문제로접근불가확인 1 Terminal 열고 sudo usermod a G vboxsf cloudera 입력후 System Shut Down Restart 복사 3 내컴퓨터의 Downloads 폴더에홈페이지에서받은 training_materials 폴더를넣어두면 VirtualBox 의 sf_downloads 에서도동기화되어폴더가보임 Training_materials 폴더를복사해서바탕화면 cloudera s Home 폴더를열어서거기에그대로복사하면실습세팅완료!
Step 2: Uploading Files 기존의파일시스템을탐색하는것외에 FsShell 로할수있는또다른중요한점은 HDFS 에새로운데이터를업로드하는것입니다. 1. 다음 Exercise 에서사용할샘플데이터를포함한디렉토리로경로를변경. $ cd ~/training_materials/developer/data 위와같은위치에서 ls 명령어를실행하면 shakespeare.tar.gz 와 shakespearestream.tar.gz, 2 개의파일과함께다른몇개의파일을볼수있다. 이 2 개의파일에는텍스트 형식으로셰익스피어의전집이포함되어있다. 지금은 shakespeare.tar.gz. 파일을사용한다.
Step 2: Uploading Files 기존의파일시스템을탐색하는것외에 FsShell 로할수있는또다른중요한점은 HDFS 에새로운데이터를업로드하는것입니다. 2. 아래의명령어를실행하여 shakespeare.tar.gz 를압축해제 : $ tar zxvf shakespeare.tar.gz 압축을해제하면여러개의파일을포함하고있는 shakespeare/ 디렉토리가로컬파일시스템 에생성된다. 3. HDFS 에디렉토리를삽입 : $ hadoop fs put shakespeare /user/cloudera/shakespeare 로컬파일시스템에 shakespeare 디렉토리를 HDFS 상의 /user/cloudera/shakespeare 디렉토리에복사를한다.
Step 2: Uploading Files 기존의파일시스템을탐색하는것외에 FsShell 로할수있는또다른중요한점은 HDFS 에새로운데이터를업로드하는것입니다. 4. HDFS 상의 home 디렉토리의컨텐츠리스트를보여준다. $ hadoop fs ls /user/cloudera 5. 이제경로를입력하지않고동일한 fs -ls 명령어를실행. $ hadoop fs ls 같은결과가나오는것을확인할수있다. -ls 명령어의디렉토리명을입력하지않은경우 home 디렉토리, 즉 /user/cloudera 를의미한다고가정하고실행된다.
Step 2: Uploading Files 기존의파일시스템을탐색하는것외에 FsShell 로할수있는또다른중요한점은 HDFS 에새로운데이터를업로드하는것입니다. 6. 추후진행할 Exercise 에서사용할웹서버로그파일도있다. 이파일은 Gzip 을통해서압축되어있 다. 이파일을로컬파일시스템에압축해제후업로드를하는것보다, 압축해제와업로드를한번 에진행하는것이좋다. 그러기위해서첫번째, HDFS 상의이파일을저장할폴더를하나생성 : $ hadoop fs mkdir weblog
Step 2: Uploading Files 기존의파일시스템을탐색하는것외에 FsShell 로할수있는또다른중요한점은 HDFS 에새로운데이터를업로드하는것입니다. 7. 그리고압축해제와업로드를한번에진행합니다. Gunzip 에 c 옵션을통해표준출력으로압축해 제하고, hadoop fs -put 명령어로 HDFS 상의데이터를올리면된다. $ gunzip -c access_log.gz hadoop fs -put - weblog/access_log ( -put 뒤의 는 rename 옵션 ) 8. hadoop fs -ls 명령어로아파치로그파일이 HDFS 상의 home 디렉토리안에있는것을확인할 수있다.
Step 2: Uploading Files 기존의파일시스템을탐색하는것외에 FsShell 로할수있는또다른중요한점은 HDFS 에새로운데이터를업로드하는것입니다. 9. 엑세스로그파일은큰파일이다 전체 500MB. 이파일을 5000 줄만포함된작은파일로만들고, HDFS 상의저장한다. 다음 Exercise 에서시험하기위한작은버전을사용할수있다. $ hadoop fs -mkdir testlog $ gunzip -c access_log.gz head -n 5000 hadoop fs put - testlog/test_access_log
Step 3: Viewing and Manipulating Files 이제 HDFS 에복사된몇가지의데이터일부를살펴보자. 1. 아래와같이입력 : $ hadoop fs -ls shakespeare /user/cloudera/shakespeare 디렉토리안에코메디, 용어, 역사, 시그리고희극으로구성된파일을확인할수있다.
Step 3: Viewing and Manipulating Files 이제 HDFS 에복사된몇가지의데이터일부를살펴보자. 2. glossary 파일은엄격하게보면셰익스피어의작품이아니다. 그러므로파일을삭제 : $ hadoop fs -rm shakespeare/glossary 원한다면이파일을남길수있다는것을알아두자. 남길경우, 연산이후셰익스피어파일에포함 될것이며, 그리고결과가약간불완전할것이다.
Step 3: Viewing and Manipulating Files 이제 HDFS 에복사된몇가지의데이터일부를살펴보자. 3. 입력 : $ hadoop fs cat shakespeare/histories tail -n 50 이터미널에헨리 IV, 제 1의마지막 50 줄을 print한다. 이명령어는맵리듀스프로그램의출력을보기편리하게한다. 대개, 맵리듀스프로그램의각각출력파일은터미널의전체파일을볼때매우불편합니다. 이러한이유로, fs -cat 명령어의출력에 head, tail, more나 less명령어를추가하는것을권장한다. 로컬유닉스명령에 fs -cat 명령어를출력할때, 파일의전체내용은여전히 HDFS에서추출하여로컬컴퓨터로전송된다는것을숙지하자. 일단로컬컴퓨터에선, 파일의내용은표시되기전에수정이됩니다.
Step 3: Viewing and Manipulating Files 이제 HDFS 에복사된몇가지의데이터일부를살펴보자. 4. 파일을다운로드하고로컬파일시스템에서조작하고싶다면, 당신은 fs -get 명령어를사용할 수있다. 이명령어는두개의인자를가진다 : HDFS 경로및로컬경로. HDFS 내용을로컬파일시스템에복사 : $ hadoop fs -get shakespeare/poems ~/shakepoems.txt $ less ~/shakepoems.txt
Other Commands 일반적인파일시스템조작을수행하기위해, FsShell 서브시스템과관련된여러가지명령어가있다 : mv, cp, mkdir, etc. 1. 입력 : $ hadoop fs FsShell 내명령어에대한간단한사용보고서를표시한다. 만약원한다면, 이명령어의몇가지 를실행해보자.