铁佛 发表于 2024-11-5 22:06:46

大数据与云计算——MPI集群配置(全网最具体讲解)

什么是MPI集群?

MPI(消息通报接口)是一种用于编写并行步伐的尺度,它允许在多个计算节点上进行通信和协作。MPI集群配置是指在一个或多个计算节点上设置MPI情况以实现并行计算。
MPI集群配置的步调:
硬件选型:选择适合你需求的硬件装备,包括主节点和计算节点。主节点负责协调计算节点之间的通信和使命分配,而计算节点执行现实的计算使命。
操作系统安装:为每个节点安装操作系统,常见的选择包括Linux、Windows服务器等。确保所有节点都能够相互访问,并具备网络毗连功能。
MPI软件安装:选择一种MPI实现,如OpenMPI、MPICH等,并根据操作系统的要求在每个节点上安装相应的MPI软件。MPI库提供了一组用于并行计算的函数和工具,以便在节点之间进行通信和同步。
配置主节点:编辑主节点的MPI配置文件,通常是mpiexec或mpirun的配置文件,以指定运行MPI步伐的方式。这可以包括指定计算节点的数目、启动脚本、进程分配等选项。
配置计算节点:对于计算节点,编辑其MPI配置文件以指定主节点的位置和其他必要的信息。此外,确保计算节点能够访问主节点和其他计算节点,以便进行通信。
测试MPI集群:编写一个简单的MPI步伐,并在MPI集群上进行测试。确保MPI步伐能够正确地在多个节点上并行执行,并且能够通过消息通报实现节点之间的数据交换和同步。
扩展集群规模(可选):假如需要更多的计算本领,可以添加更多的计算节点到集群中。确保新的节点也安装了相应的MPI软件,并按照步调4和5配置好。
下面我们来进行一个简单的MPI集群配置,希望对各位学习云计算和相关MPI集群知识有所资助。
一、 用VMware Workstation Pro配置虚拟机并打开

这里我们选择用普通用户登陆
https://i-blog.csdnimg.cn/blog_migrate/f9712785f89148f759913f1f06491d76.png
1. 保证网络畅通,设置各节点的固定IP,并重新启动网络服务。

配置master网络服务:
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33


https://i-blog.csdnimg.cn/blog_migrate/a0a1b8f50f158e392f93ad61837cf5ac.png
成功配置网络
ping www.baidu.com 成功!
https://i-blog.csdnimg.cn/blog_migrate/46bce8e0dd09009c0a33fde7c52a5274.png
配置host1网络服务:
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33


https://i-blog.csdnimg.cn/blog_migrate/8d6a6ce33fecfb9b918104f6471396dd.png
成功配置网络
ping www.baidu.com 成功!
https://i-blog.csdnimg.cn/blog_migrate/5ea780442ce69c34c0eb045a8dffec08.png
配置host2网络服务:
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33


https://i-blog.csdnimg.cn/blog_migrate/6f0fa8f28bff0a0b0b8ffe20bfc2b104.png
成功配置网络
ping www.baidu.com 成功!
https://i-blog.csdnimg.cn/blog_migrate/2dc0d4a196c8e8a39c5af45297745edb.png
2. 配置两台机器的hosts文件:主机名分别为master、host1和host2
下令:
vim /etc/hosts


https://i-blog.csdnimg.cn/blog_migrate/8bb5aabcafee4ef9324c5d401c58aacd.png
下令:
vim /etc/hosts


https://i-blog.csdnimg.cn/blog_migrate/3e7a7c762f4c68b2e957f0aa160dcbed.png
修改master主机名:
vim /etc/hosname


https://i-blog.csdnimg.cn/blog_migrate/7717cb4831065ede4f9b48ee5aedc434.png
下令:vim /etc/hosts



https://i-blog.csdnimg.cn/blog_migrate/8401754a2f03bc528f2abbb4559d6043.png
修改host1主机名:
vim /etc/hosname


https://i-blog.csdnimg.cn/blog_migrate/501ea6c5f8bb824c9cc747924520aa40.png
下令:
vim /etc/hosts


https://i-blog.csdnimg.cn/blog_migrate/03826574b76d605ee85edd83f9a33a47.png
修改host2主机名:
vim /etc/hosname


https://i-blog.csdnimg.cn/blog_migrate/c5fd13267be4395cf0e367eadc054611.png
https://i-blog.csdnimg.cn/blog_migrate/c7dfa2010d0d58e0d260d6aff2cd3dea.png
2. SSH免密登陆

ssh-keygen –t rsa 一路回车
在master,host1,host2分别
2.将公钥追加到authorized_keys文件中,下令:
cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
在master,host1,host2分别
所有节点都要设置
3.将公钥拷贝到其它机器
(1)master
ssh-copy-id -i~/.ssh/id_rsa.pub host1
ssh-copy-id-i~/.ssh/id_rsa.pub host2
https://i-blog.csdnimg.cn/blog_migrate/8b89c90555286404220b0da703b1569b.png
重启ssh服务:
sudo systemctl restart sshd


