手动搭建HPC(高性能计算)

撰写日期:2017年6月13日

作者:翟江恒

一般情况下不会采用手动的方式安装HPC,而是采用集成自动化方案来部署hpc,但是这些集成方案都是集成了指定的操作系统发行版本,比如常见的HPC集成自动化方案rockets,到目前为止集成centos 6.6,如果需要把HPC安装其他linux发行版本环境里面,就不能使用集成自动化方案,必须使用手动安装方法,这篇博客就是叙述如何手动搭建HPC的。敬请往下看。

1.     HPC简介

2.     HPC架构

3.     ssh无密码访问

4.     安装配置NFS

5.     安装配置NIS

6.     安装tentakel

7.     安装openmpi

8.     安装torque

9.     安装ganglia


1.      HPC简介

高性能计算(Highperformance computing,缩写HPC) 指通常使用很多处理器(作为单个机器的一部分)或者某一集群中组织的几台计算机(作为单个计算资源操作)的计算系统和环境。有许多类型的HPC 系统,其范围从标准计算机的大型集群,到高度专用的硬件。大多数基于集群的HPC系统使用高性能网络互连,比如那些来自 InfiniBand 或 Myrinet 的网络互连。基本的网络拓扑和组织可以使用一个简单的总线拓扑,在性能很高的环境中,网状网络系统在主机之间提供较短的潜伏期,所以可改善总体网络性能和传输速率

1.     hpc架构

HPC网络架构如图所示

上图显示了一网状 HPC 系统。在网状网络拓扑中,该结构支持通过缩短网络节点之间的物理和逻辑距离来加快跨主机的通信。

尽管网络拓扑、硬件和处理硬件在 HPC 系统中很重要,但是使系统如此有效的核心功能是由操作系统应用软件提供的。

HPC 系统使用的是专门的操作系统,这些操作系统被设计为看起来像是单个计算资源。正如从图1和图2中可以看到的,其中有一个控制节点,该节点形成了 HPC 系统和客户机之间的接口。该控制节点还管理着计算节点的工作分配。

对于典型 HPC 环境中的任务执行,有两个模型:单指令/多数据(SIMD) 和多指令/多数据 (MIMD)。SIMD在跨多个处理器的同时执行相同的计算指令和操作,但对于不同数据范围,它允许系统同时使用许多变量计算相同的表达式。MIMD允许HPC 系统在同一时间使用不同的变量执行不同的计算,使整个系统看起来并不只是一个没有任何特点的计算资源(尽管它功能强大),可以同时执行许多计算。

不管是使用 SIMD 还是 MIMD,典型HPC 的基本原理仍然是相同的:整个HPC 单元的操作和行为像是单个计算资源,它将实际请求的加载展开到各个节点。HPC 解决方案也是专用的单元,被专门设计和部署为能够充当(并且只充当)大型计算资源。

  1. 1.     SSH无密码访问

下载ftp服务器上传install目录里的所有文件。

以下实现各服务器之间root用户之间ssh无密码访问。

修改hostfile文件内容,把所有主机名称添加进去。

先使用root用户顺序执行目录sshScript\rootuser里面的脚本:

sh  step1.exp

sh  step2.exp  root 密码

sh  step3.exp  root 密码

以下实现各服务器之间普通用户之间ssh无密码访问。

先在所有主机上建立相同的用户,执行命令:

Useradd 用户名

Paswd 用户名

修改hostfile文件内容,同上。

执行顺序目录sshScript\normalUser下面的脚本

sh  step2.exp 普通用户密码

sh  step3.exp 普通用户名  密码

以上脚本执行完成后使用root和普通用户ssh命令测试各服务器之间是否可以无密码访问。

  1. 1.     NFS配置

在管理节点上设置共享目录:

touch /etc/exports

echo ‘/home*(rw,insecure,no_root_squash,sync)’>>/etc/exports

echo ‘/hpc*(rw,insecure,no_root_squash,sync)’>> /etc/exports

启动nfs服务器

systemctl startnfs.service

查看nfs服务状态

systemctl statusnfs.service

设置nfs开机自启动

systemctl enablenfs.service

在计算节点上执行mount命令把/home和/opt挂载到本地:

mount -t nfs -o vers=3 hpc:/opt /opt

mount -t nfs -o vers=3 hpc:/home /home

5.安装配置NIS服务

NIS的作用是让整个系统里的机器的账户能统一管理。

yum install –y ypbind yp-tools ypser rpcbind protmap

NIS的配置如下:

1)server端的配置

