3. 3
오늘 실습은 크롬 브라우저를 통해 접속 합니다
http://www.kbig.kr/index.php
4. 4
실습 서버 코드
http://www.kbig.kr/index.php
실습 시 안내 예정
5. 5
농산물(농산식품유통정보)- 중급
1. 개요
•
봄,여름 온도 상승에 따라 야외 할동이 증가되고 고기 소비량이 많아 지게 된다. 고기 소비량 중 많이 소비되는 돼지고기의 가격변화가 온도변화에 따라 연관성이 있는지 분석하고 한다.
•
분석에 사용되는 데이터는 2013년도 서울지역 돼지고기 소매가격 정보와 2013년 서울지역 일별 평균온도를 사용하고자 한다.
•
선행 학습 기술로 엑셀, 자바, 하둡, 몽고DB의 기초 개념을 학습해야 하고 , 시각화에서는 D3 챠트 및 R통계의 기초 활용법을 선행하여 학습을 하여야 한다. -분석예제
•
온도변화에 따라 돼지고기의 가격변화를 시계열 시각화 하여 온도와 돼지고기 가격과의 연관성을 파악하라. -분석내용
•
제공된 농산물가격 정보에서 2013년 서울 지역 돼지고기 소매가격을 추출한다.
•
시계열 저장된 돼지고기 소매가격을 일별 가격평균을 구한다. 기상데이터 중 2013년 서울 지역 평균온도를 추출한다
•
돼지고기 가격과 온도와의 연관성 분석을 위해서 분석 스크립트를 실행한다.
•
분석된 데이터를 엑셀형식이나 D3챠트 형식으로 보기 위한 데이터를 저장한다.
•
저장된 데이터를 불러와서 엑셀이나 D3챠트로 시각화 해 본다.
2. 수집 -수집방법
•
빅데이터 분석활용센터에 접속하여 아래와 같은 샘플데이터와 같은 형태의 농산물 소매가격 및 기상 데이터를 엑세스 할 수 있도록 원시데이터를 제공 하고 있다.
수집
가공
저장
분석
시각화
7. 7
농산물(농산식품유통정보)- 중급
2. 수집 -수집방법
•
수집방법에는 FTP/SCP등을 이용해서 처리하는 방법이 있다.
•
데이터 저장소에서 로컬로 일반농산물 소매가격 데이터 (product.csv) , 코드설명 데이터 (code.csv) , 기상데이터 (weather.csv) 데이터를 복사해 온다.
[ 데이터 수집 (Script) ]
00.get_data_file.sh
01.move _data_file.sh
데이터 저장소에서 WGET을 이용해서 로컬로 데이터를 수집하는 커맨드
로컬로 수집해온 데이터를 작업영역으로 복사하는 커맨드
#!/bin/bash
# 복사 대상 파일 정의
TARGET_PRODUCT_PRICE=/home/eduuser/nia_kbig/product/basic/product.csv
TARGET_CODE=/home/eduuser/nia_kbig/product/basic/code.csv
# 작업 디렉토리 정의
LOCAL_DIR=/home/eduuser/nia_kbig/data/
mv $ TARGET_PRODUCT_PRICE $LOCAL_DIR
mv $TARGET_CODE $LOCAL_DIR
수집
가공
저장
분석
시각화
8. 8
농산물(농산식품유통정보)- 중급
3. 가공 -가공방법
•
일반농산물 소매가격 데이터에는 2011~2013년간의 3년치 데이터가 저장되어 있다.
•
분석 대상은 2013년도의 서울지역 돼지고기이다. 일반농산물 소매가격 데이터 (product.csv) 파일에서 2013년도 데이터만 추출하여 2013_product.csv 파일을 생성한다.
•
기상데이터에는 2010~2014년의 5년치 데이터가 저장되어 있다. 분석 대상은 2013년도 서울지역 기상 정보이다. 기상데이터에서 2013년도 서울 지역 일별기상 데이터를 추출하여 2013_weather.csv파일을 생성한다.
1) 데이터
일자
부류코드
품목코드
지역코드
마트코드
가격
2013-01-02
500
514
1101
110401
1650
2013-01-02
500
514
1101
110402
1480
2013-01-02
500
514
1101
110212
1440
2013-01-02
500
514
1101
110251
1600
2013-01-02
500
514
1101
110403
1380
지역
기상구분
측정값
일자
서울(청)
평균기온
-4.7
20130101
서울(청)
평균기온
-11.7
20130102
서울(청)
평균기온
-13.2
20130103
서울(청)
평균기온
-10.7
20130104
-2013_product.csv (2103년 서울지역 돼지고기 소매가격)
-2013_weather.csv (2103년 서울지역 일별 평균기온)
수집
가공
저장
분석
시각화
9. 9
농산물(농산식품유통정보)- 중급
2) 가공
•
Shell을 이용하여 2013년도 데이터만을 추출한다. 추출한 농산물 데이터는 2013_product.csv로 , 기상정보 데이터는 2013_weather.csv로 저장한다.
#!/bin/bash
# 농산물가격 정보 입력 CSV 파일 지정
PROD_INPUT_FILE='/home/eduuser/nia_kbig/data/product.csv'
# 2013년 농산물 출력결과 CSV 파일 지정
PROD_OUTPUT_FILE='/home/eduuser/nia_kbig/data/2013_product.csv'
# 기상데이터 입력 CSV 파일 지정
WEATHER_INPUT_FILE='/home/eduuser/nia_kbig/data/weather.csv'
# 2013년 서울지역 평균온도 출력결과 CSV파일 지정
WEATHER_OUTPUT_FILE='/home/eduuser/nia_kbig/data/2013_weather.csv'
TARGET_YEAR='2013'
# 평균기온만을 대상으로 설정 , TARGET_TYPE='평균기온‘
# 서울지역의 온도를 대상으로 설정, TARGET_AREA='서울'
# 2013년 서울지역 평균기온 출력결과 CSV HEADER컬럼 출력
echo "Date,Temperature" > $WEATHER_OUTPUT_FILE
02.proc_csv.sh
(뒷장에 계속)
수집
가공
저장
분석
시각화
10. 10
농산물(농산식품유통정보)- 중급
# ','를 구분자로 해서 파일을 읽어들인다. IFS=',' while read AREA TYPE VALUE DATE do # 측정값이 빈 것은 SKIP처리 한다. if [ -z $VALUE ]; then continue; fi # TARGET_YEAR로 시작하는 년도인지 체크한다. # TARGET_TYPE(평균기온)인지 체크한다. # TARGET_AREA(서울)인지 체크한다. if [[ ( $DATE == ${TARGET_YEAR}* ) && ( $TYPE == ${TARGET_TYPE}* ) && ( $AREA == ${TARGET_AREA}* ) ]]; then # 해당년도의 데이터만을 CSV로 출력한다. echo "$DATE,$VALUE" >> $WEATHER_OUTPUT_FILE fi done < $WEATHER_INPUT_FILE # 2013년 농산물 출력결과 CSV HEADER컬럼 출력 echo "Date,Category,Item,Area,Mart,Price" > $PROD_OUTPUT_FILE # ','를 구분자로 해서 파일을 읽어들인다. IFS=',' while read DATE CATEGORY ITEM AREA MART PRICE do # DATA가 TARGET_YEAR로 시작하는 년도인지 체크한다. if [[ $DATE == ${TARGET_YEAR}* ]]; then # 해당년도의 데이터만을 CSV로 출력한다. echo "$DATE,$CATEGORY,$ITEM,$AREA,$MART,$PRICE" >> $PROD_OUTPUT_FILE fi done < $PROD_INPUT_FILE
02.proc_csv.sh
(앞장에서 계속)
수집
가공
저장
분석
시각화
11. 11
농산물(농산식품유통정보)- 중급
#!/bin/bash
# 2013년 농산물 출력결과 CSV 파일 지정
PROD_OUTPUT_FILE='/home/eduuser/nia_kbig/data/2013_product.csv'
# 2013년 서울지역 평균기온 출력결과 CSV파일 지정
WEATHER_OUTPUT_FILE='/home/eduuser/nia_kbig/data/2013_weather.csv'
# 하둡의 2013년 농산물 출력결과 저장 위치
HDFS_WEATHER=/user/bigdata/2013_weather.csv
# 하둡의 2013년 서울지역 평균기온 출력결과 저장 위치
HDFS_PRODUCT=/user/bigdata/2013_product.csv
# upload target file to HDFS
hadoop fs -put $WEATHER_OUTPUT_FILE $HDFS_WEATHER
hadoop fs -put $PROD_OUTPUT_FILE $HDFS_PRODUCT
03.upload_csv.sh
4. 저장 -저장방법
•
2013년치 일반농산물 소매가격 데이터 파일(2013_product.csv)과 2013년도 서울 평균기온 데이터 파일(2013_weather.csv)파일을 하둡에 업로드한다.
•
하둡 커맨드를 이용해서 업로드한다.
수집
가공
저장
분석
시각화
12. 12
농산물(농산식품유통정보)- 중급
5. 분석 -분석방법
•
Java로 하둡파일 시스템에 올라가 있는 2013_product.csv 을 MapReduce를 대상으로 MapReduce작업을 통해서 일자별로 돼지고기 평균가격 데이터를 뽑아낸다.
•
하둡파일 시스템에 올라가 있는 2013년도 서울시 기상데이터(2013_weather.csv)를 MapReduce작업을 통해서 2013년도 서울시의 일별 평균기온 데이터를 뽑아낸다. (1일에 평균 2~3회의 측정기온이 들어있다)
•
결과값은 하둡파일 시스템의 ‘/user/bigdata/product/out/2013’ 경로에 파일로 출력하도록 한다.
•
MapReduce를 실행하는 프로그램은 java를 이용해서 구현하고 products.jar로 만들어서 실행한다.
•
콘솔에 로그인해서 실행은 하둡의 yarn 커맨드로 실행하고 결과 파일을 구한다.
1) 데이터
일자
부류코드
품목코드
지역코드
마트코드
가격
2013-01-02
500
514
1101
110401
1650
2013-01-02
500
514
1101
110402
1480
2013-01-02
500
514
1101
110212
1440
2013-01-02
500
514
1101
110251
1600
2013-01-02
500
514
1101
110403
1380
지역
기상구분
측정값
일자
서울(청)
평균기온
-4.7
20130101
서울(청)
평균기온
-11.7
20130102
서울(청)
평균기온
-13.2
20130103
-2013년 서울지역 돼지고기 소매가격
-2013년 서울지역 일별 평균기온
수집
가공
저장
분석
시각화
13. 13
농산물(농산식품유통정보)- 중급
•
MapReduce를 처리하는 프로그램은 procucts.java 에 구현되어 있다.
•
java프로그램을 컴파일하여 product.jar파일로 만든 후 yarn 커맨드를 이용해서 product.jar파일로 mapReduce 작업을 수행한다.
•
수행된 결과는 Hadoop 상에 지정한 디렉토리에 출력된다.
#!/bin/bash
# 현재 위치를 지정한다.
CURRENT_DIR=/home/eduuser/nia_kbig/product/middle
# 컴파일하여 생성할 프로그램(jar) 경로를 지정한다.
TARGET_JAR=$CURRENT_DIR/products.jar
# 컴파일할 소스를 지정한다.
TARGET_SOURCE=$CURRENT_DIR/java_source/com/nia/hadoop/*.java
# jar를 생성하는데 필요한 class 파일을 지정한다.
TARGET_CLASSES=$CURRENT_DIR/com/nia/hadoop/*.class
# Hadoop상에 존재하는 농수산물 가격정보 파일을 지정한다.
INPUT_PRODUCT_DATA=/user/bigdata/2013_product.csv
# Hadoop상에 존재하는 기상(온도)정보 파일을 지정한다.
INPUT_WEATHER_DATA=/user/bigdata/2013_weather.csv
# MapReduce로 처리한 결과 데이타파일을 생성할 디렉토리를 지정한다.
OUTPUT_DIR=/user/bigdata/product/out/2013
#컴파일에 필요한 hadoop 라이브러리 패스와 함께 source를 컴파일한다.
javac -classpath /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-core- 2.2.0.jar:/usr/local/hadoop/share/hadoop/common/lib/commons-cli-1.2.jar:/usr/local/hadoop/share/hadoop/common/hadoop- common-2.2.0.jar $TARGET_SOURCE
# 컴파일한 *.class 파일을 jar로 압축한다.
jar cf $TARGET_JAR $TARGET_CLASSES
# yarn 커맨드로 Hadoop에서 TARGET_JAR 프로그램을 돌려서 Map/Reduce를 실행한다.
yarn jar $TARGET_JAR com.nia.hadoop.products $INPUT_PRODUCT_DATA $INPUT_WEATHER_DATA $OUTPUT_DIR
04.run.sh
수집
가공
저장
분석
시각화
15. 15
농산물(농산식품유통정보)- 중급
5. 분석 : 데이터 저장 -저장방법
•
2013년도 서울지역 돼지고기 평균가격과 서울지역 평균온도 변환된 데이터를 시각화에 사용할 데이터를 추출한다. 하둡의 MapReduce 결과 출력된 결과 파일을 다운로드 한다.
•
출력 결과 파일은 out으로 지정한 디렉토리 아래에 PKJSON-r-00000(돼지고기, JSON포맷), PKCSV-r-00000(돼지고기,CSV포맷), WT-r-00000(평균기온)이란 이름으로 존재한다
# 하둡파일 시스템에서 로컬 파일로 다운로드 한다. $ hadoop fs -get /user/bigdata/product/out/2013/PKJSON-r-00000 /tmp/product.js $ hadoop fs -get /user/bigdata/product/out/2013/PKCSV-r-00000 /tmp/product.csv $ hadoop fs -get /user/bigdata/product/out/2013/WT-r-00000 /tmp/weather.js
- 데이터 저장
변환된 데이터를 저장하기 위해서 아래와 같이 저장 스크립트를 실행한다.
- 데이터 변환
다운로드 받은 파일을 이용하여 다음과 같은 product.js (JSON 배열), weather.js (javascript 배열) 파일에 저장한다.
저장한 js 파일을 시각화 HTML에서 로드해서 D3 차트로 표시한다.
수집
가공
저장
분석
시각화
17. 17
농산물(농산식품유통정보)- 중급
6. 분석 -분석내용
•
2013년도 서울지역 돼지고기 평균가격과 서울지역 평균온도와의 연관성 분석을 한다.
-분석방법 및 활용기술 2013년도 서울지역 돼지고기 평균가격과 2013년 서울지역 평균기온 과의 패턴 및 연관성 분석을 위해 시계열 Chart인 D3 Chart 활용한다.
-분석 과정
2013년도 서울지역 돼지고기 평균가격과
2013년 서울지역 평균기온 D3 Chart 연동
2013년도 돼지고기 평균가격과
2013년 서울지역 평균기온 데이터 저장
분석데이터 저장
스크립트 실행
결과데이터
결과데이터
시각화 Chart
맵리듀스 결과데이터
수집
가공
저장
분석
시각화
18. 18
농산물(농산식품유통정보)- 중급
7. 시각화 -시각화 방법 및 활용기술
•
2013년도 돼지고기 평균가격과 2013년 서울지역 평균기온 비교 분석을 D3 Chart의 꺽은선 그래프 활용한다.
-시각화과정
•
d3.v3.js 라이브러리 파일을 제공사이트에서 다운로드 하여 저장한다.
•
시각화할 HTML 페이지를 생성한다. d3 Chart 라이브러리 모듈을 페이지 삽입을 한다.
•
d3 Chart Data를 읽어 오는 부분에 결과데이터 삽입을 한다.
•
X 축과 Y축을 값을 지정을 한다.
•
html 페이지를 웹브라우저에서 실행을 한다.
수집
가공
저장
분석
시각화
20. 20
농산물(농산식품유통정보)- 중급
- 분석데이터 시각화
-데이터 분석
•
돼지고기와 기온과의 관계는 봄철인 4월 부터 기온이 올라가는 시점 부터 돼지고기의 가격이 상승하는 패턴을 보임. 기온이 가장 더운 7-8월 돼지고기의 최대 가격이 형성되어 보이는데 이는 일반인들의 휴가시기와 결합되어 소비가 많아지는 관계로 가격 상승이 보임.
•
9월, 10월 기온이 하강 하면서 돼지고기의 가격이 하락하고 있는 패턴 현상을 보임.
•
12월 가격 상승은 연말 연시로 돼기고기의 소비량이 증가 하여 가격이 상승한 것으로 판단이 됨.
수집
가공
저장
분석
시각화
21.
22. 22
[터미널 로그인 화면]
1.username : root 2.password : hello.edu 아이디/ 패스워드를 입력 하고 OK 버튼을 클릭한다.
23. 23 23
1.로그인화면에서 컴퓨터 클릭 >보기 메뉴에서 목록 보기 선택하여 탐색기 형태로 나오게 함 2.실습코드 있는 위치로 폴더 이동 /home/eduuser/nia_kbig/product/middle/ 3. 00.get_dataset.sh ~ 04.run.sh 5개의 실행파일이 위해 있다.
[리눅스 로그인 화면]
24. 24 24
[리눅스 터미널 화면]
1.바탕화면에서 마우스 오른쪽키 누른 후 Open In Termianl 메뉴 클릭한다.
2.터미널 화면이 나온 창에서 실습코드가 있는 위치가 이동한다.
cd /home/eduuser/nia_kbig/product/middle/ 입력하고 엔터를 친다
3. pwd 입력 후 엔터치면 현재 접속한 위치 디렉토리 경로가 출력이 된다.
25. 25 25
[데이터 저장소에서 데이터 가져오기]
1. 명령어 입력 창에 다 데이터 가져오는 스크립트를 실행한다.
./00.get_dataset.sh 입력 후 엔터를 친다.
26. 26 26
2. 중급과정 선택 후 엔터
[데이터셋 선택화면]
1. 농산물 데이터셋 선택 후 엔터
1. 전체 데이터셋 복사하기 선택 후 엔터
9. 종료 선택 후 엔터 선택화면에서 나온다
27. 27 27
[데이터 가공을 위해서 가공스크립트 실행]
1. 원시데이터 가공을 위해서 가공 셀 스크립트를 실행한다.
./02.proc_csv.sh 입력 후 엔터
2.nia_kbig/data/ 폴더에 보면 가공된 파일 2개가 생성이 된다. 2013_product.csv , 2013_weather.csv
28. 28 28
[nit_kbig 에 폴더의 권한을 eduuser 권한 폴더로 소유권을 변경]
1.
하둡 프로세스가 실행되는 권한은 eduuser이기 때문에 root 권한 eduuser가 접근할 수 있게 nia_kbig 폴더의 권한을 변경을 해줘야 한다. ./chown -R eduuser:eduuser nia_kbig/ 입력 후 엔터를 친다.
2.
ll 명령어를 입력 후 엔처를 치면 소유권이 변경된 것을 확인 할 수가 있다.
29. 29 29
1.
하둡 프로세스를 실행하기 위해서 eduuser로 로그인을 변경을 시켜준다 현재 root 로 접속이 되어 있기 때문에 하둡 실행 사용자인 eduuser로 로그인을 변경한다. su – eduuser 입력 후 엔터를 친다
[하둡 프로세스를 실행하기 위해서 실행 USER로 로그인을 변경 ]
30. 30 30
[하둡 프로세스를 실행하기 위해 설치 폴더 이동]
1.
하둡 프로세스를 실행하기 위해서 하둡이 설치한 경로 까지 이동한다.
2.
cd /user/local/Hadoop/sbin/ 입력 후 엔터 친다.
3.
ll 을 입력 후 엔터를 치면 목록 리스트가 출력이 된다
31. 31 31
1.
하둡을 실행을 한다.
2.
./start-all.sh 를 입력 후 엔터를 치면 하둡프로세스가 실행된다.
[하둡 프로세스를 실행]
32. 32 32
[하둡 프로세스가 정상적으로 실행을 브라우저로 확인]
1.
브라우저를 열러서 URL 입력 창에 localhost:50070 입력 후 엔터를 치면 화면과 같이 NameNode ‘localhost:9000’(active) 화면이 열리면 하둡이 정상적으로 작동한다
33. 33 33
[하둡 프로세스가 정상적으로 실행 중이 브라우저로 확인]
1.
브라우저를 열러서 URL 입력 창에 localhost:8088 입력 후 엔터를 치면 화면과 같이 All Applications 화면이 열리면 하둡이 정상적으로 작동한다.
2.
맵리듀스를 실행 할 경우 진행 상태를 확인 할 수 있다.
열어서
34. 34 34
[실습코드가 있는 디렉토리로 이동]
1.
하둡이 설치된 디렉토리에서 실습코드가 있는 디렉토리로 이동한다.
2.
cd /home/eduuser/nia_kbig/product/middle 입력 후 엔터를 친다.
3.
pwd를 입력 후 현재 디렉토리 경로를 확인을 한다.
35. 35 35
[하둡에 가공된 파일을 2개를 업로드]
1.
하둡에 nia_kbig/data/ 폴더에 있는 2013_product.csv 파일과 2013_weather.csv 가공된 파일 2개를 하둡 HDFS 파일시스템 업로드 한다. ./03.upload_csv.sh 입력 후 엔터를 친다. 2. 하둡에 파일을 업로드 후 프로세스가 끝나면 정상적으로 업로드 된다
36. 36 36
[브라우저로 하둡파일 시스템에 올라간 파일 확인]
1.localhost:50070 화면에서 Browse filesystem 을 클릭하여 파일 업로드 현황을 볼 수 있다.
2. /user/bigdata/ 폴더 밑에 2013_product.csv , 2013_weather.csv 파일 목록이 출력된다.
37. 37 37
[맵리듀스 분석을 하기 위해서 분석스크립트 실행]
1.
맵리듀스 분석을 하기 위해서 분석스크립트를 실행
2.
./04.run.sh 입력 후 엔터를 친다.
3.
분석프로세스 돌아가면 브라우저로 localhost:8088 화면을 열어 진행 프로세스를 확인한다.
38. 38 38
[맵리듀스 분석을 하기 위해서 분석실행 화면]
1.화면에서 마우스 오른쪽 키를 클릭 후 새로고침을 클릭하면 현재 진행 프로세스를 확인 할 수 있다.
39. 39 39
[ 분석 결과물 확인]
1.분석이 완료되면 product 라는 폴더가 생성이 되고 폴더를 클릭하면 분석 결과물 리스트를 확인 할 수 있다.
40. 40 40
[ 분석 결과물 폴더]
1.분석완료 결과물은 하둡디렉토리 /user/bigdata/product/out/2013 폴더에 위치해 있다
2.PKCSV-r-00000 , PKJSON-r-00000, WT-r-00000 파일 폴더가 생성이 된다.
41. 41 41
[ 분석데이터 저장]
1.분석데이터를 저장하기 위해서 PKJSON-r-00000 폴더를 클릭하여 들어가면 데이터 목록을 확인할 수가 있다. 2.전체선택을 하여 복사를 한다.
42. 42 42
[ 분석데이터 시각화 데이터 저장]
1.탐색기 화면으로 돌와와서 visual폴더 밑에 product.js 파일을 선택한 후 오른쪽 마우스를 클릭하여 gedit로 열기를 클릭하여 파일을 연다.
43. 43 43
[ 분석데이터 시각화 데이터 저장]
1.복사한 데이터를 붙여넣기하여 데이터를 삽입하고 저장 버튼을 클릭하여 저장을 한다.
2.저장후 파일 저장창을 닫는다.
44. 44 44
[ 분석데이터 시각화 데이터 저장-기상데이터]
1.기상데이터도 복사를 하여 weather.js 파일을 열어 기존에 들어가 있는 데이터를 모두 삭제를 한다.
2.데이터 삭제 후 붙여넣기 하여 데이터를 저장한다.
45. 45 45
[ 분석데이터 시각화 보기- D3 챠트]
1.visual 폴더에 product_chart.html 파일을 더블 클릭하면 브라우저로 실행이 된다.
2.브라우저로 시각화 챠트가 출력이 된다.
46. 46 46
[ 분석데이터 시각화 보기- D3 챠트]
1.분석된 데이터가 챠트로 출력이 된다.