Anda di halaman 1dari 23

Configuracin de un cluster Beowulf y

ejecucin Pentaho Data Integration


Marcelo Montao, Liliana Naranjo, Gustavo Mora, Angel Morocho, Carlos Plaza.
5 de enero de 2017
Curso de Redes Avanzadas, semestre sep/2016 - feb/2017
Escuela de Informtica, Facultad de Ingeniera, Universidad de Cuenca, Ecuador

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

monitorizacin, entre las cuales se destaca la monitorizacin individual y en conjunto de


nodos, alertas ante nodos cados, etc.

Cluster, Cloud Computing y Grid Computing


Antes de definir los conceptos de cluster, cloud computing y grid computing definiremos
lo que es un sistema distribuido, ya que estos trminos provienen justamente de esa
arquitectura.
Turpo (2010) se refiere al trmino sistema distribuido como cualquier sistema en el que
mltiples agentes autnomos, cada uno con capacidades de cmputo individual, se
comunican entre s y afectan mutuamente su comportamiento. Los agentes, usualmente
llamados procesadores, procesos o nodos, pueden ser desde computadoras hasta celulares
con capacidad de cmputo y memoria limitada adems su comunicacin es mediante
mensajes.
Un sistema distribuido hace referencia a cualquier evento en el cual se maneja un sistema
en una red de computadoras y trata de describir las tendencias hacia la funcionalidad
distribuida: sistemas distribuidos, procesamiento distribuido, bases de datos distribuidas y
cualquier otro trmino computacional que sea distribuido. (p1)
El siguiente grfico muestra cmo se divide la arquitectura distribuida:

Garca, F. (2014). Cluster y grid computing [Presentacin]. Recuperado de


http://www.arcos.inf.uc3m.es/~dsd/lib/exe/fetch.php?media=cluster-grid.pdf
Figura 1. Clasificacin de los sistemas de cmputo.

La Universidad de la Repblica (Uruguay) en una presentacin sobre computacin de alta


performance contenido basado en el estudio realizado por Bakery M. y Buyya R (1999) con
un smil de la cadena alimenticia de los peces indican cmo se ubican cada uno de los
ordenadores de un sistema nico (single system) mostrados en la figura 1.

Figura 2. Cadena alimenticia de los peces.

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.

Figura 3. Cadena alimenticia de los ordenadores (1990).

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.

Figura 4. Cadena alimenticia de los ordenadores (1995).

Actualmente, con la ayuda de los sistemas distribuidos se buscaron alternativas menos


costosas para realizar actividades de alto rendimiento o alta disponibilidad. Para ello
juntaron pc o workstation con caractersticas heterogneas, ejemplos de uso: botnet, clster,
internet, etc.

Figura 5. Cadena alimenticia de los ordenadores (Actualmente).

A continuacin, describiremos los siguientes sistemas distribuidos: cluster, cloud computing


y grid computing.

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.

Garca, F. (2014). Clster y grid computing [Presentacin]. Recuperado de


http://www.arcos.inf.uc3m.es/~dsd/lib/exe/fetch.php?media=cluster-grid.pdf
Figura 6. Esquema de un clster

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.

Figura 7. Clasificacin de la computacin de los clusters.

NOW (Network of Workstations): Utiliza sistemas ociosos.


COW (Collection of Workstations): NOW con coordinacin.
DCPC (Dedicated Cluster Parallel Computer): Grupo de WS unidos para resolver
un problema especfico.
POPC (Pile of PCs): Cluster heterogneo que forma un sistema dedicado.

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]

3. Conexiones de Red: Los nodos de un cluster pueden conectarse mediante una


simple red Ethernet, o puede utilizar tecnologas especiales de alta velocidad como
Fast Ethernet, Gigabit Ethernet.

4. Middleware: El middleware es un software que generalmente acta entre el sistema


