[Hadoop] 데이터분석 실습(항공운항데이터)
programming/hadoop

[Hadoop] 데이터분석 실습(항공운항데이터)


5. 데이터분석 실습(항공운항데이터)


5.1 분석용 데이터 다운로드


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


 1987~2008 21년간 미국 항공 운항 데이터를 활용하여 항공기 출발 지연, 도착 지연, 결항 등의 통계를 분석


 전체자료는 11GB이며 전체 자료를 모두 분석하려면 많은 시간이 소요되므로 2006~2008 3년간의 자료만 다운로드하여 실습


 다운로드받은 파일의 압축을 해제한 후 /home/centos/data/airline 디렉토리에 복사(2006.csv, 2007.csv, 2008.csv 3개의 파일)


5.2 mysql 설치(윈도우즈에서 작업)


 HDFS에서 분석하는 방법과 비교하기 위하여 다운로드받은 csv 파일을 mysql 데이터베이스 테이블로 import


 mysql 설치 방법은 Java - 데이터베이스프로그래밍 참조


 csv 파일을 mysql 테이블로 import하기 위하여 cmd에서 아래와 같이 mysql에 접속

mysql --local-infile -u root -p


create database airline;

use airline;

create table ontime (

Year int,

Month int,

DayofMonth int,

DayOfWeek int,

DepTime int,

CRSDepTime int,

ArrTime int,

CRSArrTime int,

UniqueCarrier varchar(5),

FlightNum int,

TailNum varchar(8),

ActualElapsedTime int,

CRSElapsedTime int,

AirTime int,

ArrDelay int,

DepDelay int,

Origin varchar(3),

Dest varchar(3),

Distance int,

TaxiIn int,

TaxiOut int,

Cancelled int,

CancellationCode varchar(1),

Diverted varchar(1),

CarrierDelay int,

WeatherDelay int,

NASDelay int,

SecurityDelay int,

LateAircraftDelay int

);


-- 데이터를 로딩하는데 각각 2분 정도씩 소요됨(CPU i5, RAM 16GB)


-- 2006년 7141922건

-- 2007년 7453215건

-- 2008년 7009728건

-- 총 21604865건


LOAD DATA LOCAL INFILE 'd:/data/airline/2006.csv' INTO TABLE ontime FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';


LOAD DATA LOCAL INFILE 'd:/data/airline/2007.csv' INTO TABLE ontime FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';


LOAD DATA LOCAL INFILE 'd:/data/airline/2008.csv' INTO TABLE ontime FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';


-- 첫 라인 3개행 삭제


select * from ontime where year = 0;

-- 3건 조회됨(40초 정도 소요되었음)


delete from ontime where year = 0;

-- 3건 삭제됨(45초)


select count(*) from ontime;

-- 총 21604865건(30초)


5.3 HDFS에 데이터 업로드


 /home/centos/data/airline 디렉토리의 csv 파일들을 하둡시스템의 input 디렉토리에 업로드

hdfs dfs -mkdir input


hdfs dfs -put /home/centos/data/airline input


5.4 실습예제(출발 지연 데이터 분석)


 5.4.1 airline.AirlinePerformanceParser.java

 5.4.2 airline.DepartureDelayCountMapper.java

 5.4.3 airline.DelayCountReducer.java

 5.4.4 DepartureDelayCount.java

 5.4.5 Hadoop.jar 파일로 export

 5.4.6 분석 작업 실행

   args[0] input      args[1] dep_delay_count

  hadoop    jar    jar파일    클래스이름    입력데이터폴더    출력결과폴더

hadoop jar /home/centos/source/Hadoop.jar airline.DepartureDelayCount input dep_delay_count


  결과 확인

hdfs dfs -cat dep_delay_count/part-r-00000


  다시 분석 작업을 할 경우 출력 디렉토리 삭제 후 실행

hdfs dfs -rm -r dep_delay_count


5.5 실습예제(도착 지연 데이터 분석)


 5.5.1 ArrivalDelayCountMapper.java

 5.5.2 DelayCountReducer.java

앞의 예제와 같은 코드


 5.5.3 ArrivalDelayCount.java

 5.5.4 jar 파일 export

 5.5.5 분석 작업 실행

  분석 작업

hadoop jar Hadoop.jar airline.ArrivalDelayCount input arr_delay_count


  결과 확인

hdfs dfs -cat arr_delay_count/part-r-00000 | head -10


  분석 작업을 다시 실행할 경우 출력 디렉토리 삭제 후 실행

hdfs dfs -rm -r dep_delay_count