Brian Rouse
Derek Grubis
Harshit Gupta
The goal of this project was to train an ensemble of classification models that can determine whether an airplane flight will be delayed by weather conditions.
The project required two phases of work:
- Generate a suitable testing and training dataset by combining four datasets that describe flight, airport, weather observation, and weather station data.
- Train and test a classification ensemble using this new dataset.
Hadoop Version - 2.9.1
Spark Version - 2.3.1 (without bundled hadoop)
JDK 1.8
Scala 2.11.12
Maven
AWS CLI (for EMR execution)
JAVA_HOME=/usr/lib/jvm/java-8-oracle
HADOOP_HOME=/home/user/tools/hadoop/hadoop-2.9.1
SCALA_HOME=/home/user/tools/scala/scala-2.11.12
SPARK_HOME=/home/user/tools/spark/spark-2.3.1-bin-without-hadoop
YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$SPARK_HOME/bin
SPARK_DIST_CLASSPATH=$(hadoop classpath)
Weather Dataset: https://www7.ncdc.noaa.gov/CDO/cdoselect.cmd?datasetabbv=GSOD&countryabbv=&georegionabbv= Flight and Airport Dataset: https://www.kaggle.com/usdot/flight-delays/version/1#flights.csv
All of the build & execution commands are organized in the Makefile.
- Add downloaded files to input folder.
- Open command prompt.
- Navigate to directory for the project you want to execute (thetajoin or classification).
- Edit the Makefile to customize the environment at the top. Sufficient for standalone: hadoop.root, jar.name, local.input Other defaults acceptable for running standalone.
- Standalone Hadoop: make switch-standalone -- set standalone Hadoop environment (execute once) make local
- Pseudo-Distributed Hadoop: (https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation) make switch-pseudo -- set pseudo-clustered Hadoop environment (execute once) make pseudo -- first execution make pseudoq -- later executions since namenode and datanode already running
- AWS EMR Hadoop: (you must configure the emr.* config parameters at top of Makefile) make upload-input-aws -- only before first execution make aws -- check for successful execution with web interface (aws.amazon.com) download-output-aws -- after successful execution & termination