operativo y las aplicaciones con la finalidad de proveer:
a. Un interfaz nico de acceso al sistema, denominado SSI (Single
System), el cual genera la sensacin al usuario de que utiliza un nico
computador muy potente;
b. Herramientas para la optimizacin y mantenimiento del sistema:
migracin de procesos, checkpoint-restart (detener uno o varios
procesos, migrarlos a otro nodo y continuar su funcionamiento),
balanceo de carga, tolerancia a fallos, etc.;
c. Escalabilidad: debe poder detectar automticamente nuevos nodos
conectados al cluster para proceder a su utilizacin.
Existen diversos tipos de middleware, como, por ejemplo: MOSIX, Condor, Open
MOSIX, OpenSSI, entre otros.
5. Ambientes de Programacin Paralela: Los ambientes de programacin paralela
permiten implementar algoritmos que hagan uso de recursos compartidos: CPU
(Central Processing Unit), memoria, datos y servicios.

Bernal, I. (2008). Clster [Foro]. Recuperado de


http://clusterfie.epn.edu.ec/clusters/Definiciones/definiciones.html
Figura 8. Arquitectura de equipo de clster

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.

SaaS (Software as a Service): En SaaS se ofrece aplicaciones finales a los


usuarios, quienes podrn controlarlo. Sin embargo, ellos no tendrn acceso al
sistema operativo, infraestructura o hardware donde se est ejecutando.

Vugt, S. (2016). Introduction to OpenStack [Curso]. Recuperado de https://courses.edx.org/courses/coursev1:LinuxFoundationX+LFS152x+3T2016/info


Figura 9. Enfoques del cloud computing

Cloud computing es una computacin basada en Internet que proporciona recursos de


procesamiento y datos compartidos a computadoras y otros dispositivos bajo demanda.
Algunos servicios ofrecidos en cloud son los siguientes: redes, servidores, almacenamiento,
aplicaciones y servicios, que normalmente se alojan en centros de datos de terceros.

Caractersticas de Cloud Computing


Cloud computing lo hace flexible para los usuarios, as como para los administradores:
Proporciona acceso fcil a los activos de TI esenciales. Esto hace que sea tan fcil
como sea posible para los usuarios a emplear estos activos.
Permite el auto despliegue. Los usuarios ya no necesitan un administrador de TI
para implementar un nuevo servidor.
Proporciona escalabilidad. Al quedarse sin recursos fsicos, es fcil agregar nuevos
recursos.

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:

Ofrecen un nico punto de acceso a un conjunto de recursos distribuidos


Geogrficamente en diferentes dominios de administracin

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)

Caractersticas de Grid Computing:

Gran escala
Distribucin geogrfica
Heterogeneidad
El intercambio de recursos
Mltiples dominios de administracin
Coordinacin de recursos
Acceso transparente
Acceso confiable
Acceso coherente

A continuacin, el trabajo se enfocar en el desarrollo de un cluster para aplicaciones de


alto rendimiento (HPC High-Performance Clusters). Nos concentramos en el cluster
beowulf clasificado dentro de la categora de POPC (Pilas de PCs).

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.

Lenguajes de programacin para computacin en paralelo


A continuacin, se presentan algunos lenguajes de programacin estndar para la
computacin en paralelo.
MPI (Message Passing Interface)
MPI o Interface de Paso de Mensajes es un estndar empleado por programas que utilizan
multiprocesamiento. Se maneja a travs de paso de mensajes, los cuales son usados para
comunicar y sincronizar los procesos. Adems de esto, MPI ofrece un conjunto de funciones
al programador para el diseo de la aplicacin, disponible en una librera de funciones para
C, C++ o Fortran que son empleadas en los programas para comunicar datos entre
procesos [10].
Los elementos que intervienen en el paso de mensajes son:
Proceso que enva
Proceso que recibe
Mensaje
Si el proceso encargado de enviar el mensaje espera hasta que el mensaje sea recibido, se
puede hablar de un paso de mensajes sncrono, mientras que si el proceso que envi el
mensaje contina su ejecucin y no espera que el mensaje llegue se denomina asncrono.
Caractersticas:
El proceso es la unidad bsica en MPI.
Espacios de memoria independiente.
Intercambio de informacin por paso de mensajes.
Cada proceso tiene un identificador interno propio de MPI (llamado rank).
Los procesos agrupados que pueden intercambiar mensajes se los conoce como
comunicadores [11].
El comunicador MPI_COMM_WORLD se crea por defecto y engloba a todos los
procesos.
Modelo de ejecucin
Los programas son ejecutados por un conjunto de procesos, donde un proceso se ejecuta
sobre un procesador.
Paralelizacin
Iniciar con versin secuencial del programa.
Detectar las partes del programa que se pueda ejecutar de manera concurrente.
Seleccionar los datos y tareas para definir el esquema de distribucin.
Insertar las instrucciones MPI para lograr distribucin.
Implementaciones
Los lenguajes de programacin que implementan MPI en general son los lenguajes que
intentan optimizar el tiempo de ejecucin y estos son los siguientes:
Phyton
Java
.NET
OCalm

