욱이의 냉철한 공부

[Hadoop, 하둡] 빅데이터 MAPREDUCE로 WordCount2 본문

카테고리 없음

[Hadoop, 하둡] 빅데이터 MAPREDUCE로 WordCount2

냉철한 욱 2021. 6. 22. 02:57

 

하둡 대표 명령어 - OS명렁어(unix명령어)하고 비슷한 shell 명령어

- hadoop fs -help : 하둡 fs에서 제공하는 명령어 확인

- hadoop fs -ls : 지정된 폴더나 파일 정보를 출력, 권한정보, 소유자, 생성일자, 바이트 수 확인

- hadoop fs -lsr : 현재 폴더 및 하위 디렉토리 정보까지 출력

- hadoop fs -du : 지정된 폴더나 파일에 사용량을 확인하는 명령어

- hadoop fs -dus : du는 폴더와 파일별 용량 / dus는 전체 합계 용량

- hadoop fs cat : 지정된 파일의 내용을 출력. 텍스트 파일만 출력

- hadoop fs -mkdir : 지정된 경로에 폴더를 생성, 이미 존재하면 error

- hadoop fs -put [운영체제폴더파일][HDFS] : 지정된 운영체제 폴더나 파일을 HDFS에 복사

- hadoop fs -get [HDFS][운영체제폴더파일] : HDFS에 저장된 파일이나 폴더를 OS로 이동

- hadoop fs -rmr : 지정한 파일이나 폴더를 삭제

- hadoop fs -sts : 지정된 경로의 통계 정보 출력

- hadoop fs -expunge : 휴지통비우기, HDFS는 삭제한 파일을 일정기간동안 보관함

-> 하둡명령어와 자바패키지와 함께 MAPREDUCE(wordcount)를 실행해보고 R과 연계하여 시각화까지 해볼께요~!

 


 

 

1. start-all.sh

- 하둡세상으로 접속한다.

- 앞으로 하둡프로그램에 접속하였을 때 하둡세상이라고 지칭하겠다.

 

2. jps

- 하둡세상을 가동하기 위한 환경이 잘 설정되어있는지 확인한다.

 

3. hadoop fs -ls

- 하둡세상의 홈에 어떤 폴더들이 있는지 확인한다.

 

4. hadoop fs -ls wiki/

- 하둡세상의 홈에서 wiki폴더 내부를 확인한다.

- 대용량들의 파일들이 있는 것을 확인할 수 있다.

- 64MB로 조각낸 HDFS형식으로 저장되어 있다.

 

