Академический Документы
Профессиональный Документы
Культура Документы
Resumen
En este documento se presenta la configuracin de un cluster beowulf, para el cual se usa 4
computadores personales, distribuidos de la siguiente manera: un computador como nodo
master y tres nodos esclavos.
Se ha implementado MPI como el estndar utilizado para la distribucin de procesos en los
diferentes nodos participantes en el clster, en el paso de mensajes intervienen tres
elementos fundamentales como lo son: el proceso que enva, recibe y el mensaje como tal.
La comunicacin entre el master y los nodos esclavos se realiza por medio de SSH, se ha
usado un sistema de archivos NFS para compartir archivos compilados a ejecutarse.
Tambin se abordan pruebas del clster, mediante la ejecucin de un programa de conteo
de nmeros primos. El rendimiento del clster es monitoreado a travs de la herramienta
Ganglia, el cual ofrece informacin del clster como: uso de red, uso memoria, carga de
procesamiento, etc.
Finalmente se presenta una comparacin entre el procesamiento en paralelo y el
procesamiento en serie de una aplicacin llamada Pentaho Data Integration.
Introduccin
En este documento se describirn las razones por las cuales usar un cluster beowulf, las
configuracin del mismo, el sistema operativo utilizado, las caractersticas del software para
la distribucin de procesamiento, y un software de benchmarking que permitir identificar el
desempeo de cluster. Adems, se presentar el programa que se ejecutar en el clster
para la distribucin de procesamiento.
Una de las razones ms importantes para utilizar Beowulf es que este es un clster de alto
rendimiento a bajo coste. Beowulf agrupa computadores basados en sistemas linux, cuyo
objetivo es lograr multiprocesamiento con el uso de varios computadores relativamente de
bajos recursos. Es decir es un conjunto de computadores donde el procesamiento es
asignado a cada uno de los nodos participantes del clster. En esta arquitectura se define
un nodo master (maestro) el cual controla la asignacin de procesamiento, y varios nodos
esclavos, quienes ejecutan el procesamiento que se les asign.
La configuracin del clster se describe con mayor detalle en las siguientes secciones. En
cuanto a la monitorizacin del cluster se us ganglia el cual ofrece varias opciones de
En 1990, los ordenadores ms potentes eran los mainframes potentes y muy costosas.
Usadas por compaas para el procesamiento de grandes cantidades de datos, ejemplo:
procesamiento en transacciones bancarias, sistemas de mensajera, etc.
En 1995, con la aparicin de los ordenadores Massive Parallel Processing (MPP) siendo
sistemas de memoria compartida. Adems, la evolucin de las supercomputadoras
vectoriales le arrebato el puesto a los mainframes.
Cluster
Es un grupo de ordenadores independientes cada uno conocido como nodo conectados
a una red privada de alta velocidad, de manera que todo este conjunto de computadores (al
menos dos) se comporte como una sola unidad (single system) ante el usuario que
requiere de su procesamiento, que tiene por objetivo trabajar sobre un problema en comn,
de manera que la carga de procesamiento ser dividido y asignado a todos los
computadores que conforman el sistema.Por lo general un clster tiene un computador
principal llamado nodo maestro equipado con monitor, teclado, ratn, etc., cuya finalidad es
el monitorear las aplicaciones y recursos que se estn ejecutando en el sistema.
Como podemos observar en la figura 6, el clster cuenta con computadores dedicados al
procesamiento de datos u operaciones aritmticas, los cuales reciben el nombre de nodos
esclavos. Un clster puede realizar varios procesos sea en paralelo o en serie, los mismos
que pueden ser divididos y asignados a los diferentes nodos conectados a la red,
aprovechando al mximo posible su capacidad de procesamiento.
Aplicaciones de un clster
Veiga A. (2016) en su estudio sobre las Arquitecturas Paralelas Clusters, Grids y Clouds
identifica tres tipos de usos para los clusters: (p9)
1. Alta performance (HPC High-Performance Clusters): split.
Ejemplo: Beowulf Clusters (PCs + Ethernet + Linux + Free software MPI).
2. Alta disponibilidad (HAC High-Availability): nodos redundantes.
Ejemplo: Linux-HA [1].
3. Balanceo de carga (LB Load Balancing): Server Farms.
Ejemplo: Sun Grid Engine [2] , Maui Cluster Scheduling.
Clasificacin de un clster
Adems, Veiga A. (2016) clasifica la computacin de los clusters en tres grupos: POPC,
now/cow y DCPC.
Componentes de un clusters
Ivn Bernal, (2008). Identifico algunos de los componentes de software y hardware para
poder funcionar:
1. Nodos: Pueden ser simples computadores, sistemas multiprocesador o estaciones
de trabajo.
2. Sistemas Operativos: Debe ser de fcil uso y acceso y permitir adems mltiples
procesos y usuarios.
El proyecto Linux-HA (Linux de Alta disponibilidad) provee una solucin clster de alta disponibilidad para Linux,
FreeBSD, OpenBSD, Solaris y Mac OS X promoviendo fiabilidad, disponibilidad y servicialidad.
[2] Sun Grid Engine (SGE), tambin conocido en la actualidad como Oracle Grid Engine, es un software de cdigo
abierto desarrollado por Sun Microsystems, cuya funcin principal es la gestin de un sistema manejador de recursos
computacionales o procesos distribuidos en ambientes heterogneos.
[1]
Cloud Computing
Vugt (2016), piensa que el concepto de cloud computing es muy amplio, hasta el punto de
que podemos afirmar que no existe tal cosa. Si pide a un usuario final que explique qu es
el cloud computing y, a continuacin, se realiza la misma pregunta a un administrador del
sistema, obtendr dos descripciones diferentes. En general, hay tres enfoques importantes
cuando se trata de cloud computing:
IaaS (Infrastructure as a Service): Se basa en la prestacin de recursos de
hardware, es decir, un determinado usuario podr disponer de cierta capacidad de
disco duro, procesadores, RAM, etc., dependiendo de su necesidad
PaaS (Platform as a Service): Este tipo de servicio est dirigido hacia los
desarrolladores de software, debido a que pone a su disposicin las herramientas
necesarias para que ellos puedan construir sus aplicaciones.
Grid Computing
Conceptualmente su arquitectura es similar a la de un clster, se basa en la utilizacin de
ordenadores y estaciones conectadas a una red, el objetivo es aprovechar (tiempos muertos
de procesamiento, elementos ociosos) los recursos (procesador, memoria,
almacenamiento) de los nodos participantes en el grid. A diferencia de un cluster la
tecnologa grid permite utilizar los recursos computaciones que no estn juntos
geogrficamente. Adems, permite compartir recursos en Internet de forma uniforme,
transparente, segura, eficiente y fiable. Anlogamente se compara a las redes de suministro
elctrico, en donde:
En resumen, se puede decir que grid computing es una coleccin de recursos distribuidos
conectados por una red, ubicados en diferentes partes del mundo, accesibles a los usuarios
y aplicaciones para reducir la sobrecarga y aumentar el rendimiento.
El Proyecto Globus define Grid Computing como:
Infraestructura que permite el uso integrado y colaborativo de computadoras, redes,
bases de datos e instrumentos cientficos de alto nivel, propiedad y administrados
por mltiples organizaciones, A Three Point Checklist (2002)
Gran escala
Distribucin geogrfica
Heterogeneidad
El intercambio de recursos
Mltiples dominios de administracin
Coordinacin de recursos
Acceso transparente
Acceso confiable
Acceso coherente
Cluster Beowulf
El clster Beowulf fue el primer clster construido con computadoras personales en 1994,
tena 16 procesadores conectados bajo Ethernet. Todos sus nodos tienen un mnimo de
recursos, es decir, no tenan teclado, ratn ni tarjeta de video. Adems, para la computacin
en paralelo usaron libreras PVM y MPI (ver seccin Lenguajes de programacin paralelo)
para que los procesos sean ejecutados en mltiples procesadores.
Beowulf es un clster formado por un conjunto de computadores conectados a una red, que
se comporta como una supercomputadora de multiprocesamiento. En este clster existe un
nodo maestro que sirve como consola y varios nodos esclavos que comnmente no tienen
monitor, mouse ni teclado y son dedicados a realizar el procesamiento de datos. Al no
contar con dichos dispositivos los nodos esclavos son accedidos remotamente a travs de
una terminal. Adems, para facilitar el acceso a los archivos (algoritmos, fuentes de datos,
etc) el nodo maestro presta el sistema de archivos a los nodos esclavos.
En cuanto a los recursos de hardware y software, el mnimo hardware requerido en los
nodos esclavos ser una tarjeta principal, disco duro, procesador, memoria y tarjeta de red.
En software, especficamente referente al sistema operativo se requerir de alguna
distribucin de linux, para la distribucin de procesamiento se utiliza alguna librera como
PVM o MPI.
Modelos climticos
Prediccin de consumo de elctrico de poblaciones
Data mining
Software de renderizado
Anlisis de AND
Anlisis del comportamiento de elementos qumicos, etc
Ganglia presenta una interfaz grfica en donde se puede observar informacin tales como:
carga de CPU, memoria libre, uso de disco, E/S de red, versin del sistema operativo, etc.
Configuracin
Software utilizado.
En esta seccin del documento se describe la configuracin de un clster beowulf,
para lo cual se procede de la siguiente manera:
1. Definir las caractersticas del nodo master y nodos esclavos.
Master:
Mquina virtual de 2GB de memoria, 20 GB de disco y con 2
procesadores.
SO: Ubuntu 12.04
Nodo:
Mquina virtual de 2GB de memoria, 20 GB de disco y con 1
procesador.
SO: Ubuntu 12.04
Nota: Debido a que en la prctica se utiliz mquinas virtuales, en la figura 5 se presenta las
caractersticas tanto del sistema operativo Windows nativo como el de la mquina virtual
Ubuntu, esto con la finalidad de comparar los recursos utilizados por la mquina virtual
respecto a la nativa. De acuerdo a la informacin extrada se puede notar que la
virtualizacin de ubuntu ocupa casi los mismo recursos, excepto por el tamao de memoria y
el nmero de CPUs.
Nota: Es importante tener los archivos ejecutables en directorios con rutas similares, esto se
debe a que al correr una determinada aplicacin, openmpi toma la ruta desde donde se
ejecut la instruccin y la usa en los dems nodos participantes, lo cual puede generar
errores si no existe tal ruta.
Recomendacin: Se recomienda que el usuario creado en los nodos sean nombrados de la
misma manera ya que las rutas de los directorios podran diferir y genera inconvenientes.
Ejemplo
Si se tiene: usuario1:nodo1, usuario2:nodo2
Las rutas podran ser en modo de ejemplo:
/home/usuario1/compartido y /home/usuario2/compartido
Esquema
Ejemplos de pruebas
Para probar el cluster se utiliz C como lenguaje de programacin.
En el master se instal:
apt-get install build-essential
apt-get install geany
Para la distribucin de procesamiento se crear un archivo en donde se definir los
nodos (IP) que participarn en el clster y el nmero de CPUs (slots) que se
utilizar de cada uno de ellos:
gedit .mpi_hostfile (Ver cuadro 1)
#Nodo maestro
localhost slots=2
#Nodos esclavos
nodo1 slots=1
nodo2 slots=1
Cuadro 1 - Definicin de archivo mpi_hostfile
Nota: Si se requiere que la ejecucin se realice en serie se deber especificar 1 proceso como
mximo, de esta manera el proceso solo se asignar al nodo en el que se ha ejecutado la instruccin.
Pruebas de Monitoreo.
Se ejecuta en el cluster programa que cuenta el nmero de nmeros primos en un rango
dado se observa en la figura 9, en donde se observa que estn trabajando el nodo cliente
mora y el master.
Podemos observar en la figura 10 cuando dos nodos clientes estn trabajando al 100 % y
el master en un rango de 25 % a 50 %.
Aplicaciones
Lenguaje de programacin
Se seleccion C++ como lenguaje de programacin para el desarrollo de la aplicacin
paralelizable, esto debido a que es un lenguaje de nivel medio, por tanto potente en cuanto
a velocidad de procesamiento a comparacin de lenguajes de alto nivel como Perl, Python,
Java, etc. Adems, se puede optimizar el cdigo en lo posible debido a que se utilizan
instrucciones a nivel de registros, pilas, mapeado de memoria, etc [4].
Programa desarrollado
En cuanto al programa de prueba se utiliz un algoritmo para la bsqueda de nmeros
primos. Dicho algoritmo asigna cierto rango de nmeros a determinados computadores
(nodos) que forman el clster, de tal manera que cada nodo se encargar de buscar la
cantidad de nmeros primos en dicho rango asignado, aprovechando de esta manera la
capacidad de procesamiento de los nodos conectados a la red.
El cdigo fuente paralelizable para el conteo de nmeros primos se presenta en la figura 11,
y en la tabla 1 se describirn las lneas ms importantes del mismo, las cuales permiten
aprovechar el multiprocesamiento del clster beowulf.
Tabla 1 - Descripcin de cdigo fuente
#Lnea
Cdigo
Descripcin
include mpi.h
22
MPI::Init
23
MPI::COMM_WORLD.
Get_size()
24
MPI::COMM_WORLD.
Get_rank
26
MPI::Wtime ( )
46
MPI::COMM_WORLD.
Bcast ( &n, 1, MPI::INT,
master )
47
numeros_primos ( n, id,
p)
48
MPI::COMM_WORLD.
Reduce
( &primes_part,
&primes, 1, MPI::INT,
MPI::SUM, master );
Resultados y discusin
Se logr determinar que para algoritmos que requieren capacidades de procesamiento
relativamente bajos es conveniente realizarlos en secuencial, debido a que el
multiprocesamiento requiere envo de datos a travs de la red y estos datos son
empaquetados lo cual tambin consume tiempo y ralentiza el proceso.
A continuacin, se dar una explicacin del algoritmo ejecutado en el clster beowulf.
Tabla 2 - Tiempo de respuesta al ejecutar algoritmo de bsqueda de nmeros primos en paralelo y serial
Tiempo (Secuencial)
Tiempo (Paralelo)
4.1008e-05
0.00178099
5.00679e-06
0.000659128
5.00679e-06
0.000346184
6.19888e-06
0.000343084
16
4.05312e-06
0.000603914
32
11
9.05991e-06
0.000365973
64
18
1.62125e-05
0.000401974
128
31
4.69688e-05
0.000482082
256
54
0.000185966
0.00128007
512
97
0.000468016
0.0208158
1024
172
0.00198913
0.00731802
2048
309
0.00630713
0.044394
4096
564
0.0267539
0.097446
8192
1028
0.086318
0.344766
16384
1900
0.330602
1.11475
32768
3512
1.166
4.21082
65536
6542
4.19708
10.5298
Conclusiones
1. Un clster beowulf permiten ejecutar tareas que requieran altos recursos
computacionales a bajo costo.
2. Los clster permiten fcil y econmica escalabilidad en hardware.
3. Con el desarrollo de la prctica se puede concluir que la construccin de un cluster
beowulf acelera el tiempo de respuesta de ejecucin de los algoritmos paralelizables
a comparacin de si este se ejecutar sobre un solo computador.
4. Es posible utilizar computadores de bajo rendimiento (computadores personales)
para construir un sistema nico que agilice la ejecucin de los procesos.
5. Para determinadas tareas es conveniente realizar un procesamiento secuencial
debido a que la comunicacin entre los procesos requiere de un tiempo adicional por
tanto puede retardar procesos relativamente pequeos. Dando a entender que no
necesariamente la ejecucin en paralelo reduce el tiempo de respuesta para
procesos pequeos.
Referencias
[1] "Implementacin De Un Clster Beowulf". N.p., 2017. Web. 4 Jan. 2017.
[2] Monitoring Hadoop Benchmarks TeraGen/TeraSort with Ganglia | MAAS [WWW
Document],
2016.
[WWW
Document].
Maas.ubuntu.com.
URL
https://maas.ubuntu.com/2011/11/08/monitoring-hadoop-benchmarks-teragenterasort-withganglia/ (accessed 12. 19. 16).
[3] Message Passing Interface (MPI) [WWW Document], 2016. [WWW Document].
Computing.llnl.gov. URL https://computing.llnl.gov/tutorials/mpi/ (accessed 12. 19. 16).
[4] "Por Qu Deberas Aprender Programacin En C? - VIU Tu Universidad Online |
Grados Y Msteres Online". VIU Tu Universidad Online | Grados y Msteres Online. N.p.,
2016. Web. 19 Dec. 2016.
[5] Running an MPI Cluster within a LAN MPI Tutorial [WWW Document], 2016. [WWW
Document]. Mpitutorial.com. URL http://mpitutorial.com/tutorials/running-an-mpi-clusterwithin-a-lan/ (accessed 12. 19. 16).
[6] Open MPI: Open Source High Performance Computing [WWW Document], 2016. [WWW
Document]. Open-mpi.org. URL https://www.open-mpi.org/ (accessed 12. 19. 16).
[7] Invitado, Autor. "Qu Es Cloud Computing? Definicin Y Concepto Para Nefitos".
TICbeat. N.p., 2017. Web. 3 Jan. 2017.
[8] "Cloud Computing". cervantes. N.p., 2017. Web. 3 Jan. 2017.
[9] "Cluster Y Grid: Colecciones De Sistemas". Hablando de ceros y unos. N.p., 2017. Web.
3 Jan. 2017.
[10] "Programacin De Aplicaciones Paralelas Con MPI". sc.ehu. N.p., 2017. Web. 5 Jan.
2017.
[11] "MPI: Message Passing Interface". ocw.uc3m.es. N.p., 2017. Web. 5 Jan. 2017.
[12] "PVM Parallel Virtual Machine". dis.um.es. N.p., 2017. Web. 5 Jan. 2017.
[13] "Parallel/Distributed Computing Using Parallel Virtual Machine". cgi.csc,liv.ac.uk. N.p.,
2017. Web. 5 Jan. 2017.
[14] Mark Bakery and Rajkumar Buyya, (1999). Cluster Computing at a Glance. URL
https://www.cct.lsu.edu/csc7600/coursemat/Reference/L3/Lecture3_Cluster_Computi
ng_Baker_2.pdf
[15] N/A, (2008). Computacin de Alta Performance CLUSTERS. URL
https://www.fing.edu.uy/inco/cursos/hpc/material/clases/Clusters.pdf
[16] Ivn Bernal, (2008). Clusters. URL
http://clusterfie.epn.edu.ec/clusters/Definiciones/definiciones.html
[16] Einar Turpo Aroquipa, (2010). Sistemas Distribuidos. URL
http://www.unap.edu.pe/cidiomas/licing/pdf/sd.pdf
[17] Flix Garca Carballeira, (2014). Cluster y grid computing. URL
http://www.arcos.inf.uc3m.es/~dsd/lib/exe/fetch.php?media=cluster-grid.pdf
[18] Universidad de la Repblica Uruguay, (2016). Computacin de Alta
Performance. URL https://www.fing.edu.uy/inco/cursos/hpc/pmwiki/index.php
[19] Alejandro Veiga, (2016). Arquitecturas Paralelas Clusters, Grids y Clouds. URL
http://electro.fisica.unlp.edu.ar/arq/transparencias/ARQII_09-Clusters-2014.pdf