docker搭建MPI分布式环境并测试矩阵分解程序

最近在mac的ubuntu虚拟机中用docker搭建mpi的运行环境,各种Google也没找到特别好的教程,尤其是遇到各种非常其他的问题,折腾了三四天终于把环境搭建完毕,这里将我遇到的问题和详细步骤记录下来,仅供大家作为参考,我下一步将使用linpack对性能进行测试。

1.docker的安装和命令学习

docker作为一个开源的应用容器引擎,是操作系统上的虚拟化技术。虚拟化可以划分为硬件虚拟化和操作系统虚拟化,硬件虚拟化比如阿里云、VMware、Virtualbox等,操作系统虚拟化就是将多个不同的进程封装在一个密闭的容器中,这就是容器化技术,docker就是其中的佼佼者。推荐一篇对docker的理解和一篇对容器操作的文章,http://blog.csdn.net/zjin_hua/article/details/52041757http://blog.chinaunix.net/uid-10915175-id-4443127.html

docker的安装在官网上有详细的教程https://docs.docker.com/engine/installation/linux/ubuntulinux/,一定要按照一步一步按照操作来就可以,我的虚拟机系统是ubuntu14.04 server ,server比较轻量级。安装完成后运行docker run ubuntu /bin/echo 'Hello world'测试安装是否成功,docker --version查看版本

2.制作openmpi的image

我选择在别人的openmpi的镜像基础上安装自己需要的东西后制作成自己的镜像,在docker hub中找到hmonkey/openmpi14.04,登陆后直接输入这个搜索就可以找到,然后pull下来,我选择的是V3版本,然后再docker中执行docker pull hmonkey/openmpi14.04:v3,至此拥有了一个基本的image文件了。

启动四个个节点:

sudo docker run -ti --name master --privileged=true hmonkey/openmpi14.04:v3 /bin/bash

sudo docker run -ti --name slave1 --privileged=true hmonkey/openmpi14.04:v3 /bin/bash

sudo docker run -ti --name slave2 --privileged=true hmonkey/openmpi14.04:v3 /bin/bash

sudo docker run -ti --name slave3 --privileged=true hmonkey/openmpi14.04:v3 /bin/bash

容器和宿主机来回切换的方式有四种,我习惯用docker -exec和ssh切换操作,但是有文章强烈反对使用ssh来回切换操作,建议自行google一下。

docker images查看已经有的image,docker ps -a查看所有的容器。docker ps -l刚运行的容器,可以查看几个容器是否启动起来。

如果容器已经存在可以使用:docker start master开启容器

如进入运行中的master容器:docker exec -ti master /bin/bash

退出容器同时停止:exit

退出不停止容器:Ctrl+P+Q(注意按键顺序) 


3.每个节点都安装网络文件系统nfs

安装nfs可以实现节点之间文件的共享,一些代码和软件包可以不用重复下载。在安装nfs遇到问题往往是因为源地址不对,执行sudo apt-get update更新一下就可以。如果这条命令不能执行,则是因为源地址错乱,需要删除原来的文件。

sudo apt-get install nfs-kernel-server 安装nfs ,

如果后面文件挂在是报mount wrong nfs type, bad option, bad superblock on XXX 的错误。则是没有自动安装nfs-common的原因,需要安装

sudo apt-get install nfs-common,然后在主节点上配置需要共享文件夹:

/etc/exports文件,在最后一行,加上这么一句。 
"/home/monkey/nfs" *(rw,sync,no_subtree_check) 当然monkey/nfs文件夹需要自己创建。

sudo /etc/init.d/nfs-kernel-server restart就可以了。我们可以输入showmount -e来进行查看。我是在宿主机器上配置的共享文件,也可以在主节点master上进行配置。


4.每个节点安装和启动ssh免密登陆

进入每一个节点,sudo apt-get install openssl-server 安装ssh ,然后制作免密登陆

ssh-keygen -t rsa -P ""生成公钥

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  追加到文件

ssh localhost 测试

启动ssh服务:sudo service ssh start 自带的vi编辑器比较混乱 最好给节点装个vim,sudo apt-get vim

然后在每个几点进入/etc/hosts文件中配置其他节点的ip地址: 这里还有一个节点,测试矩阵分解需要四个节点,自行加入即可。


