본문 바로가기
기타 도서 리뷰/시작하세요 하둡 프로그래밍

시작하세요 하둡프로그래밍 5장

by java개발자 2016. 12. 6.

미국 항공편 운항 통계 데이터 다운로드

http://stat-computing.org/dataexpo/2009/


download.sh

-------------------------------------

#! /bin/sh


for ((i=1987; i <= 2008 ; i++)) ; do

#wget http://stat-computing.org/dataexpo/2009/$i.csv.bz2

bzip2 -d $i.csv.bz2

sed -e '1d' $i.csv > $i_temp.csv

mv $i_temp.csv $i.csv

done

-------------------------------------


로컬(윈도우)에서 작성하고, FTP로 리눅스로 복사해서 그런지 소유자가 root 이다.

소유자 변경 : chown http://mintnlatte.tistory.com/279

hadoop > chown hadoop:hadoop dataexpo -R

hadoop/dataexpo > chmod 755 download.sh


*배치실행

[hadoop@wikibooks01 dataexpo]$ ./download.sh

-bash: ./download.sh: /bin/sh^M: bad interpreter: 그런 파일이나 디렉터리가 없습니다

에러발생>
원인 : 
윈도우에서 작성하고, 리눅스에서 실행해서 그런듯 하다.
해결:
1
^M <- 이 문자가 문제 (http://changpd.blogspot.kr/2013/08/linux-bad-interpreter.html
:%s/^M$//g 으로 치환하기

2

vi 에서 치환이 안된다-_-;??? 그냥 vi 편집모드에서 하나하나씩 지움.


*데이터 업로드

[hadoop@wikibooks01 hadoop]$ ./bin/hadoop dfs -mkdir input

[hadoop@wikibooks01 hadoop]$ ./bin/hadoop dfs -put /home/hadoop/dataexpo/*.csv input

*[실행환경]

i7-4712MQ CPU 2.30GHz 노트북(4코어(하이퍼스레딩으로 8코어), 500G SSD, 1T HDD, 16G램)

window7 ultimate K 64Bit

virtualbox centos6.8 4개PC - 각 2G램, 128G HDD, 1코어(총 8코어 중)

네임노드, 보조네임노드, 데이터노드3개

(17분 소요) - 총12G - 데이터(22개파일, 평균 500M) 파일들을 복사본3개씩 64M 블록으로 만드는데 17분이 걸리면,,, 오래걸리는 것 같은데???


* fs 가 아니라 dfs 라.. dfs 는 무엇인가?


*실행

[hadoop@wikibooks01 hadoop]$ ./bin/hadoop jar hadoop-beginner-examples-1.0.jar wikibooks.hadoop.chapter05.DepartureDelayCount input dep_delay_count

(11분 소요)


*결과확인

[hadoop@wikibooks01 hadoop]$ ./bin/hadoop fs -cat dep_delay_count/part-r-00000 | head -10

로컬로 가져오기

[hadoop@wikibooks01 hadoop]$ ./bin/hadoop fs -get dep_delay_count/part-r-00000 dep_delay_count.csv


*엑셀의 피벗 차트 (월별/연도별 항공 출발 지연 건수 합계


*실험!

1

virtualbox로 4개의 PC를 구현했다. 그런데 속도가 너무 느리다. 11분이라니....

혹시 각 PC에 1코어 -> 2코어로 변경하면 빨라질까?

<실행>

[hadoop@wikibooks01 hadoop]$ ./bin/hadoop jar hadoop-beginner-examples-1.0.jar wikibooks.hadoop.chapter05.DepartureDelayCount input dep_delay_count2

결과 : (10분 소요)

역시,,, 작동하는 방식이 각각 싱글 스레드여서 아무리 코어를 높여줘도 의미가 없는 듯 하다.

( > 블럭으로 나눈 것 만큼, 태스크 개수가 여러개 있기 때문에 싱글 스레드는 아닌 것 같다.)


그렇다면,

2

vitualbox에 PC를 좀더 추가하면 어떨까?

같은 사양으로 5PC, 6PC를 추가해본다.



계속...