1、开启两个服务:

[[email protected] ~]# /sbin/chkconfig yppasswdd on

[[email protected] ~]# /sbin/chkconfig ypserv on

[[email protected] ~]# /sbin/service yppasswdd restart

[[email protected] ~]# /sbin/service ypserv restart

2、配置NIS域名

[[email protected] ~]# nisdomainname TS10K

(必需将nisdomainname TS10K加入到nis服务器的/etc/rc.d/rc.local文件里面或者把NISDOMAIN=TS10K加入到/etc/sysconfig/netwok文件里)

echo “/bin/nisdomainnamehpc”>>/etc/rc.d/rc.local

echo“NISDOMAIN=hpc”>>/etc/sysconfig/network

可以使用rpcinfo–u 本机名 ypserv 察看ypserv是否启动,若成功启动会看到:

program 100004 version 1 ready and waiting

program 100004 version 2 ready and waiting

若没看到,则把ypserv重新启动一下即可。

3、数据初始化

[[email protected] ~]# cd /usr/lib/yp

[[email protected] yp]#./ypinit –m  或者/usr/lib64/yp/ypinit -m

ctl+d(切记)来结束这个命令,再打入回车

回车后会显示类似内容:admin has been set up as a NISserver ,now you can run ypinit –s admin on all slave server.

在server端重新建立新用户后,需要到/var/yp 目录下make一下(当nis map有任何修改必须重新make一下),这样client端才能使用新用户登录。

2)client端的配置

1、设定NIS client

setup→authentication configuration→[*]use NIS

填写:Domain:TS10K  (NIS的域名)

Server:  admin  (server端的名称或者ip)

2、开启服务

[[email protected] ~]# /sbin/chkconfig ypbind on

[[email protected] ~]# /sbin/service ypbind restart

也可以直接修改/etc/yp.conf文件来设定nis  client端

修改完毕后,serviceypbind restart重启服务即可

新增用户时,需要更新nis账户和资料库:

cd /var/yp     make

6.安装tentakel

解压软件包pip-1.1.tar

进入目录:pip-1.1

cd pip-1.1

执行:python setup.py install

解压软件包:sfermigier-tentakel-1564958.zip

unzipsfermigier-tentakel-1564958.zip

cdsfermigier-tentakel-1564958

执行如下命令进行安装:

pip install .   (.是表示当前目录)

拷贝配置文件到/etc

cp  tentakel.conf /etc

测试tentakel是否生效

执行命令:tentakel –g all “uptime”

7.安装openmpi

安装所需依赖包:

yum install –ygcc-gfortran gcc gcc-c++ *aclocal

解压openmpi-1.6.4.tar

tar  –zxvf openmpi-1.6.4.tar

cd openmpi-1.6.4

下面开始编译安装:

生成安装配置信息

./configure --prefix=/hpc/openmpi CC=gcc CXX=g++F77=gfortran FC=gfortran

编译安装

make && make install(必须要make命令编译成功才执行makeinstall开始安装)

编辑文件/etc/ ld.so.conf, 文件末尾加入openmpi的lib目录路径。

vim /etc/ ld.so.conf

执行ldconfig命令

编辑/etc/profile文件和用户目录下面的.bashrc文件,.bashrc是隐藏文件需要使用ls–al命令才可以看到。

加入如下内容:

export OPENMPI_HOME=/hpc/openmpi

export OPENMPI_PATH=$OPENMPI_HOME/bin

export TORQUE_HOME=/var/spool/torque

exportLD_LIBRARY_PATH=$OPENMPI_PATH:$OPENMPI_HOME/lib:$TORQUE_HOME:$LD_LIBRARY_PATH

export PATH=$PATH:$LD_LIBRARY_PATH

再执行:

source/etc/profile

Source /home/用户/.bashrc

测试openmpi

8.安装torque

Torque在整个集群里面充当任务调度的角色。

以下步骤在管理节点操作

安装torque之前需要先安装依赖包。

yum update

yum install -ylibxml2-devel openssl-devel

上传安装包

解压安装包

tar -zxvf torque-4.2.10.tar.gz

cd torque-4.2.10/

生成安装信息,如果加了—perfix指定了安装目录,就会安装到指定目录,如果不加会安装到默认目录/usr/local,我这里不指定目录,安装默认目录下。

执行 ./configure

生成安装配置信息后执行如下命令进行编译安装:

make && make install

拷贝服务启动程序到/etc/init.d/

cp torque/contrib/init.d/trqauthd/etc/init.d/

cp torque/contrib/init.d/pbs_server/etc/init.d/

