非 root 用户在 AIX 7.1 上安装和部署 MPICH2 Cluster 环境

在测试过程中,需要在多平台进行环境搭建,而这些环境中最复杂的当属 AIX7.1 的环境。在 AIX7.1 系统平台上使用 MPICH2 搭建 Cluster 环境,从而实现在 Modeler 客户端完成对大数据的分析,比如与我们生活息息相关的电信客户数据。

众所周知,在我们的日常工作中,同一台 AIX 机器往往会有很多不同身份的用户,在这些用户中,大部分都是没有 root 权限的。鉴于 MPICH2 本身是支持非 root 用户部署 Cluster 环境的,所以我们在这里介绍一下如何使用非 root 用户来配置 MPICH2 Cluster 环境。

我们将从下面的这几个部分进行介绍:

  • 为什么要在 AIX7.1 上安装 MPICH2 Cluster 环境
  • 如何在 AIX7.1 上安装 MPICH2 Cluster 环境
  • 在 Modeler 中搭建 SNA Cluster 环境的特殊配置
  • 搭建中常见的问题

AIX7.1 简介

AIX 7 是基于开放标准的 UNIX 操作系统,其设计符合 The Open Group 的单一 UNIX 规范版本 。

AIX 7 还包含有新的虚拟化功能,可以简化较旧的 AIX V5.2 环境的整合。此新功能需要采购“AIX 5.2 Workload Partitions for AIX 7”产品,旨在允许管理员简便地备份运行 AIX 5.2 的现有 LPAR,并将其还原至 AIX 7 工作负载分区。

MPICH2 简介

MPICH 是 MPI (Message-Passing Interface) 标准的一种最重要的实现,而 MPI 是为统一不同的 MPI 厂家的消息传递 API 而制定的工业标准。

MPICH2 是一种高性能,并且被广泛应用的便携式实现消息传递接口的标准,支持最新的 MPI-2 接口标准,是用于并行运算的工具,在程序设计语言上支持 C/C++ 和 Fortran。

MPICH2 提供进程管理与通信的分离。默认的运行环境由一系列的守护进程组成,在应用程序启动前建立所用机器之间的通讯,因而在通信不能建立出错时提供了清晰的画面,在并行任务启动时提供一种快速可度量的启动机制。


为什么要在 AIX7.1 上安装 MPICH2 Cluster 环境

AIX7.1 系统在处理大数据方面具有一定的性能优势。AIX 7 扩展了 AIX 操作系统的功能,将 AIX 的垂直可扩展性增强为带 256 个处理器内核和 1024 个线程的分区以便处理最大型的工作负载。为了能够为大型工作负载提供更高的性能,AIX 7 还包含有新的 TB 级段支持,可以充分利用旨在提高内存性能的 POWER7 处理器的内存管理功能。此 TB 级段功能也包含在了技术级别 6 的 AIX 6 中,但不会在 AIX 6 上自动启用。

在电信行业有一个概念叫流失,流失就表示客户终止与该公司的关系,而挽留客户的成本比取代他们的成本要低得多,因此我们就需要考虑为流失建 模,来识别存在流失风险的客户。分析师通常使用一系列的关键绩效指标来描述客户,包括人口统计信息和每位个人客户的最近通话模式。基于这些字段的预测模型 分析出来的结果,符合过去已流失的客户通话模式的变化,用以识别可能增加流失风险的人员。对于已经被识别为存在风险的客户,电信公司需要对他们采取一些挽 留措施,比如,提供额外的客户服务或服务选项等。

我们就需要使用 MPICH2 来搭建 Cluster 环境,从而实现在 Modeler 客户端对电信行业的大数据进行分析,对存在流失风险的客户进行预测分析。

图 1 是我们通过 MPICH2 搭建的 Cluster 环境的工作示意图,简单的表示了 Cluster 环境的工作原理。


图 1. Cluster 环境工作示意图
图 1. Cluster 环境工作示意图

回页首

如何在 AIX7.1 上安装 MPICH2 Cluster 环境

MPICH2 Cluster 环境搭建需要同时在 Server 端和各个 Worker 端分别进行配置。下面我们将分别介绍 Server 和 Worker 的配置。

配置 Server 环境

步骤 1 安装 Java 环境

安装 MPICH2 需要 Java 环境,所以我们需要先在 AIX7.1 上安装 Java 环境,推荐安装 Java 1.6.0 以上版本。