https://i-blog.csdnimg.cn/blog_migrate/1ddd469f9ceb7a62e5a06350fc1e3376.png
master成功免密登陆host1:
ssh host1
https://i-blog.csdnimg.cn/blog_migrate/8a18444e5ace622b4d7c4f278cd5ebc2.png
(2)host1
ssh-copy-id-i~/.ssh/id_rsa.pub master
ssh-copy-id-i~/.ssh/id_rsa.pub host2
https://i-blog.csdnimg.cn/blog_migrate/91a58ee926b7d2d65369ae58bd176d01.png
重启ssh服务:
sudo systemctl restart sshd


https://i-blog.csdnimg.cn/blog_migrate/42c469ff1a4d43302163d9bff07ca404.png
host1成功免密登陆host2:
ssh host2
https://i-blog.csdnimg.cn/blog_migrate/bfec2152eadc801b3c814e26b571bcbc.png
(3)host2
ssh-copy-id-i~/.ssh/id_rsa.pub master
ssh-copy-id-i~/.ssh/id_rsa.pub host1
https://i-blog.csdnimg.cn/blog_migrate/5a7d181dbd121342eaf6432bab587339.png
重启ssh服务:
sudo systemctl restart sshd


https://i-blog.csdnimg.cn/blog_migrate/8460782974c7b4e09fd1f795b0824b1d.png
host2成功免密登陆host1:
ssh host1

https://i-blog.csdnimg.cn/blog_migrate/0e56498b111804897b498f4054efa83e.png
CentOS 7在安装时主动安装了ssh软件包,并配置了SSH服务。
三台机器ssh服务状态:
systemctl status sshd
https://i-blog.csdnimg.cn/blog_migrate/6b10ce5f7903d5b0cc07c977081b9581.png
https://i-blog.csdnimg.cn/blog_migrate/865fd2696e8029e11511b15f12c44f2e.png
https://i-blog.csdnimg.cn/blog_migrate/f399902ff94d904d62f409f20b1ca74a.png
注意,ssh免密登陆是用户对用户式的,所以在操作中要保证主节点终端和子节点的终端是对应的。
1)关闭各节点防火墙和Selinux
关闭:sudo systemctl stop firewalld
开机禁用:sudo systemctl disable firewalld
关闭Selinux:sudo setenforce 0
https://i-blog.csdnimg.cn/blog_migrate/c5b37ae344a9263be2bc721f59dca951.png
https://i-blog.csdnimg.cn/blog_migrate/ac70a27e477f95fa0fca38a52461c651.png
https://i-blog.csdnimg.cn/blog_migrate/f3a310a6715bd38689bb15b90d7163cb.png
2)服务端(master,发起取第一台主机)
(1)sudo yum -y install nfs-utils rpcbind #安装软件
(2)mkdir -p /opt/modules/mpi_share #创建共享目次
(3)chmod 777 /opt/modules/mpi_share -R #授予权限
https://i-blog.csdnimg.cn/blog_migrate/1d4de6cc459ee2dd7fa6bdc5016dddee.png
(4)sudo vi /etc/exports #修改配置写入:
/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)
https://i-blog.csdnimg.cn/blog_migrate/bc879cc6efdb3998b6f288067c6b0155.png
192.168.95.25是子节点的地址,也可以是主机名,权限选项中的rw表现允许读写,视自己主机具体IP地址输入;ro为只读;sync表现同步写入,no_root_squash表现当客户机以root身份访问时赋予本地root权限。
sudo exportfs -rv
https://i-blog.csdnimg.cn/blog_migrate/4defbb90095168c24f46cfc07c0f6629.png
(5)sudo systemctl start rpcbind
sudo systemctl start nfs #启动nfs,或者设置为开机启动
https://i-blog.csdnimg.cn/blog_migrate/1853bbf7be4d08a5b853f1adb7648f2a.png(6)sudo systemctl enable rpcbind
sudo systemctl enable nfs
showmount -e #查看NFS服务器端的共享目录
https://i-blog.csdnimg.cn/blog_migrate/ac2b540332213cec6e4fe4a76db10df7.png
3)客户端(host1)
(1)sudo yum -y install nfs-utils rpcbind
(2)mkdir -p /opt/modules/mpi_share #将各个节点的共享目次位置和名字设置成一样的
(3)sudo systemctl start rpcbind
sudo systemctl start nfs #同样可以设置开机启动
(4)sudo systemctl enable rpcbind
(5)sudo mount -t nfs 192.168.95.20:/opt/modules/mpi_share /opt/modules/mpi_share #将服务器端共享目次挂载到本地文件夹
(6)或者永世挂载(可选)
vim /etc/fstab
添加192.168.95.20:/home/mpi_share /home/mpi_share nfs rw 0 0
https://i-blog.csdnimg.cn/blog_migrate/9ec714d1a2f1b028ee29645b117f8bcc.png
4)客户端(host2)
(1)sudo yum -y install nfs-utils rpcbind
(2)mkdir -p /opt/modules/mpi_share #将各个节点的共享目次位置和名字设置成一样的
(3)sudo systemctl start rpcbind
sudo systemctl start nfs #同样可以设置开机启动
(4)sudo systemctl enable rpcbind
(5)sudo mount -t nfs 192.168.95.20:/opt/modules/mpi_share /opt/modules/mpi_share #将服务器端共享目次挂载到本地文件夹
(6)或者永世挂载(可选)
vim /etc/fstab
添加192.168.95.20:/home/mpi_share /home/mpi_share nfs rw 0 0
https://i-blog.csdnimg.cn/blog_migrate/f7717b2135c6d362cb023ed133cff196.png
5. 安装配置mpich
1)安装编译器
yum install gcc gcc-c++ gcc-fortran kernel-devel -y # https://blog.csdn.net/wangzhouf/article/details/108222704
(yum install gcc g++ #mpich默认的编译器是gcc,g++和gfortran,但是yum下令找不到gfortran的安装包
#可以自行查找安装gfortran编译器的方法 作者:风干橘子皮- https://www.bilibili.com/read/cv15215061 出处:bilibili)
https://i-blog.csdnimg.cn/blog_migrate/c8a6c65fafbdeb96d669f62078dd0cbf.png
2)下载并安装mpi安装包
(1)创建目次并下载包
mkdir -p /opt/softwares
cd softwares
wget http://www.mpich.org/static/downloads/3.4.1/mpich-3.4.1.tar.gz
https://i-blog.csdnimg.cn/blog_migrate/ac516faadd8fd99981d98534f5cb7005.png
(2)解压
tar -zxvf mpich-3.4.1.tar.gz
https://i-blog.csdnimg.cn/blog_migrate/7f6d090429d07e00de8623386d84d8c3.png
(3)新建安装目次
mkdir -p /opt/modules/mpich-install
https://i-blog.csdnimg.cn/blog_migrate/5ea63e24804caa0b1c024171cf64aaef.png
(4)进入下载目次并编译安装
cd /opt/softwares/mpich-3.4.1
./configure --disable-fortran --prefix=/opt/modules/mpich-install --with-device=ch4:ofi 2>&1 | tee c.txt
或:
./configure --disable-fortran //作者:风干橘子皮- https://www.bilibili.com/read/cv15215061 出处:bilibili
https://i-blog.csdnimg.cn/blog_migrate/41eb8448cddd61b56f2b98dbd61ca74e.png
make
https://i-blog.csdnimg.cn/blog_migrate/61309e9e1d81476b3bb34148f6ea08a7.png
make
install https://i-blog.csdnimg.cn/blog_migrate/10cb000031a2488f4c8324e1de921aea.png
3)配置情况
(1)
vim ~/.bashrc
export MPICH=/opt/modules/mpich-install
export PATH=$MPICH/bin:$PATH
https://i-blog.csdnimg.cn/blog_migrate/5cea00a220580b7ade6b8d440174d374.png
https://i-blog.csdnimg.cn/blog_migrate/ab22c96416fc714e7adfb00ebdeac46e.png
(2)令情况变量见效
source ~/.bashrc
https://i-blog.csdnimg.cn/blog_migrate/89133742391dcc95d1777cbe6b2f8e92.png
4)查抄安装情况
mpirun -version
https://i-blog.csdnimg.cn/blog_migrate/52c3af05c80aa670f2a0307f7274b0f0.png
6.在每台主机上编译C步伐
1)将C步伐代码helloWorld.c上传到 每台主机的/opt/modules/mpi_share目次
2)cd /opt/modules/mpi_share`
3)先编写一个helloWorld.c和一个helloWorld2.c:
https://i-blog.csdnimg.cn/blog_migrate/139458801a7f97b69f059793063f2e67.png
mpicc -o helloWorld helloWorld.c
https://i-blog.csdnimg.cn/blog_migrate/b932084a4226674885581acc2287fd22.png
在编写另一个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_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();
}

https://i-blog.csdnimg.cn/blog_migrate/0bd34fdd5cca7947551e2483fbc9ede1.png
7.在master上运行:
mpirun -n 3 -host master,host1,host2 ./helloWorld

mpirun -n 3 -host master,host1,host2 ./helloWorld2
https://i-blog.csdnimg.cn/blog_migrate/5aaf214788912b50dbf4dceae79ca206.png
https://i-blog.csdnimg.cn/blog_migrate/d0a10fcffbd6b8462cf2299e6681ee83.png
https://i-blog.csdnimg.cn/blog_migrate/d9d0dd7d2f166ccf164df171984926db.png
当我们面对我们主要的矛盾时候,假如我们能够站在更高维度、更高层次去看待问题,我们将会发现新大陆,会有一种忽如一夜春风来,千树万树梨花开的感受,这对我们个人头脑层面又一个巨大的提拔,但是这个过程需要我们不断学习,不断历练,当到达一定层次的时候,量变就会发生质变。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 大数据与云计算——MPI集群配置(全网最具体讲解)