Skip to content

ericbellet/Apache-Spark-GraphX

Repository files navigation

Apache Spark & GraphX Awesome

Build Status

graphx

cloudera

Tabla de contenido

Resumen

En el siguiente repositorio se encuentran una serie de implementaciones utilizando GraphX que permiten el manejo y análisis de grafos de gran escala. Estas implementaciones permiten realizar análisis de redes mediante el algoritmo de PageRank, ShortestPaths, Triangle Count, outDegree, inDegree y ConnectedComponents. Para el desarrollo de este proyecto se utilizó la distribución Cloudera para un clúster Hadoop multi nodo, Apache Spark, GraphX, Scala y la herramienta de visualización Gephi.

Archivos que contiene el repositorio

El siguiente repositorio contiene las siguientes carpetas con los diversos archivos:

Apache-Spark-GraphX/
├── data/
│   ├── Facebook.txt
│   └── egonets/
│   	├── 0.egonet 
│   	├── ...
│   	└── 27022.egonet
├── doc/
│   ├── Tesis.ppt
│   └── Tesis.pdf
├── gephi/
│   └── grafo.gexf
├── lib/
│   ├── breeze_2.10-0.12.jar 
│   ├── breeze-viz_2.10-0.12.jar
│   ├── gs-core-1.2.jar
│   ├── gs-ui-1.2.jar
│   ├── jcommon-1.0.16.jar
│   ├── jfreechart-1.0.13.jar 
│   └── pherd-1.0.jar
├── output/
│   └── ...
├── target/
│   └── scala-2.10/
│    	└── grafos-de-gran-escala_2.10-1.0.jar
├── src/
│   └── SocialMedia.scala
└── style/
    ├── stylesheet
    └── stylesheet-simple

Herramientas

En el presente proyecto se utilizó diferentes herramientas con respectivas versiones:

Herramienta Versión
Distribución Apache Hadoop. Cloudera Manager 5.8.1.
Gephi. Gephi 0.9.1.
Apache Spark. Apache Spark 2.0.0.
GraphX. GraphX 2.10.

Clúster

Para el desarrollo de la solución se instaló un clúster Hadoop multi nodo (nodos físicos) utilizando la distribución Cloudera mediante 4 equipos conectados por LAN con las siguientes características:

Componente Especificación
Sistema Operativo. CentOS 7.
Memoria. 3,7 GiB.
Procesador. Intel Core i5-3470 CPU @ 3.20GHz x 4.
Disco. 980,1 GB.
OS Type. 64-bit.

Implementaciones

En este proyecto se desarrollaron las siguientes implementaciones:

Implementación Resumen
InDegree Calcula los grados de entrada de todos los nodos.
OutDegree Calcula los grados de salida de todos los nodos.
PageRank Mide la influencia de los vértices de un grafo.
TriangleCount Mide que tan conectado se encuentra un grafo.
ShortestPaths Calcula todas las distancias entre todos los nodos.
ConnectedComponents Calcula las componentes de una egonet.
Gephi Genera un .gexf que puede ser utilizado en Gephi.

Datasets

Los conjuntos de datos utilizados fueron los siguientes:

Dataset Descargar Nodos Aristas
Facebook.txt Facebook. 88234 4039
egonets Egonets. - -

Inicialización

Instalar sbt

wget http://dl.bintray.com/sbt/rpm/sbt-0.13.5.rpm
sudo yum localinstall sbt-0.13.5.rpm
sbt -version

Servicios Cloudera Manager Server

Iniciar servicios del Cloudera Manager Server:

sudo service cloudera-scm-server start

Detener servicios del Cloudera Manager Server:

 sudo service cloudera-scm-server stop

Reiniciar servicios del Cloudera Manager Server:

sudo service cloudera-scm-server restart 

Clonar repositorio

Clonar el siguiente repositorio:

git clone https://github.com/ericbellet/Apache-Spark-GraphX
cd Apache-Spark-GraphX
sbt package

Cargar datos en HDFS

hadoop fs -mkdir input
cd data
hadoop fs -put Facebook.txt input
hadoop fs -put egonets

Ejecutar código

El código se ejecutará mediante Apache Spark utilizando datos de HDFS y almacenando resultados en HDFS.

Ejecutar código en modo local:

spark-submit --class com.cloudera.sparksocialmedia.SparkSocialMedia --master local target/scala-2.10/grafos-de-gran-escala_2.10-1.0.jar input egonets Descripcion ShortestPaths TriangleCount PageRank ConnectedComponents

Ejecutar código en modo YARN CLIENT:

spark-submit --class com.cloudera.sparksocialmedia.SparkSocialMedia --master yarn --deploy-mode client target/scala-2.10/grafos-de-gran-escala_2.10-1.0.jar input egonets Descripcion ShortestPaths TriangleCount PageRank ConnectedComponents

Ejecutar código en modo YARN CLUSTER:

spark-submit --class com.cloudera.sparksocialmedia.SparkSocialMedia --master yarn --deploy-mode cluster  --num-executors 4 --driver-memory 2g --executor-memory 2g --executor-cores 4 --queue default target/scala-2.10/grafos-de-gran-escala_2.10-1.0.jar input egonets Descripcion ShortestPaths TriangleCount PageRank ConnectedComponents

En el caso de querer volver a ejecutar el comando anterior es necesario borrar los siguientes archivos distribuidos:

hdfs dfs -rmr Descripcion
hdfs dfs -rmr ShortestPaths
hdfs dfs -rmr TriangleCount
hdfs dfs -rmr PageRank
hdfs dfs -rmr ConnectedComponents

hdfs dfs -ls

Resultados

Para obtener los resultados:

hadoop fs -cat Descripcion/*
hadoop fs -get Descripcion ./output

hadoop fs -cat ShortestPaths/*
hadoop fs -get ShortestPaths ./output

hadoop fs -cat TriangleCount/*
hadoop fs -get TriangleCount ./output

hadoop fs -cat PageRank/*
hadoop fs -get PageRank ./output

hadoop fs -cat ConnectedComponents/*
hadoop fs -get ConnectedComponents ./output

cd Apache-Spark-GraphX/gephi

Creador

Eric Bellet

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published