5. ls /home/user1/*jar

- 미리 자바패키지를 운영체제의 홈에 이동해 놨다.

- /home/user1(운영체제의 홈 경로)에 jar 파일들이 있는지 확인한다.

- 사용하기 위한 WordCount2와 TopN이 있다는 것을 확인 할 수 있다.

 

6. jar -tf /home/user1/Word* | grep Word

- jar –tf 는 자바 명령어으로써 자바 프로그램 찾아준다.

- WordCount2파일 내에 wordcount 관련 클래스들이 있다는 것을 확인 할 수 있다.

 

 

* 인터넷으로 파일 확인

- 하둡세상의 파일들은 인터넷으로 접속하여도 확인 할 수 있다.

- http://localhost:50070 으로 접속하여 확인한다.

- http://localhost:50090은 작업을 했을 때 큰 문제가 있었는지 진행 상황들 확인할 수 있다.

- /user/user1까지가 하둡세상의 홈 경로이며 홈에서 wiki 폴더로 이동하였다는 것을 확인할 수 있다.

- 2M.ID.CONTENTS 파일 같은 경우 2.33GB의 대용량 데이터이다. (64MB 조각으로 HDFS로 나누어져 있다.)

 

* Wiki 분석 데이터

- 프리베이스에서 제공한 영문 위키피디아 문서 사용

- 이 문서들은 위키피디아 문서를 가공하여 XML 형태로 만든 것으로 원래 HTML로 된 위키피디아 문서보다 훨씬 더 처리하기 쉽다.

 

- 2M .TITLE.ID

각 라인마다 위키피디아 문서의 타이틀과 문서 ID가 탭 문자를 사이에 두고 나열된다. 타이틀이나 ID나 모두 유일한 값들로 모든 위키피디아 문서들의 각기 유일한 값을 갖는다.

- 2M .ID.CONTENTS

문서별로 그 문서의 텍스트를 나열한다. 한 라인마다 하나의 문서에 대한 정보가 나열되며 문서 ID와 문서 텍스트 사이에 탭 문자가 있다.

- 2M .SRCID.DSTID

문서 간의 연결 관계를 나타낸다. 한 문서(소스 문서)에 존재하는 다른 문서들(타겟문서)을 가리키는 링크들에 대해 소스문서 ID 타겟문서ID 의 형태로 표현한다. 소스문서에 존재하는 링크들의 수 만큼 위의 라인 들이 반복된다.

- RandomString

임의의 문다열들이 한 줄에 하나씩 나열된 것.

 

 

 

- MapReduce(WordCount)

 

7. hadoop jar WordCount2-1.0-SNAPSHOT.jar WordCount2 wiki/2M.ID.CONTENTS /output/result

WordCount2-1.0-SNAPSHOT.jar : 운영체제의 홈 경로에 WordCount2-1.0-SNAPSHOT.jar라는 자바패키지가 있다.

WordCount2 : 이 자바패키지에서 WordCount2라는 기능을 실행시킨다.

wiki/2m.ID.CONTENTS : 하둡세상의 wiki폴더의 2M.ID.CONTENTS파일을 대상으로 WordCount2 기능을 실행한다.

/output/result : 실행 결과를 하둡세상에 있는 output/result 폴더에 저장한다.

=> 자바로 이루어진 코딩을 직접 입력할 필요 없이 만들어진 자바 패키지를 실행한다.

 

* WordCount2

- WordCount2는 WordCount와 비교해서 크게 달라졌다.

- 입력으로 사용할 텍스트 파일이 다르다.

- 간단한 README.txt 파일이 아니라 2백만 개의 영문 위키피디아 페이지 (2M.ID.CONTENTS)들이다. 크기가 훨씬 큰 파일을 입력으로 사용하지만 앞서 와 마찬가지로 그 문서에 있는 단어들의 빈도수를 계산한다. 그런데 이 파일은 단순한 텍스트 파일이 아니라 문서 ID가 나오고 그 다음에 텍스트가 나오는 형식이라 문서 ID 부분을 무시하고 처리해야 한다.

- 그래서 이 버전에서는 입력 포맷으로 KeyValueTextInputFormat을 사용한다. 즉 맵의 키로는 문서 ID가 들어가고 값으로는 텍스트가 들어가는 형태가 된다.

 

* MapReduce

- WordCount라는 MapReduce 작업이 진행되고 있다는 것을 파랑색 박스로 확인 할 수 있다.

- 2.33GB인 이 빅데이터를 처리하는데 15~20분 가량 걸린다.

- Map과 Reduce 작업이 동시에 진행되고 있는 것을 확인 할 수 있다.

- Map 작업이 먼저 끝나면 Reduce 작업의 속도는 더욱 빨라진다.

 

 

 

8. hadoop fs -lsr /output/result

- 하둡세상에 있는 output/reuslt 폴더 내부에 있는 파일 및 폴더를 확인한다.

- part-r-00000로 Reduce 되어 있는 HDFS파일이 있는 것을 확인할 수 있다.

 

9. hadoop fs -tail /output/result/part-r-00000

- 뒷부분만 출력해본다.

 

 

 

10. hadoop fs -get /output/result/part-r-00000 $HOME/result.txt

- 하둡세상에 있는 HDFS파일인 part-r-00000을 운영체제의 홈에 result.txt명으로 복제시킨다.

 

11. ls $HOME/result.txt

file $HOME/result.txt

- 운영체제의 홈에 result.txt파일이 있는지 확인한다.

- 파일 형태가 어떤지 확인한다.

 

12. head $HOME/result.txt

- 운영체제의 홈에 있는 result.txt파일의 앞부분은 출력한다.