PVM (Parallel Virtual Machine)


PVM o Mquina Paralela Virtual es un conjunto de libreras que permite integrar un conjunto
de sistemas de computacin en un nico esquema de mquina virtual. Es utilizado para
desarrollar aplicaciones cientficas complejas debido a que usa paralelismo escalable. Es
flexible debido a que PVM decide dnde y cundo ejecutar las tareas, que mquinas se
aaden o eliminan del esquema (permitiendo agregar nodos en caliente), y que tareas
pueden se pueden comunicar y sincronizar con otras [13].

Programas a ejecutar en el clster


Entre los distintos tipos de programas que se pueden ejecutar dentro de un clster y que
requieren recursos (procesamiento para grandes volmenes de datos) a gran escala estn
los siguientes:

Modelos climticos
Prediccin de consumo de elctrico de poblaciones
Data mining
Software de renderizado
Anlisis de AND
Anlisis del comportamiento de elementos qumicos, etc

Software para hacer benchmarking


Benchmark: Es una aplicacin que se usa para medir el rendimiento de un ordenador, o
algn componente del mismo. En este caso se utiliza ganglia para el monitoreo del cluster
Beowulf (monitoreo de master y esclavos). El objetivo principal es comprobar el estado del
cluster; presentar el rendimiento de cada uno de los nodos, una vez que estn realizando
un determinado proceso.

Figura 3. Esquema de funcionamiento de ganglia.

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.

Figura 4. Monitoreo de nodos con ganglia.

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.

Figura 5. Comparacin de recursos computacionales entre MV y OS Nativos.

2. Instalacin de paquetes bsicos.


OpenMPI:
sudo apt-get install openmpi-bin openmpi-common libopenmpi1.3
libopenmpi-dev
NOTA: Tener la misma versin de Open MPI en todas las mquinas.
SSH:
apt-get install ssh
3. Acceso remoto a los nodos.
Para la ejecucin de comandos remotos (mediante SSH) sin contraseas se
genera una clave pblica (en el nodo maestro) el cual ser compartido con
los nodos esclavos, esta clave se deber agregar al archivo authorized_keys
de cada nodo esclavo, de manera que el nodo maestro no necesitar
especificar nuevamente una contrasea.
A continuacin se especifican los comandos necesarios para realizar el
proceso anterior. Notar que tales comandos se debern ejecutar en el
master.
- Generacin de clave pblica:
ssh-key-gen -b 4096 -t rsa
- Envo de clave pblica, y adicin en archivo authorized_keys de un nodo
esclavo:
ssh-copy-id usuario@direccionIP
- Adicin de identidades RSA a agente de autenticacin (ssh-agent):
ssh-add
Nota: Crear la clave sin password y en el directorio por defecto.

Figura 6. Acceso a nodo esclavo.

4. Configuracin de servidor de archivos NFS (Sistema de Archivos de Red).


Debido a que cada nodo del clster debe tener acceso al programa
ejecutable se implementar el protocolo NFS para mantener los archivos
compartidos en red, con lo cual se facilitar la distribucin de dichos archivos
a los nodos.
A continuacin, se presenta la configuracin del sistema de archivos de red:
a. En el master: Un servidor NFS.
apt-get install nfs-kernel-server nfs-common portmap
b. En los nodos: Clientes NFS.
sudo apt-get install nfs-common portmap

Figura 7. Acceso al directorio del Master desde un nodo.

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

Figura 8. Esquema del cluster Beowulf

Se tiene un ordenador como nodo master y 3 nodos esclavos, en el nodo master se


ejecuta la aplicacin, en este caso un programa que cuenta el nmero de nmeros
primos. Para la comunicacin entre el master y los nodos esclavos se utiliza SSH y
NFS para distribuir los archivos al clster. Para la comunicacin entre nodos se uso
un switch.

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

Programa a ejecutar conteo de nmeros primos en un rango determinado.

En la carpeta compartida clusterdir se deber tener el cdigo fuente, en este caso


primos.c++. Una vez asegurado que se tiene el cdigo fuente se deber generar el
ejecutable con el siguiente comando:
mpic++ primos.c++ -o primos
Ejecucin:
Ejecucin en nodo local: ./primos
Ejecucin en mltiples nodos: mpirun -np 5 --hostfile mpi_hostfile ./primos
Donde
- np Indica el nmero de procesos a ejecutar.
- hostfile Indica que se utilizar un archivo que contiene los nodos
participantes del clster.
- mpi_hostfile Archivo con definicin de nodos.
- primos Archivo ejecutable.

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.

Figura 9. monitoreo al ejecutar el programa primos

Podemos observar en la figura 10 cuando dos nodos clientes estn trabajando al 100 % y
el master en un rango de 25 % a 50 %.

Figura 10. monitoreo al ejecutar el programa primos

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

Incluye la librera de MPI

22

MPI::Init

Inicializa el ambiente de ejecucin MPI

23

MPI::COMM_WORLD.
Get_size()

La funcin toma el nmero total de procesos

24

MPI::COMM_WORLD.
Get_rank

La funcin retorna el identificador del proceso actual

26

MPI::Wtime ( )

Toma el tiempo en el cual se inicia el procesamiento en


paralelo.

46

MPI::COMM_WORLD.
Bcast ( &n, 1, MPI::INT,
master )

Bcast Difunde los datos desde el proceso root a todos


los procesos.
&n
Direccin del buffer envo en root
1
Nmero de elementos en el buffer de envo
MPI::INT Tipo de dato del elemento del buffer de envo
master Id del proceso root

47

numeros_primos ( n, id,
p)

La funcin nmeros primos retorna la cantidad de


nmeros primos en determinado rango, debido a que el
proceso principal se divide en varios procesos, cada
proceso dependiendo de su identificador y del total de
procesos se encargar de tomar cierto rango de
nmeros, y calcular la cantidad de primos que existe en
ese rango calculado y se asignar a la variable
primes_part.

48

MPI::COMM_WORLD.
Reduce
( &primes_part,
&primes, 1, MPI::INT,
MPI::SUM, master );

primes_part Esta variable contiene la cantidad de


nmeros primos calculados.
primes
Acumula los valores enviados a primes_part
1
Indica el tamao que tendr primes
MPI::INT
Se define el tipo de dato
MPI::SUM Se define la operacin que se aplicar
sobre los datos.
master
Identificador del proceso root

Figura 11. Cdigo fuente paralelizable Nmeros primos

Programa de un tercero a ejecutar en el clster


Se consider el programa Pentaho Data Integration (Ver figura 12) para la prueba de
rendimiento del clster beowulf, debido a que este software realiza tareas en paralelo.
Es un software dedicado a la extraccin, transformacin y carga de datos, de gran uso para
la construccin de Data Warehouse

Figura 12. Pentaho Data Integration

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.

Algoritmo conteo de nmeros primos


En la tabla 2 se presenta los resultados tras ejecutar el algoritmo para conteo de nmeros
primos. Tales resultados corresponden a la ejecucin en serie y en paralelo, donde la
ejecucin en serie arroja respuestas en tiempos ms cortos que al ejecutar en paralelo, esto
debido a que la comunicacin entre los procesos consume un tiempo adicional por tanto
tambin influye en el rendimiento del clster, mientras que en secuencial un proceso es el
encargado de realizar todo el clculo evitando el envo de paquetes en red y la
comunicacin de procesos misma.

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

[20] Sander van Vugt, (2016). Introduction to OpenStack. URL


https://courses.edx.org/courses/course-v1:LinuxFoundationX+LFS152x+3T2016/info
Resumen
Introduccin
Clsters
Clusters, Cloud Computing y Grid Computing
Lenguajes de programacin para computacin en paralelo
Programas a ejecutar en el clster
Software para hacer benchmarking
Configuracin
Software utilizado.
Esquema
Ejemplos de pruebas
Aplicaciones
Lenguaje de programacin
Programa desarrollado
Programa de un tercero a ejecutar en el clster
Conclusiones
Referencias