对于 Modeler Server,我们可以直接使用 Modeler 自带的 Java,就无需进行这一步骤了。

步骤 2 设置 Java 路径环境变量

把 Java 安装路径添加到此 AIX7.1 系统的 PATH 环境变量中,命令如下:

 export Java_HOME=JavaInstallPath/jre   export PATH=$Java_HOME/bin:$PATH  

也可把上面两条命令写入 /etc/profile 文件,然后执行下面的命令:

 source /etc/profile  

步骤 3 安装 MPICH2

我们需要取到 MPICH2 的安装包,由于 MPI(Message Passing Interface)是一个开源的软件,可以在相关的网站下载,下载地址请参考文章最后的参考资料。我们将 MPICH2 的安装包它下载到 AIX 平台上,解压安装即可。

步骤 4 在用户根目录下创建“mpd.hosts”文件

在用户的根目录下创建 mpd.hosts 文件,用来设置 Cluster 环境中的 Server 和 Worker。命令参考如下:

 sudo vi mpd.hosts //under /home/lye  

在 mpd.hosts 文件里面依次写入 Server 和 Worker 的名字或者 IP。

步骤 5 在 /etc 目录下面创建“mpd.conf”和在用户目录下创建“.mpd.conf”文件

为了实现各个服务器之间的通信,需要在各台机器上设置相同的密钥。密钥可以设置为任何内容,只要保证各个服务器之间一样即可。

 sudo vi /etc/mpd.conf  

将如下内容添加进 mpd.conf 文件:

 secretword=Password  

完成之后,改变 mpd.conf 文件的权限:

 chmod 644 /etc/mpd.conf  

根据 MPICH2 的说明,对于非 root 用户,即使使用 sudo 命令,仍然是在模拟 root 的一种模式,所以如果想要让 MPICH2 在外部表现出和 root 用户一样的状态运行,我们需要同时创建一个不可见文件 .mpd.conf,然后对 MPD_USE_ROOT_MPD 进行设置。

创建方法如下:

 cd $HOME   touch .mpd.conf   chmod 600 .mpd.conf   MPD_USE_ROOT_MPD=1  

如果是单机环境,以上步骤完成之后,使用下面的命令可以启动 MPD 程序:

 sudo mpdboot -n 1 -f /userhome/bwei/mpd.hosts  

我们可以通过下面这个命令来查看 MPD 程序是否启动成功。启动 MPD 成功之后,使用下面的命令应该输出这台机器的机器名称。

 mpdtrace –l  

需要注意的是:在我们配置了 Server 后就启动 MPD 程序查看是有必要的。这样如果单个 Server 可以启动了,才能有机会在搭好 Cluster 后实现全网启动成功,所谓的步步为营。如果单个 Server 都启动不成功,那我们也能在第一时间发现问题。

对于 Cluster 环境,需要在添加并配置完所有 Worker 环境只后重启 MPD 程序:

 sudo mpdboot -n x -f /userhome/bwei/mpd.hosts  

(其中,x 代表所要启动的机器数目,包含 Server 和 Worker。例如一个 Cluster 环境有一个 Server,4 个 Worker,那么 x 就是 5。关于这个的具体描述,可参考步骤 10。)

步骤 6 把 Worker 的机器名和 IP 加入 /etc/hosts 文件

为了使 Worker 正常工作,我们还需要把所有 Worker 的机器名和 IP 加入 /etc/hosts 文件。方法如下:

 sudo vi /etc/hosts  

需要添加的内容如下 :

 # Do not remove the following line, or various programs   # that require network functionality will fail.     9.119.82.145   XIS3TM02.spss.com       XIS3TM02      127.0.0.1       XIS3TM02.spss.com       XIS3TM02   //  localhost   9.119.82.148    XIS3TM05.spss.com       XIS3TM05  // (Worker 的 IP 和机器名)  9.119.82.147    XIS3TM04.spss.com       XIS3TM04  //(另一台 Worker 的 IP 和机器名) 

其中,9.119.82.148 和 9.119.82.147 表示 Worker 的 IP 和机器名。如果要添加更多的 Worker,只需依次将要添加的 Worker 和机器名写入这个文件。