5.共享文件挂载

这个过程会出现各种问题,每个人遇到的问题应该都不太一样,大家自行解决吧。首先在在/etc/fstab中加入挂在地址和文件:

在/etc/fstab 下面添加如下一句话

XX.XX.XX.XX:/home/monkey/nfsnfs nfsdefaults 0

更改文件夹nfs的权限

chmod 755 /nfs
重启:sudo /etc/init.d/nfs-kernel-server restart

然后就可以对文件进行挂载:

mount -t nfs ip地址:/home/monkey/nfs /nfs

6.准备测试程序

从github找一个测试程序,MPi测试程序很多,这里找了一个比较全的,在共享的文件夹下面去clone,就不用每个节点都进行拷贝了

mkdir mpiExample

cd mpiExample

git clone https://github.com/preimmortal/MPI.git

解决找不到github.com主机的问题:

主要是因为在Google的hosts文件中设置了github的代理,可以找到 注释掉下面 重启机器

# Github start

#192.30.252.141gist.github.com

# Github end

解决2:取消代理设置(重启机器或者虚拟机)

git config --global --unset http.proxy

https version:

git config --global --unset https.proxy

需要输入github的账号和密码

ps:各节点的执行代码位置一定要放置在相同的地方

cd MPI/array_decomposition

mpicc -o mpi_array mpi_array.c
多出的mpi_array就是可执行的文件
OK 回到master节点创建hostfile,在hostfile文件中配置其他节点ip就可以了

cd MPI/array_decomposition

touch hostfile

vim hostfile  添加IP地址的格式如下:

7.测试矩阵分解

执行:mpirun -n 4 -hostfile hostfile moi_array


大功告成!!期间会出现各种奇葩的问题,一个一个慢慢解决就好了!



  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
好的,下面是使用docker搭建minio分布式集群的详细步骤: 1. 安装DockerDocker Compose 您需要在您的机器上安装DockerDocker Compose。如果您还没有安装,请先安装。 2. 创建docker-compose.yml文件 在您的工作目录下创建一个名为docker-compose.yml的文件,并将以下内容复制到文件中。 ``` version: '3' services: minio1: image: minio/minio container_name: minio1 command: server http://minio{1...4}/data{1...4} ports: - "9001:9000" volumes: - ./data1:/data1 environment: MINIO_ACCESS_KEY: YOUR_ACCESS_KEY MINIO_SECRET_KEY: YOUR_SECRET_KEY restart: always minio2: image: minio/minio container_name: minio2 command: server http://minio{1...4}/data{1...4} ports: - "9002:9000" volumes: - ./data2:/data2 environment: MINIO_ACCESS_KEY: YOUR_ACCESS_KEY MINIO_SECRET_KEY: YOUR_SECRET_KEY restart: always minio3: image: minio/minio container_name: minio3 command: server http://minio{1...4}/data{1...4} ports: - "9003:9000" volumes: - ./data3:/data3 environment: MINIO_ACCESS_KEY: YOUR_ACCESS_KEY MINIO_SECRET_KEY: YOUR_SECRET_KEY restart: always minio4: image: minio/minio container_name: minio4 command: server http://minio{1...4}/data{1...4} ports: - "9004:9000" volumes: - ./data4:/data4 environment: MINIO_ACCESS_KEY: YOUR_ACCESS_KEY MINIO_SECRET_KEY: YOUR_SECRET_KEY restart: always ``` 3. 启动集群 在您的工作目录中运行以下Docker Compose命令,以启动Minio集群。 ``` docker-compose up -d ``` 这将在您的机器上启动四个Minio容器,每个容器都有一个自己的数据卷,并且它们都在同一网络中。 4. 访问Minio UI 您可以在浏览器中访问http://localhost:9001/,并使用您的访问密钥和秘密密钥登录Minio UI。您将看到一个名为“data1”的存储桶已经被创建。 5. 添加其他节点 如果您需要添加其他节点,请在docker-compose.yml文件中添加另一个服务,并使用相同的access key和secret key。您还需要在Minio UI中添加新的节点。 这些是使用Docker Compose搭建Minio分布式集群的基本步骤。如果您需要更详细的指导,请查看Minio官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值