MPICH2 Linux集群搭建

OS: CentOS 6.7

MPI:Mpich2-1.4.1

http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/1.4.1p1/mpich2-1.4.1p1.tar.gz

 

安装过程:

1.     事先安装GCC :

a)     CentOS: sudo yum install gcc-c++

b)     Ubuntu: sudo apt-get install g++

2.     设置ssh无密码登录:

a)      在每个节点上执行ssh-keygen -t rsa命令,在~/.ssh下生成秘钥id_sa和id_rsa.pub

b)      将每个节点上的id_rsa.pub文件追加到某一节点,假设131节点的~/.ssh/authorized_keys末尾,在这里假设那个节点的用户为hadoop

cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat - >>~/.ssh/authorized_keys"

c)      在非192.168.253.131节点,将131上的authorized_keys文件复制到所有节点的 ~/.ssh目录下

scp [email protected]:~/.ssh/authorized_keys~/.ssh/

d)      将authorized_keys的权限改为644

chmod 644 ~/.ssh/authorized_keys

e)      可以尝试集群之间相互ssh登陆

3.     编译mpich2

tar zxvf mpich2-1.4.1p1.tar.gz

cd mpich2-1.4.1p1

./configure--prefix=/opt/mpich2-1.4.1p1 --with-pm=hydra:mpd --with-mpe

make

sudo make install

4.     对MPICH2进行配置。在每个节点上都必须配置

a)      配置环境变量(~/.bashrc)

sudo gedit ~/.bashrc

b)      在 ~/.bashrc的底部添加下面几行:

如果安装路径修改此处也需要相应修改

export MPI_ROOT=/opt/mpich2-1.4.1p1

export PATH=$MPI_ROOT/bin:$PATH

export MANPATH=$MPI_ROOT/bin:$MANPATH

c)      执行下面命令使~/.bashrc生效:

source ~/.bashrc

d)      测试环境变量:

which mpd

which mpicc

which mpiexec

which mpirun

e)      创建配置文件.mpd.conf

root用户和普通用户的mpd.conf存储位置是不同的。

root用户在/etc路径下,创建文件名为"mpd.conf"文件。

普通用户在~/路径下,创建文件名为".mpd.conf "。

注意,文件名多了一个点。

mpd.conf或.mpd.conf的内容为secretword=myword

注意:各个节点上的mpd.conf文件必须相同

最后需要赋予相应权限

chmod 600 .mpd.conf

5.     创建配置文件mpd.hosts

路径:~/mpd.hosts

内容:mpd.hosts记录MPICH2集群上节点的机器名或IP地址

注意:如果是主机名需要先进行映射操作

在 Ubuntu/CentOS 7 中,我们在 Master 节点上执行如下命令修改主机名(即改为 Node1,注意是区分大小写的):

sudo vim /etc/hostname

如果是用 CentOS 6.x 系统,则是修改 /etc/sysconfig/network 文件,改为 HOSTNAME=Node1

然后执行如下命令修改自己所用节点的IP映射:

sudo vim /etc/hosts

192.168.1.121   Node1

192.168.1.122   Node2

我们在 /etc/hosts 中将该映射关系填写上去即可(一般该文件中只有一个 127.0.0.1,其对应名为 localhost,如果有多余的应删除,特别是不能有 “127.0.0.1 Node1” 这样的记录),CentOS 中的 /etc/hosts 配置则如下图所示:

MPICH2 Linux集群搭建_第1张图片

修改完成后需要重启一下,重启后在终端中才会看到机器名的变化。

需要在所有节点上完成网络配置。

如上面讲的是 Node1节点的配置,而在其他的Node节点上,

也要对 /etc/hostname(修改为Node2、Node3等) 和 /etc/hosts(跟Node1的配置一样)这两个文件进行修改。

配置好后需要在各个节点上执行如下命令,测试是否相互 ping 得通,如果 ping 不通,后面就无法顺利配置成功:

ping Node2 –c 3

6.     启动单点mpi

mpd &

7.     执行mpdtrace

mpdtrace -l

8.     启动mpi集群准备

a)      首先需要关闭防火墙,CentOS 6.x 中,可以通过如下命令关闭防火墙:

sudo service iptables stop   # 关闭防火墙服务

sudo chkconfig iptables off  # 禁止防火墙开机自启

若用是 CentOS 7,需通过如下命令关闭(防火墙服务改成了 firewall):

systemctl stop firewalld.service    # 关闭firewall

systemctl disable firewalld.service #禁止firewall开机启动

9.     启动集群:

MPI的多机并行是用mpdboot来管理启动的,是由参与计算的其中一台机器通过mpdboot同时启动其他机器上的mpd管理器并运行相应MPI程序。

# mpdboot –n process-num –f  mpd.hosts

mpdboot -n 4 -f mpd.hosts –v

MPICH2采用mpd服务来对进程进行管理,使用mpiexec运行mpi程序。

10. 查看集群主机名和端口号:

mpdtrace –l

关闭mpd服务:

Mpdallexit

查看主机名:

mpdtrace

你可能感兴趣的:(Linux,cluster,MPI)