另外,127.0.0.1 对应于本机,这是默认 Server 的 IP 和机器名。打开 /etc/hosts 文件时,第一行 IP 默认的是 127.0.0.1。如果我们只需要一个 Worker 工作,那么仅仅使用 Server 来工作就可以了,不需要添加添加额外的 Worker,也不需要改变这些机器名的顺序。但是如果我们要使用很多的 Worker 一起工作,也就是使用 Cluster 环境,那么就必须把 Server 的信息放到第一行。)

需要注意的是:对于有 Worker 的设置,一定要把 Server 的 IP 和机器名挪到第一行,也就是放到 127.0.0.1 这个默认 localhost 信息的前面,否则系统就会找不到 Server 的机器名,而导致配置失败。

步骤 7 添加硬盘

由于 MPICH2 没有自己的文件系统,所以在 Cluster 之间的文件传输读取,需要用到额外的文件系统。

我们这里以 NFS 文件系统为例,在 Server 上建立一个将要共享的文件夹,例如建立名为 /sna 的文件夹,然后把设备 sdb1 挂载到这个文件夹上。方法如下:

 mount -t ext3 /dev/sdb1 /sna   sudo mkdir /sna   [root@SNA_Server ~]#cat /etc/exports  

然后把 NFS 的信息写入 /etc/exports 文件:

 /sna/   *(sync,rw,no_root_squash)   [root@SNA_Server ~]#service nfs start  

最后在 pmlexec 和 tabi-loader 之间建立软连接,方法如下:

 ln -s /sna/tabibin/pmlexec /usr/bin/pmlexec   ln -s /sna/tabibin/tabi-loader /usr/bin/tabi-loader  

步骤 8 取消在 Server 上输入 Worker 的密码

在构建 Cluster 环境时,每次在 Server 端启动 MPD 程序,都需要输入 Worker 端的 SSH 登录密码,而且由于 MPICH2 自身的规定,在输入密码后没有任何信息提示输入成功。如果 Worker 的数目太多,就很容易造成漏输入,进而导致 MPD 启动失败。所以我们需要一种方法来避免这样的情况发生,以提高我们的配置成功率。

在这里,我们仍然以 NFS 文件系统为例,介绍一种比较简单的免除在 Server 端输入 Worker 密码的方法。

我们需要在 Server 端,运行下面这两个命令:

 ssh-keygen -t rsa   ssh-copy-id -i ~/.ssh/id_rsa.pub root@snaw5  

(其中,snaw5 表示某个 Worker 的名字。这个命令需要在 Server 端对每一个 Worker 依次执行一遍。)

步骤 9 重启 MPD 程序

如果已经把 MPD 命令所在地路径加入环境变量 $PATH 中,则可以直接用下面的命令重启 MPD。否则需要在 mpdboot 前面加上 MPD 命令所在的全路径。同样的道理,如果没有加入环境变量中,使用 mpd.hosts 时,前面也需要加上它的全路径。

 mpdboot -n 3 --maxbranch=200 -f /home/sxu/mpd.hosts  (上面的 maxbranch 是指控制 Worker 的最大数目,如果不加这一项来设置 Worker 的数目,默认 maxbranch 的值是 1。)  mpdboot -n 3 -f /home/sxu/mpd.hosts  

完成上面所有步骤之后,我们可以使用命令 “mpdtrace -l” 来查看是否完成了 Cluster 的环境配置。如果能看到每个 Worker 的机器名和 IP 信息,那么就表明该 Cluster 环境已经配置成功:

 mpdtrace -l   XIS3TM02_43666 (9.119.82.145)   XIS3TM05_39633 (9.119.82.148)  

这样,Server 的安装配置就全部完成了,下面我们来介绍 Worker 的安装配置。

配置 Worker 环境

步骤 1 Worker 机器上安装 MPICH2

与 Server 上的操作相同,下载并安装 MPICH2。

步骤 2 设置 NFS 文件系统

为了能够通过 Server 控制所有的 Worker,并且分配任务给每一个 Worker,我们需要将 Server 与 Worker 上的文件共享。

在 Worker 上使用如下命令实现:

 sudo mkdir /sna   chmod 777 /sna   sudo mount 9.119.82.145:/sna /sna   //(其中 9.119.82.145 是 Server 的 IP。) 

步骤 3 把 Server IP 加进每一个 Worker 的 /etc/hosts 文件里

为了让所有的 Worker 都能找到 Server,我们需要将 Server 的 IP 写入每一个 Worker 的 hosts 文件中,命令如下:

 sudo vi 9.119.82.145 /etc/hosts   //(其中 9.119.82.145 是 Server 的 IP。) 

如果想添加更多的 Worker 到 Cluster 环境当中,只需重复上面的添加 Worker 步骤即可。

至此,Server 和 Worker 的安装配置就以全部完成,也就构成了真正的 MPICH2 Cluster 系统。

回页首

在 Modeler 中搭建 SNA Cluster 环境的特殊配置

Server 端的配置

步骤 1 下载并安装 SNA Server

对于 SNA 测试环境 MPICH2 的搭建,因为 SNA Server 的安装包已经集成了 MPICH2 的安装包,所以我们只需要下载 SNA Server 的安装包即可,安装 SNA Server 的同时也就实现了 MPICH2 的安装。

AIX 平台的 SNA 安装包是:sna_server_installer_AIX64.bin

用二进制方式下载这个安装包,然后用如下命令进行安装:

sudo ./sna_server_installer_AIX64.bin

安装过程比较简单,类似于 Modeler Server 的安装,在这里我们不做过多介绍。

步骤 2 给批处理文件设置环境变量

SNA 运行时会生成一些临时文件,同时,也会生成一些工作文件供下一步的计算使用。所以我们要提前分别建立好一个临时文件夹和一个工作文件夹,并且这两个文件夹要有可读可写的权限。假设临时文件夹的名字是 tmpdir,工作文件夹的名字是 workdir。

 mkdir /tmp/tmpdir   mkdir /tmp/workdir  

为了能够在 SNA 运行过程中向这两个文件夹读写数据,需要把它们的路径写入 Modeler 的启动文件 modelersrv.sh 中。这样一来,只要 Modeler 启动,就可以找到这两个文件夹的位置。

SNA 还提供指令 SNA_TRACE_LEVEL 来控制 SNA 的运行日志,如果把这一项也加入到 Modeler 启动文件中,SNA 运行时就会自动在 Modeler 的 data 文件夹中生成日志,便于查阅详细的运行信息,当运行出错时也能通过日志轻易的查询具体出错的模块。

另外 SNA 还提供了 SNA_NUMBER_OF_PROCESSES 指令来指定 SNA Cluster 的工作进程数,也就是 Cluster 环境中 Server 和 Worker 的总数。例如,一个 Cluster 系统,有一个 Server 和 3 个 Worker,那么 SNA_NUMBER_OF_PROCESSES 就应该设置为 4。

我们可以通过 vi 命令来添加相关的内容:

sudo vi modelersrv.sh

(modelersrv.sh 位于 Modeler 安装路径的名为“config”的文件夹中)

下面是 modelersrv.sh 文件中添加的相关内容:

 SNA_NUMBER_OF_PROCESSES=4   SNA_TEMP_DIR=/tmp/tmpdir   SNA_WORKING_DIR=/tmp/workdir   SNA_TRACE_LEVEL=600   export SNA_NUMBER_OF_PROCESSES   export SNA_TEMP_DIR   export SNA_WORKING_DIR   export SNA_TRACE_LEVE  

步骤 3 重启 Modeler Server 和 MPD 程序

完成了 Server 端的所有配置之后,我们需要重启 Modeler Server 和 MPD 程序来使这些配置生效。

在 Modeler Server 的安装目录下重启 Modeler Server,命令如下:

 ./modelersrv.sh stop   ./modelersrv.sh start  (因为 Modeler Server 在安装后会自动启动的,所以我们需要先停止 Modeler Server,再重新启动。) 

查看是否启动成功,使用 list 命令:

 ./modelersrv.sh list  

如果输出如下面两行,就表示启动成功:

 PID        PPID     USER      VSZ      PCPU COMMAND   31687      1        lye      244816    0.0   modelersrv_14_2  

Modeler Server 重启成功之后,还需要重启 MPD,重启 MPD 的具体步骤请参考 MPICH2 Cluster 环境配置的步骤 9。

其他步骤也请参考 MPICH2 Cluster 的 Server 环境配置。

Worker 端的配置

步骤 1 下载并安装 SNA Worker

类似于下载 SNA Server, 我们只需要下载 AIX 平台的 SNA Worker 安装包即可,安装包是:

sna_worker_installer_AIX64.bin

用二进制方式下载这个安装包,然后用如下命令进行安装:

sudo ./ sna_worker_installer_AIX64.bin

步骤 2 重启 SNA Server

