Skip to content

Proyecto Concurrencia y Sistemas Distribuidos Q1 2024 - Encontrar conjuntos de elementos frecuentes (con Hadoop), para realizar posteriores análisis para minería de datos.

Notifications You must be signed in to change notification settings

pamelagiselle8/ConcurrenciaProyecto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Instrucciones

Nota sobre rutas absolutas: Debido a que algunos de los archivos utilizados en el proyecto eran muy pesados para ser subidos al repositorio, utilizamos rutas absolutas en los siguientes programas: Main.java, freqAnalyzer.java

Descargar el Dataset

El dataset utilizado en este proyecto:

https://www.kaggle.com/datasets/jerseyneo/reddit-adhd-dataset

Descomprimimos el archivo zip y de los archivos csv, estaremos utilizando el archivo ADHD-comment.csv

Main.java : Actualizar la ruta al dataset a preprocesar (en este caso ruta absoluta del archivo ADHD-comment.csv que descargamos), y la ruta al directorio donde se guardará el dataset preprocesado (las rutas se almacenan en las variables rawDataset y finalDataset, respectivamente).

Procedimiento Preprocesamiento

/ConcurrenciaProyecto/Preprocesamiento/src/preprocesamiento/Main.java

  1. Correr programa de Preprocesamiento (podemos correrlo en NetBeans), luego de haber actualizado las rutas necesarias.

  2. Abrimos una ventana de la terminal e inciamos Hadoop con los siguientes comandos:

   cd /ruta_a_hadoop
   start-all.sh
  1. Creamos una carpeta llamada Dataset donde subiremos el dataset preprocesado:
  hadoop fs -mkdir /Dataset
  hadoop fs -put /ruta_a_dataset_preprocesado/DatasetFinal.txt /Dataset

Preparar terminal para correr los programas de WordCount

  1. Abrimos una nueva ventana de la terminal donde iremos al directorio que contiene la carpeta WordCount y correremos los siguientes comandos:
  cd /ruta_al_proyecto/ConcurrenciaProyecto/WordCount
  export HADOOP_CLASSPATH=$(hadoop classpath)

Para verificar que se hizo exitosamente, corremos: echo $HADOOP_CLASSPATH

  1. Creamos dos carpetas donde se guardarán los outputs de los WordCounters:
  hadoop fs -mkdir /Output
  hadoop fs -mkdir /OutputPares

Nota: Necesitaremos compilar los programas de WordCount con la versión 8 de Java.

Procedimiento WordCount (palabras individuales)

/ConcurrenciaProyecto/WordCounter/WordCount.java

  1. Compilar WordCount.java con el siguiente comando:
  /ruta_a_java_version_8/javac -classpath ${HADOOP_CLASSPATH} -d '/ruta_al_proyecto/ConcurrenciaProyecto/WordCounter/clases' '/ruta_al_proyecto/ConcurrenciaProyecto/WordCounter/WordCount.java'
  1. Juntar el output en un solo archivo jar:
  jar -cvf wordcount.jar -C clases/ .
  1. Correr Word Counter
  hadoop jar /ruta_al_proyecto/ConcurrenciaProyecto/WordCounter/wordcount.jar WordCount /Dataset /Output

Procedimiento WordCountPares (pares de palabras)

/ConcurrenciaProyecto/WordCounter/WordCount.java

Repetimos el procedimiento, esta vez para el WordCount de pares de palabras:

  /ruta_a_java_version_8/javac -classpath ${HADOOP_CLASSPATH} -d '/ruta_al_proyecto/ConcurrenciaProyecto/WordCounter/clasesPares' '/ruta_al_proyecto/ConcurrenciaProyecto/WordCounter/WordCountPares.java'
  jar -cvf wordcountpares.jar -C clasesPares/ .
  hadoop jar /ruta_al_proyecto/ConcurrenciaProyecto/WordCounter/wordcountpares.jar WordCountPares /Dataset /OutputPares

Al terminar de correr ambos programas de WordCount, descargamos los outputs desde Hadoop, les ponemos un nombre que los diferencie y les agregamos la extensión .txt (se encuentran en las carpetas Output y OutputPares con el nombre de part-r-00000.

Luego, detenemos los daemons del cluster de Hadoop corriendo el siguiente comando: stop-all.sh

Procedimiento Frequency Analyzer

/ConcurrenciaProyecto/Preprocesamiento/src/preprocesamiento/freqAnalyzer.java

freqAnalyzer.java : Actualizar la ruta a los outputs que acabamos de descargar (las rutas se almacenan en las variables wordcount y wordcountPares, respectivamente).

  1. En la clase freqAnalyzer.java existen dos métodos: uno que genera el top de las palabras individuales más frecuentes y el otro genera el top para los pares de palabras más frecuentes. En el main se hace el llamado a los dos métodos.

  2. Corremos freqAnalyzer.java (puede ser en NetBeans)

  3. ¡Fin! 🎉

About

Proyecto Concurrencia y Sistemas Distribuidos Q1 2024 - Encontrar conjuntos de elementos frecuentes (con Hadoop), para realizar posteriores análisis para minería de datos.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages