Computación en la nube y big data: configuración del clúster MPI

¿Qué es un clúster MPI?

MPI (Message Passing Interface) es un estándar para escribir programas paralelos que permite la comunicación y la colaboración entre múltiples nodos informáticos. La configuración del clúster MPI hace referencia a la configuración de un entorno MPI en uno o más nodos informáticos para lograr la informática paralela.

Pasos para la configuración del clúster MPI:

Selección de hardware: elija los dispositivos de hardware que se adapten a sus necesidades, incluidos los nodos maestros y los nodos informáticos. El nodo maestro es responsable de coordinar la comunicación y la distribución de tareas entre los nodos informáticos, mientras que los nodos informáticos realizan las tareas informáticas reales.

Instalación del sistema operativo: instale un sistema operativo para cada nodo. Las opciones comunes incluyen servidores Linux, Windows, etc. Asegúrese de que todos los nodos estén accesibles entre sí y tengan conectividad de red.

Instalación del software MPI: elija una implementación MPI, como OpenMPI, MPICH, etc., e instale el software MPI correspondiente en cada nodo de acuerdo con los requisitos del sistema operativo. La biblioteca MPI proporciona un conjunto de funciones y herramientas para que la computación paralela se comunique y sincronice entre nodos.

Configure el nodo maestro: edite el archivo de configuración MPI del nodo maestro, generalmente el archivo de configuración de mpiexec o mpirun, para especificar la forma de ejecutar el programa MPI. Esto puede incluir opciones para especificar la cantidad de nodos de cómputo, scripts de inicio, asignaciones de procesos y más.

Configure los nodos de cómputo: para los nodos de cómputo, edite su archivo de configuración MPI para especificar la ubicación del nodo maestro y otra información necesaria. Además, asegúrese de que los nodos de cómputo tengan acceso al nodo maestro y a otros nodos de cómputo para la comunicación.

Pruebe un clúster MPI: escriba un programa MPI simple y pruébelo en un clúster MPI. Asegúrese de que los programas MPI se puedan ejecutar correctamente en paralelo en varios nodos, y que el intercambio de datos y la sincronización entre nodos se puedan realizar mediante el paso de mensajes.

Expanda el tamaño del clúster (opcional): si necesita más potencia informática, puede agregar más nodos informáticos al clúster. Asegúrese de que el software MPI correspondiente también esté instalado en el nuevo nodo y configurado de acuerdo con los pasos 4 y 5.

Hagamos una configuración de clúster MPI simple a continuación, con la esperanza de ayudarlo a aprender computación en la nube y conocimientos relacionados con el clúster MPI.

1. Configure la máquina virtual con VMware Workstation Pro y ábrala

Aquí elegimos iniciar sesión como un usuario normal
inserte la descripción de la imagen aquí

1. Asegúrese de que la red sea fluida, configure la IP fija de cada nodo y reinicie el servicio de red.

Configure el servicio de red maestra:

sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33

inserte la descripción de la imagen aquí
¡Configure correctamente la red
para hacer ping a www.baidu.com correctamente!

inserte la descripción de la imagen aquí
Configure el servicio de red host1:

sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33

inserte la descripción de la imagen aquí

¡Configure correctamente la red
para hacer ping a www.baidu.com correctamente!

inserte la descripción de la imagen aquí
Configure el servicio de red host2:

sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33

inserte la descripción de la imagen aquí
Red configurada con éxito
ping www.baidu.com¡Éxito!
inserte la descripción de la imagen aquí
2. Configure los archivos de hosts de las dos máquinas: los nombres de host son master, host1 y host2 respectivamente

Orden:

vim /etc/hosts

inserte la descripción de la imagen aquí
Orden:

vim /etc/hosts

inserte la descripción de la imagen aquí
Modifique el nombre de host maestro:

vim /etc/hosname

inserte la descripción de la imagen aquí
Comando: vim /etc/hosts
inserte la descripción de la imagen aquí
modificar host1 nombre de host:

vim /etc/hosname

inserte la descripción de la imagen aquí
Orden:

vim /etc/hosts

inserte la descripción de la imagen aquí
Modifique el nombre de host host2:

vim /etc/hosname

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

2. Inicio de sesión sin contraseña SSH

ssh-keygen –t rsa Ingrese completamente
en master, host1, host2 respectivamente
2. Agregue la clave pública al archivo authorized_keys, comando:

  cat  ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys

En maestro, host1, host2 respectivamente,
todos los nodos deben configurarse
3. Copie la clave pública a otras máquinas
(1) maestro

 ssh-copy-id -i  ~/.ssh/id_rsa.pub host1
ssh-copy-id  -i  ~/.ssh/id_rsa.pub host2

inserte la descripción de la imagen aquí

Reinicie el servicio ssh:

sudo systemctl restart sshd

inserte la descripción de la imagen aquí
El maestro inicia sesión con éxito en host1 sin contraseña:

ssh host1

inserte la descripción de la imagen aquí
(2)anfitrión1

ssh-copy-id  -i  ~/.ssh/id_rsa.pub master
ssh-copy-id  -i  ~/.ssh/id_rsa.pub host2

inserte la descripción de la imagen aquí
Reinicie el servicio ssh:

sudo systemctl restart sshd

inserte la descripción de la imagen aquí
Host1 inicia sesión con éxito en host2 sin contraseña:

ssh host2

inserte la descripción de la imagen aquí
(3)anfitrión2

ssh-copy-id  -i  ~/.ssh/id_rsa.pub master
ssh-copy-id  -i  ~/.ssh/id_rsa.pub host1

inserte la descripción de la imagen aquí

Reinicie el servicio ssh:

sudo systemctl restart sshd

inserte la descripción de la imagen aquí
Host2 inicia sesión con éxito en host1 sin contraseña:

 ssh host1

inserte la descripción de la imagen aquí

CentOS 7 instaló automáticamente el paquete ssh y configuró el servicio SSH durante la instalación.
El estado del servicio ssh de las tres máquinas:

systemctl status sshd

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Tenga en cuenta que el inicio de sesión sin contraseña ssh es de usuario a usuario, por lo que es necesario asegurarse de que la terminal del nodo principal y la terminal del nodo secundario se correspondan durante la operación.
1) Cierra el firewall de cada nodo y
cierra Selinux: sudo systemctl stop firewalld
Power on disabled: sudo systemctl disabled firewalld
Cierra Selinux: sudo setenforce 0
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
2) Servidor (maestro, se recomienda tomar el primer host)
(1) sudo yum -y install nfs -utils rpcbind #Instalar software
(2) mkdir -p /opt/modules/mpi_share #Crear directorio compartido
(3) chmod 777 /opt/modules/mpi_share -R #Otorgar permisos
inserte la descripción de la imagen aquí
(4) sudo vi /etc/ exportaciones #Modificar configuración escribir:

/opt/modules/mpi_share 192.168.95.25(rw,sync,no_root_squash) /opt/modules/mpi_share 192.168.95.26(rw,sync,no_root_squash)

inserte la descripción de la imagen aquí

192.168.95.25 es la dirección del nodo secundario, y también puede ser el nombre del host. El rw en la opción de permiso significa que se permite leer y escribir, y la entrada depende de la dirección IP específica del host; se lee ro -solo; sincronización significa escritura síncrona, y no_root_squash significa que cuando el cliente se inicia con otorgar privilegios de raíz local al acceder como raíz.

sudo exportfs -rv

inserte la descripción de la imagen aquí
(5) sudo systemctl start rpcbind

sudo systemctl start nfs #启动nfs,或者设置为开机启动

inserte la descripción de la imagen aquí(6) sudo systemctl habilitar rpcbind

sudo systemctl enable nfs
showmount -e #查看NFS服务器端的共享目录