如果中途添加了 Worker,需要在加完 Worker 并且配置完之后,重启 SNA Server。

其他步骤请参考 MPICH2 Cluster 的 Worker 环境配置。

搭建中常见的问题

这里,我们再简单介绍一下使用 MPICH2 搭建 Cluster 环境的过程中常见的一些问题。

Python 问题导致 MPD 程序启动失败

对于多数 AIX7.1 机器,如果没有配置 Python 库信息,直接启动 MPD 程序会失败。

所以一旦出现 MPD 程序启动失败的情况,我们首先需要检查该机器上是否安装 Python,如果没有安装,需要先下载并安装 Python。对于应用于 SNA 的 Python 的安装版本要在 2.7.1 以上。

采用下面的命令来检查是否安装 Python:

 which python   unmame –a  

如果显示已经安装了 Python,则需要进行如下的配置:

rmp -i *.rmp  /userhome/Python/2.7.1/aix7/bin  find -name python  

例如,Python2.7.1 安装到这个目录下 /userhome/Python/2.7.1/aix7,我们需要建立如下的软连接来配置 Python 库信息:

 sudo ln -s /userhome/Python/2.7.1/aix7/lib/libpython2.7.so /lib/libpython2.7.so  

这样 Python 库信息就已经配置成功了。

空间不足导致程序崩溃

程序崩溃有可能是因为 AIX7.1 机器上遗留的空间不够。

在 AIX7.1 平台,安装配置完 Cluster 环境后,运行极小的数据,比如数据文件只有几百 kb 的情况下,可以运行成功,而运行较大数据则有可能会出现程序崩溃。跟踪日志后发现系统默认的栈大小是有限制的,我们可以使用 ulimit 命令打开所有对栈的空间限制。

 $ulimit – a   time(seconds)        unlimited   file(blocks)         unlimited   data(kbytes)         unlimited   stack(kbytes)        4194304   memory(kbytes)       unlimited   coredump(blocks)     unlimited   nofiles(descriptors) unlimited   threads(per process) unlimited   processes(per user)  unlimited  

如果遇到这样的情况,请使用下面的命令来释放空间:

 ulimit -s 4194304  

库文件未加载失败导致程序崩溃

如果程序执行时报 libstdc++.so.6 错误,可能是不能加载 libstdc++.a(libstdc++.so.6) 库,此时我们需要把 libstdc++.so.6 所在的文件夹路径加到环境变量 LIBPATH 里面。

命令如下:

 export LIBPATH=$LIBPATH:/qatest/ModelerServer/15.0.0.37/bin  (其中,qatest/ModelerServer/15.0.0.37 是 Modeler Server 的安装路径。) 

性能问题导致的程序崩溃

在 Modeler 里面,如果同时建立了多个 Stream,并且让这些 Stream 顺次跑下去,那么有可能会出现如下的错误:

 mpiexec 392): no msg recvd from mpd when expecting ack of request  

这个错误是 MPICH2 报出的,因为当前的环境设置不能满足其性能的需求,需要对环境变量的设置进行改变,我们需要改动 MPIEXEC_RECV_TIMEOUT 的设置,它的默认值是 20,我们可以适当的改大,有如下的两种方法:

  1. 使用 vi 命令把 MPIEXEC_RECV_TIMEOUT=200 加入 mpd.conf 文件中,然后重启 MPICH2。
  2. 在环境里面添加 MPIEXEC_RECV_TIMEOUT:
export MPIEXEC_RECV_TIMEOUT=200

然后重启 Modeler Server 和 MPICH2。需要注意的是,这个方法只对当前打开的窗口有效。

总结

Modeler 产品中的 SNA 在 Cluster 环境中对处理电信行业的大数据有着非常强大的优势。有了这个 Modeler 结点,电信公司可以发现对于哪些用户是潜在的可能用户,哪些用户是高风险流失用户,从而制定出相应对策,以最小的损失保留最大利益。

这篇文章主要就是介绍了我们如何使用非 root 用户在 AIX7.1 系统里搭建 MPICH2 Cluster 环境,以及搭建 SNA Cluster 环境所需要做的一些特殊配置。同时对环境搭建中我们已经遇到并解决的问题做了总结,希望能够帮助到需要使用 MPICH2 Cluster 环境和需要使用 SNA 进行建模做大数据分析的读者。

你可能感兴趣的:(cluster)