openMPI小集群安装
经过一天的努力,终于完成了openMPI的多节点安装,即小集群安装。本文使用的是openmpi-1.6.5,下载地址见:http://www.open-mpi.org/software/ompi/v1.6/
1.安装准备
1.1 首先肯定是需要安装GCC和G++编译器,这个直接apt-get就OK了;
sudo apt-get g++ gfortran
1.2 设置主机名
先在/etc/hosts中删除原来的hostname,然后 vi /etc/hostname改成你想要的,注意必须顶行写。然后使用hostname命令来重新得到hostname, logout一下再login就会改掉。
这里我用的是node1-ubuntu和node2-ubuntu。
1.3 修改hosts文件,修改如下:
192.168.1.133 node1-ubuntu server
192.168.1.135 node2-ubuntu
1.4 配置自动ssh登录
这里主要是要各个机器之间能无密码访问,主要用到的就是SSH,因此需要一些设置。
首先,我们需要导出各个节点的公钥和私钥:
$ ssh-keygen -t rsa
在运行过程中,会提示你输入这个输入那个,不用管那么多,直接回车就完了。等运行结束后,进入.ssh目录,你会看到公钥和私钥文件;
$ cd ~/.ssh
$ ls
id_rsa id_rsa.pub
其中id_rsa就是私钥,id_rsa.pub就是公钥,现在我们需要把各个节点上的公钥都集中发送到一个节点上,来制作授权文件(authorized_keys).
注意:在两台机器必须安装ssh(sudo apt-get install ssh openssh-server)而且必须设置root密码(sudo passwd root),才能远程登录
$ scp ~/.ssh/id_rsa.pub node1-ubuntu:~/.ssh/1.pub
在将node2-ubuntu拷贝到node1-ubuntu后,在node1-ubuntu进行如下处理:
$ cp ~/.ssh/id_rsa.pub authorized_keys
$ cat ~/.ssh/1.pub >> authorized_keys
在node1-ubuntu上制作好的authorized_keys拷贝到node2-ubuntu上:(node1-ubuntu使用scp)
$ scp ~/.ssh/authorized_keys node2-ubuntu:~/.ssh/
要想让这两台机器无密码登录,所以我们需要更改一下必要的文件的权限(所有节点都要更改):其实只要保证authorized_keys的文件权限为600或者644
$ chmod 755 ~
$ chmod 755 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/id_rsa
$ chmod 644 ~/.ssh/id_rsa.pub
至此,SSH配置就完成了。下面检验一下:
在一个主机上面SSH另一个主机:
$ ssh node1-ubuntu
2.安装openMPI
2.1 首先将下载的文件解压,下载的文件在当前用户目录里面的“下载”目录里面,我直接解压到当前目录:
$ tar xvfz openmpi-1.6.5.tar.gz
2.2 安装官方文档配置的,可以查看解压后的README文档参考:由于是bash,因此选择以下命令,prefix指示安装路径,USERNAME就是当前用户的用户名,,
在此之前当然要建立安装openMPI的路径,也就是:
$ mkdir openmpi
运行shell程序configure对openmpi进行一些配置,关于configure选项,参见openmpi-1.6.5下的README文件。
$ ./configure --prefix=/home/<USERNAME>/openmpi 2>&1 | tee install1.log
而且在之前的安装过程中,我发现如果不禁止fortran,安装会出问题,会导致openMPI安装不完全而出错,是因为没有安装fortran编译器,如果使用C/C++的话,这里建议禁用fortran。
接下来,编译和安装:
$ make all 2>&1 | tee make.log
$ make install 2>&1 | tee install2.log
安装完成后,会有如下情况:
至此,OpenMPI安装完成。
2.3 设置进程的配置环境
这里设置环境变量主要是将openmpi的安装目录加到系统环境变量中,这里我在/etc/environment中加入对应的路径:
用vim编辑器打开/etc/environment:
$ sudo vim /etc/environment
输入密码之后,将下面语句添加到最后一行:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/awy/openmpi/bin"
LD_LIBRARY_PATH=/home/awy/openmpi/lib
3.验证是否成功:
1 3 $ which mpicc
4 /home/awy/openmpi/bin/mpicc
5 $ which mpiexec
6 /home/awy/openmpi/bin/mpiexec
7 $ which mpirun
8 /home/awy/openmpi/bin/mpirun
这样就说明openmpi已经安装成功了。
运行安装目录中examples下的例子,在此之前,先编译下make:
mpiexec -np 2 ./openmpi-1.6.5/examples/hell_f90
4 配置机器数量以及进程数
用vim编辑一个文件命名为hosts:如果你想在一个节点上运行多个进程,那么hostfile 可以使用 "slots" 属性。如果没有指定"slots",那么将假设其数目为1.
node1-ubuntu
node2-ubuntu
或者
node1-ubuntu slots=4
node2-ubuntu slots=2
让两个节点并行运行例子程序,如下所示:
$ mpiexec -hostfile hosts -np 8 ./openmpi-1.6.5/examples/hello_f90
5.安装过程中遇到的问题:
1.出现这种错误./openmpi-1.6.5/examples/hello_f90: error while loading shared libraries: libmpi_f77.so.1: cannot open shared object file: No such file or directory,或者
bash: orted: command not found
--------------------------------------------------------------------------
A daemon (pid 27974) died unexpectedly with status 127 while attempting
to launch so we are aborting. There may be more information reported by the environment (see above). This may be because the daemon was unable to find all the needed shared
libraries on the remote node. You may set your LD_LIBRARY_PATH to have the
location of the shared libraries on the remote nodes and this will
automatically be forwarded to the remote nodes.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun noticed that the job aborted, but has no info as to the process
that caused that situation.
--------------------------------------------------------------------------
mpiexec: clean termination accomplished
说明是LD_LIBRARY_PATH为空,可以进行这样查看:
mpiexec -n 1 printenv | grep PATH
查看LD_LIBRARY_PATH,如果没有,则可以进行如下操作:
$ source /etc/environment
$ export LD_LIBRARY_PATH
如此,便可以成功了。
2.如果要在IPv6的环境下运行openMPI,则安装的时候要开启:即在./configure --prefix=/home/<username>/openmpi --enable-ipv6,这样便可以了。
openMPI小集群安装的更多相关文章
- 一脸懵逼学习基于CentOs的Hadoop集群安装与配置
1:Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的 ...
- 一脸懵逼学习基于CentOs的Hadoop集群安装与配置(三台机器跑集群)
1:Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的 ...
- hadoop-2.6.0.tar.gz的集群搭建(3节点)(不含zookeeper集群安装)
前言 本人呕心沥血所写,经过好一段时间反复锤炼和整理修改.感谢所参考的博友们!同时,欢迎前来查阅赏脸的博友们收藏和转载,附上本人的链接http://www.cnblogs.com/zlslch/p/5 ...
- 【Oracle 集群】Oracle 11G RAC教程之集群安装(七)
Oracle 11G RAC集群安装(七) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总. ...
- kafka集群安装部署
kafka集群安装 使用的版本 系统:centos6.5 centos6.7 jdk:1.7.0_79 zookeeper:3.4.9 kafka:2.10-0.10.1.0 一.环境准备[只列,不具 ...
- CentOS下Hadoop-2.2.0集群安装配置
对于一个刚开始学习Spark的人来说,当然首先需要把环境搭建好,再跑几个例子,目前比较流行的部署是Spark On Yarn,作为新手,我觉得有必要走一遍Hadoop的集群安装配置,而不仅仅停留在本地 ...
- Hadoop多节点集群安装配置
目录: 1.集群部署介绍 1.1 Hadoop简介 1.2 环境说明 1.3 环境配置 1.4 所需软件 2.SSH无密码验证配置 2.1 SSH基本原理和用法 2.2 配置Master无密码登录所有 ...
- codis集群安装
在网上找了很多codis的集群安装方法,看起来都是大同小异,本人结合了大多种方法完成了一套自己使用的codis的集群安装,可以供大家学习使用,如果有什么问题或者不懂的地方欢迎指正 1.集群规划: 三台 ...
- [bigdata] spark集群安装及测试
在spark安装之前,应该已经安装了hadoop原生版或者cdh,因为spark基本要基于hdfs来进行计算. 1. 下载 spark: http://mirrors.cnnic.cn/apache ...
随机推荐
- ZOJ-1508Intervals(差分约束)
题意: 有一个序列,题目用n个整数组合 [ai,bi,ci]来描述它,[ai,bi,ci]表示在该序列中处于[ai,bi]这个区间的整数至少有ci个.如果存在这样的序列,请求出满足题目要求的最短的序列 ...
- 【转】Android与JNI(二) -- 不错
原文网址:http://www.cnblogs.com/eddy-he/archive/2012/08/09/2629974.html 软件版本: ubuntu10.04 java version & ...
- 【转】EditText大小(长宽)的多种设置方式----不错
原文网址:http://orgcent.com/android-edittext-ems-layout-minwidth-maxheight/ EditText大小的设置有多种方式,要想对每种方式运用 ...
- 数学(快速数论变换):SDOI2015 序列统计
[题目描述] 小C有一个集合S,里面的元素都是小于M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数列中的每个数都属于集合S. 小C用这个生成器生成了许多这样的数列.但是小C有 ...
- HDOJ 2188 悼念512汶川大地震遇难同胞——选拔志愿者
Problem Description 对于四川同胞遭受的灾难,全国人民纷纷伸出援助之手,几乎每个省市都派出了大量的救援人员,这其中包括抢险救灾的武警部队,治疗和防疫的医护人员,以及进行心理疏导的心理 ...
- Piggy-Bank(完全背包)
/* http://acm.hdu.edu.cn/showproblem.php?pid=1114 完全背包问题 再判断背包能否装满 题意: 给出存空钱罐的重量以及装满时的重量 给出每种硬币的面值以及 ...
- jsp中的contentType与pageEncoding的区别和作用
jsp中的contentType与pageEncoding的区别和作用 <%@ page contentType="text/html; charset=utf-8" p ...
- 10382 - Watering Grass
Problem E Watering Grass Input: standard input Output: standard output Time Limit: 3 seconds n sprin ...
- 获取contenteditable的内容 对html进行处理 兼容 chrome、IE、Firefox
var html = $(this).html();if(html){ var lineSign = html.indexOf('<div>'); if(html.indexOf('< ...
- dubbo简述
转http://blog.csdn.net/hzzhoushaoyu/article/details/4327309 一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一 ...