cp torque/contrib/init.d/pbs_sched}/etc/init.d/

添加trqauth到服务列表

设置以上服务开机自启:

chkconfig pbs_server on

chkconfig pbs_sched on

chkconfig trqauthd on

执行如下命令:

echo /usr/local/lib > /etc/ld.so.conf.d/torque.conf

ldconfig

echo <pbs_server‘s_hostname> >/var/spool/torque/server_name

添加TORQUE_HOMEH环境变量

vim /etc/profile

执行命令: source /etc/profile

在安装包目录下面执行:

执行:pbs_server –u

touch /var/spool/torque/server_priv/nodes

vim /var/spool/torque/server_priv/nodes 加入所有计算机节点。

安装计算节点:

在管理节点的torque安装包目录下执行:makepackages

生成了几个shell脚本:

在管理节点上执行:

cp torque-package-mom-linux*.sh /shared_storage/   ----/shared_storage 指的是共享存储目录

cp torque-package-clients-linux*.sh /shared_storage/

在所有计算节点上执行:

cd 到共享目录

执行torque-package-clients-linux-x86_64.sh和torque-package-mom-linux-x86_64.sh

把管理节点上的安装包目录里的contrib/init.d/pbs_mom拷贝到所有计算节点的/etc/init.d/目录。

把pbs_mom加入服务列表

chkconfig--add pbs_mom

设置pbs_mom服务开机自启动

chkconfigpbs_mom on

在管理节点编写脚本:

startpbs_server.sh和shutpbs_server.sh

startpbs_server.sh用来启动所有pbs服务,内容如下:

#!/bin/bash

for iin pbs_server pbs_mom pbs_sched trqauthd;

do

/etc/init.d/$istart

done

shutpbs_server.sh用来停止所有pbs服务,内容如下:

#!/bin/bash

for iin pbs_server pbs_mom pbs_sched trqauthd;

do

/etc/init.d/$istop

done

添加执行权限:

chmod+x startpbs_server.sh

chmod+x shutpbs_server.sh

执行:shstartpbs_server.sh启动所有服务。

在计算节点的编辑/etc/profile文件加入TORQUE_HOME环境变量

source/etc/profile

在计算节点执行:

#echo /usr/local/lib> /etc/ld.so.conf.d/torque.conf

#ldconfig

启动pbs_server

/etc/init.d/pbs_momstart

在管理节点执行命令:qnodes

状态为free就是正常的,为down就是计算节点的pbs_mom服务挂了。

编写测试脚本:

test.pbs内容如下:

#PBS-l nodes=1

##PBS-N test_1

#PBS-S /bin/bash

mpiexec–H localhost,node136,node137 -np 30 /home/hpc/a.out > /home/hpc/cu1111.log2>&1

su – 普通用户

提交作业:

qsub test.pbs

查看作业队列:

qstat

状态为C表示作业执行完成,为E表示作业执行完成正在退出。

9.安装ganglia监控

Ganglia由gmond、gmetad和gweb三部分组成

gmond(GangliaMonitoring Daemon)是一种轻量级服务,安装在每台需要收集指标数据的节点主机上。gmond在每台主机上完成实际意义上的指标数据收集工作,并通过侦听/通告协议和集群内其他节点共享数据。使用gmond,你可以很容易收集很多系统指标数据,如CPU、内存、磁盘、网络和活跃进程的数据等。

gmetad(GangliaMeta Daemon)是一种从其他gmetad或gmond源收集指标数据,并将其以RRD格式存储至磁盘的服务。gmetad为从主机组收集的特定指标信息提供了简单的查询机制,并支持分级授权,使得创建联合监测域成为可能。

gweb(GangliaWeb)gweb是一种利用浏览器显示gmetad所存储数据的PHP前端。在Web界面中以图表方式展现集群的运行状态下收集的多种不同指标数据。

管理节点需要安装的组件:

gmetad

http

php

gweb

计算节点需要安装的组件:

gmond

在所有节点执行下面的操作:

安装软件源:wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm –ivh epel-release-6-8.noarch.rpm

执行如下命令:

yum clean all

yum makecach

yum update –y

yum search ganglia-gmetad ganglia-gmond

如果yum search命令可以找到ganglia软件包在开始安装管理节点和计算节点。

安装管理节点:

 

安装gmetad

执行:

yum installganglia-gmetad -y

安装ganglia-web

在安装ganglia-web之前需要先安装httpd和php

执行:

yum install httpd php

建立ganglia的web目录:

mkdir /var/www/html/ganglia

把ganglia-web下面的所有文件拷贝到/var/www/html/ganglia

配置管理节点:

配置gmetad

修改gmetad服务的配置配文件:

vim /etc/ganglia/gmetad.conf

修改data_source参数

格式为:data_source “集群名称” host1:port,host2:port,.. hostN:port

如果不指定端口会使用默认端口:8649

配置ganglia-web

Ganglia的web监控界面是基于PHP的,因此需要安装PHP环境,PHP环境的安装不在介绍,可以在http://sourceforge.net/projects/ganglia/files/下载ganglia-web,然后放到web根目录即可。

配置ganglia的web界面比较简单,只需要修改几个php文件即可,首先第一个是conf_default.php,可以将conf_default.php重命名为conf.php,也可以保持不变,ganglia的web默认先找conf.php,找不到会继续找conf_default.php,需要修改的内容如下:

$conf[‘gmetad_root‘] ="/var/www/html/ganglia/"; # ganglia web根目录

$conf[‘rrds‘] ="${conf[‘gmetad_root‘]}/rrds"; #ganglia web读取rrds数据库的路径

$conf[‘dwoo_compiled_dir‘] ="${conf[‘gmetad_root‘]}/dwoo/compiled"; #需要777权限

$conf[‘dwoo_cache_dir‘] ="${conf[‘gmetad_root‘]}/dwoo/cache"; #需要777权限

$conf[‘rrdtool‘] ="/usr/bin/rrdtool"; #指定rrdtool的路径

$conf[‘graphdir‘]= $conf[‘gweb_root‘] .‘/graph.d‘; #生成图形模板目录

$conf[‘ganglia_ip‘] ="127.0.0.1"; #gmetad服务器的地址

$conf[‘ganglia_port‘] = 8652; #gmetad服务器的交互式提供监控数据端口发布

执行如下命令:

chmod 777 -R /var/www/html/ganglia/dwoo/cache/

配置计算节点gmond服务

在所有计算节点执行如下命令:

yum install ganglia-gmond –y

gmond服务配置

gmond服务配置文件是/etc/ganglia/gmond.conf

部分配置说明如下:

globals {

daemonize = yes       #以后台的方式运行

setuid = yes

user = nobody         #运行gmond的用户

debug_level = 0       #调试级别

max_udp_msg_len = 1472

mute = no           #哑巴,本节点将不会再广播任何自己收集到的数据到网络上

deaf = no            #聋子,本节点将不再接收任何其他节点广播的数据包

allow_extra_data = yes

host_dmax = 0 /*secs */

cleanup_threshold = 300 /*secs */

gexec = no            #是否使用gexec

send_metadata_interval = 0

}

cluster {

name = "Cluster1"    #本节点属于哪个cluster

owner = "junfeng"    #谁是该节点的所有者

latlong = "unspecified"  #在地球上的坐标,经度、纬度?

url = "unspecified"

}

host {

location = "unspecified"

}

udp_send_channel {       #udp包的发送通道

mcast_join = 239.2.11.71   #多播,工作在239.2.11.71通道下。如果使用单播模式,则要写host = host1,单播模式下也可以配置多个udp_send_channel

port = 8649           #监听端口

ttl = 1

}

udp_recv_channel {          #接收udp包配置

mcast_join = 239.2.11.71   #同样工作在239.2.11.71通道下

port = 8649               #监听端口

bind = 239.2.11.71        #绑定

}

tcp_accept_channel {

port = 8649              #通过tcp协议监听的端口,远端可以通过链接8649端口得到监控数据

}

在此文档中我们只需要修改cluser{…….}部分如下:

name字段需要和管理节点一致。

在管理节点执行:

systemctl enablegmetad.service

systemctl startgmetad.service

systemctl enablehttpd.service

systemctl enablehttpd.service

在计算节点执行:

systemctl enablegmond.service

systemctl start gmond.service

下面是见证奇迹的时刻。

在浏览器地址栏里面输入:

http://apache-hosot/ganglia

时间: 2024-08-02 06:54:58

手动搭建HPC(高性能计算)的相关文章

.NET完全手动搭建三层B/S架构

简介:三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(WebUI).业务逻辑层(BusinessLogicLayer).数据访问层(DataAccessLayer),公共层(ModelLayer).区分层次的目的即为了“高内聚,低耦合”的思想. 一.应用三层架构的优点 三层结构适合群体开发,每人可以有不同的分工,协同工作使效率倍增:各做各的模块,降低开发人员能力要求:方便系统功能的扩展以及后期的维护工作:最大优点是它的安全性.用户端只能通过