inserte la descripción de la imagen aquí
3) Cliente (host1)
(1) sudo yum -y install nfs-utils rpcbind
(2) mkdir -p /opt/modules/mpi_share #Establecer la ubicación del directorio compartido y el nombre de cada nodo en el mismo
(3) sudo systemctl start rpcbind
sudo systemctl start nfs #También se puede configurar para que arranque
(4) sudo systemctl enable rpcbind
(5) sudo mount -t nfs 192.168.95.20:/opt/modules/mpi_share /opt/modules/mpi_share #Montar el lado del servidor directorio compartido Cargue en una carpeta local
(6) o monte permanentemente (opcional)
vim /etc/fstab
add 192.168.95.20:/home/mpi_share /home/mpi_share nfs rw 0 0
inserte la descripción de la imagen aquí
4) client (host2)
(1) sudo yum - y install nfs-utils rpcbind
(2) mkdir -p /opt/modules/mpi_share #Establezca que la ubicación del directorio compartido y el nombre de cada nodo sean iguales (3)
sudo systemctl start rpcbind
sudo systemctl start nfs #También puede establecer el inicio
(4) sudo systemctl habilitar rpcbind
(5) sudo mount -t nfs 192.168.95.20:/opt/modules/mpi_share /opt/modules/mpi_share #Montar el directorio compartido del lado del servidor en una carpeta local
(6) o montar permanentemente (opcional)
vim /etc /fstab
agregue 192.168.95.20:/home/mpi_share /home/mpi_share nfs rw 0 0
inserte la descripción de la imagen aquí
5. Instale y configure mpich
1) Instale el compilador
yum install gcc gcc-c++ gcc-fortran kernel-devel -y # https://blog.csdn. net/wangzhouf/article/details/108222704
(yum install gcc g++ #Los compiladores predeterminados de mpich son gcc, g++ y gfortran, pero el comando yum no puede encontrar el paquete de instalación de gfortran #Puede encontrar el
método para instalar el compilador de gfortran usted mismo Autor: Piel de naranja secada al aire - https://www.bilibili.com/read/cv15215061 Fuente: bilibili)
inserte la descripción de la imagen aquí
2) Descargue e instale el paquete de instalación de mpi
(1) Cree un directorio y descargue el paquete

mkdir -p /opt/softwares
cd softwares
wget http://www.mpich.org/static/downloads/3.4.1/mpich-3.4.1.tar.gz

inserte la descripción de la imagen aquí
(2) Descomprimir

tar -zxvf mpich-3.4.1.tar.gz

inserte la descripción de la imagen aquí
(3) Crear un nuevo directorio de instalación

mkdir -p /opt/modules/mpich-install

inserte la descripción de la imagen aquí
(4) Ingrese al directorio de descarga y compile e instale

cd /opt/softwares/mpich-3.4.1
./configure --disable-fortran --prefix=/opt/modules/mpich-install --with-device=ch4:ofi 2>&1 | tee c.txt

O:
./configure --disable-fortran //Autor: Piel de naranja seca- https://www.bilibili.com/read/cv15215061 Fuente: bilibili
inserte la descripción de la imagen aquí

make

inserte la descripción de la imagen aquí

make install

inserte la descripción de la imagen aquí
3) Configurar el entorno
(1)

vim ~/.bashrc
export MPICH=/opt/modules/mpich-install
export PATH=$MPICH/bin:$PATH

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
(2) Hacer que las variables de entorno surtan efecto

source ~/.bashrc

inserte la descripción de la imagen aquí
4) Comprobar la instalación

mpirun -version

inserte la descripción de la imagen aquí
6. Compile el programa C en cada host
1) Cargue el código del programa C helloWorld.c en el directorio /opt/modules/mpi_share de cada host
2) cd /opt/modules/mpi_share`
3) Primero escriba helloWorld.c y un holaMundo2.c:
inserte la descripción de la imagen aquí

mpicc -o helloWorld helloWorld.c

inserte la descripción de la imagen aquí
Escribiendo otro helloWorld2.c:

#include "mpi.h" 
#include <stdio.h> 
#include <math.h> 
void main(argc,argv) 
int argc;
char *argv[]; 
{
    
    
  int myid, numprocs; 
  int namelen;
  char processor_name[MPI_MAX_PROCESSOR_NAME]; 
  MPI_Init(&argc,&argv);
  MPI_Comm_rank(MPI_COMM_WORLD,&myid); 
  MPI_Comm_size(MPI_COMM_WORLD,&numprocs); 
  MPI_Get_processor_name(processor_name,&namelen);
  fprintf(stderr,"Hello World! Process %d of %d on %s\n", myid, numprocs, processor_name);
  MPI_Finalize();
}

inserte la descripción de la imagen aquí
7. Ejecutar en maestro:

mpirun -n 3 -host master,host1,host2 ./helloWorld

mpirun -n 3 -host master,host1,host2 ./helloWorld2

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Cuando nos enfrentamos a nuestra principal contradicción, si podemos mirar el problema desde una dimensión superior y un nivel superior, descubriremos un mundo nuevo, y habrá una sensación de brisa primaveral que llega de la noche a la mañana, miles de perales floreciendo. Esto es otra gran mejora en nuestro nivel de pensamiento personal, pero este proceso requiere que sigamos aprendiendo y practicando, cuando alcancemos un cierto nivel, los cambios cuantitativos sufrirán cambios cualitativos.

Supongo que te gusta

Origin blog.csdn.net/Myx74270512/article/details/131742900
Recomendado
Clasificación