일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 기계학습
- 데이터처리
- 데이터시각화
- R그래프
- HIVE
- word2vec
- Deeplearning
- AI
- r
- SQL
- lstm
- 빅데이터처리
- 하둡
- 빅데이터
- 그래프시각화
- 주가예측
- 머신러닝
- 데이터분석
- ggplot
- NLP
- 데이터
- pandas
- Python
- CNN
- R프로그래밍
- 자연어처리
- Hadoop
- 그래프
- 딥러닝
- R시각화
- Today
- Total
욱이의 냉철한 공부
[Hadoop, 하둡] 빅데이터 MAPREDUCE로 WordCount2 본문
하둡 대표 명령어 - 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파일의 앞부분은 출력한다.