Linux手动搭建LAMP环境

当你看到标题里的“手动搭建”,你是不是会想,难不成还有“自动搭建”?当然......不是,这里的“手动搭建”是指按部就班的搭建Apache.MySQL.PHP环境,是相对于集成软件包而言的.所以你是不是能够猜到,我后续还会整理一篇通过集成软件包搭建LAMP环境的文章呢? 其实关于LAMP环境,我到现在都没有用过,好多东西也都不懂为什么要这么做,当初只是心血来潮,想自己搭建一个wiki,所以才着手研究的.我不是搞PHP的,也不是搞后端的,额......是不是暴露的太多了,仅仅是为了搭建环境而搭建环

手动搭建struct2中碰到的一点问题

手动搭建struct2的时候,总是会碰到找不到Filter的问题,到底是怎么回事呢? 其实,关键就在于导入的五个jar包,我们最好是将它放在web-inf目录的lib下,然后再组织导入,这样web.xml才能顺利找到. PS:web.xml就放在web-inf下面就好. 至于struct.xml,目前放在src目录下就好. 自己的技术水平一向让自己无语,碰到这样个问题都得搞半天--  手动搭建struct2中碰到的一点问题

新人学PHP,认为手动搭建环境而苦恼吗?这篇文章告诉你多简单!

本教程适用于初学PHP,想了解手动搭建PHP环境的童鞋. 一键环境和高手勿喷. 本教程以下列版本软件为例: 所需软件目录 我在这里的目录结构是(个人习惯) 安装与配置 apache 双击安装Apache 这里我们选择第一个,然后点击 Next. 这里随便填一个域名,随便填一个 email 就可以了. 然后选择 默认占用 80 端口就 OK 了点击 Next. 点击 Next. 这里选择安装路径 然后点击intall 正在安装中 安装完成 右下角这里是绿色的表示成功了! 这时我们在地址栏里输入 l

php 手动搭建环境

php手动搭建环境有好多种组合,版本号不一致,会导致搭建失败. 我搭建的组合是: php5.6+MySQL5.6+Apache2.4的组合. 一.PHP语言包下载 首先从官网上下载php5.6 http://windows.php.net/download#php-5.6 选择完整版下载: 二. Apache服务器下载 首先从官网上下载Apache2.4  http://httpd.apache.org/download.cgi 进入第二个界面,选择第二个选项: 根据电脑的不同,选择相应的位数:

React 系列文章(1): npm 手动搭建React 运行实例 (新手必看)

摘 要 刚接触React 开发, 在摸索中构建react 运行环境,总会遇到各种坑:本文,将用最短时间解决webpack+react 环境搭建问题. 1.如果你还没有React基础 看这里. 2.如果不知道webpack是啥?请 看这里. 3.如果你还没有装npm 看这里. 目 录 一.webpack+react 运行实例. 二.webpack 运行环境配置分析. 三.如何手动搭建一个webpack+react 运行环境. 一.webpack+react 运行实例 1.实例代码 源代码下载地址:

Arcgis Android 手动搭建开发环境

前言 本文为大家分享arcgis android 环境的手动搭建过程,默认你懂一定的java和android 基础知识,已经有android的开发环境.如缺乏以上环境和知识,请自行补充. 版本介绍 Arcgis android从2.0版本到现在(2015-08-31)最新的10.2.6版本,中间有多个小版本,简要说下.10系列是较新的系列,2.0系列是老古董了.其中,10.2.4开始支持shapefile和一些栅格数据了,详细请参考这里.如果没记错的话,在10.2.2系列开始,graphicla

手动搭建php环境

php手动搭建环境有好多种组合,版本号不一致,会导致搭建失败. 我搭建的组合是: php5.6+MySQL5.6+Apache2.4的组合. 一.PHP语言包下载 首先从官网上下载php5.6 http://windows.php.net/download#php-5.6 选择完整版下载: 二. Apache服务器下载 首先从官网上下载Apache2.4  http://httpd.apache.org/download.cgi 进入第二个界面,选择第二个选项: 根据电脑的不同,选择相应的位数:

使用keras,手动搭建卷积模型

####本文使用keras,手动搭建卷积模型 1 import numpy as np 2 import tensorflow as tensorflow 3 4 from keras.layers import Conv2D, MaxPooling2D, GlobalAveragePooling2D 5 from keras.layers import Dropout, Flatten, Dense 6 from keras.models import Sequential 7 8 #初始化一