0%

ecFlow安装小记

在数值天气预报系统中有大量的计算机任务,这些任务之间又存在错综复杂的关系,如何管理和维护大量的复杂的任务成为一个难题,ecFlow正是为解决这一问题而诞生的。ecFlow是为欧洲中期天气预报中心(ECMWF)制作的产品,作为气象应用软件项目的一部分,用于工作流的管理和监控。
它具有如下功能:

  • 提供基于文本的任务定义语言以及python接口对计算机任务进行定义
  • 可以设定任务间的依赖关系,并在依赖关系满足时触发任务
  • 提供任务出错时的容错机制
  • 提供图形化的界面实时查看任务运行状况以及报错信息,用不同颜色来表示任务的运行状态,还可以根据需要自定义显示任务运行的进度。

ecFlow是基于客户端/服务端的模式工作的,即先启动一个ecFlow的服务端,计算机任务作为客户端,客户端任务在运行过程中将自己的状态发送到服务端,服务端根据收到的信息更新作业状态。

本来是就Centos 6.9来安装ecflow的,由于ecflow要求Python版本必须大于2.7,而默认的是2.6.6,自行升级了python,编译后是各种报错,qt也装不上,实在是折腾累了,于是更换为centos7.2操作系统,默认python版本2.7.5,编译一切正常;

依赖关系

下载地址

ecFlow:https://software.ecmwf.int/wiki/display/SUP/Releases
boost: http://www.boost.org/users/download/
Motif: http://www.ist.co.uk/motif/download/index.html
Qt: http://mirrors.ustc.edu.cn/qtproject/archive/qt/

安装cmake、g++

1
[root@vm01 ~]# yum -y install cmake g++ glibc  gcc gcc-c++ python-devel openssl-devel zlib-devel ncurses-devel

安装python3

Centos 7默认的python版本是2.7.5,满足要求;不需要安装python3

1
2
3
4
5
6
7
8
[root@vm01 ~]# wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tar.xz
[root@vm01 ~]# tar xvf Python-3.5.0.tar.xz
[root@vm01 ~]# cd Python-3.5.0
[root@vm01 ~]# ./configure --prefix=/usr/local/python3
[root@vm01 ~]# make && make install
[root@vm01 ~]# mv /usr/bin/python /usr/bin/python_old
[root@vm01 ~]# ln -s /usr/local/python3/bin/python3 /usr/bin/python
[root@vm01 ~]# cp -R /usr/local/python3/lib/* /usr/lib64/

修改yum中的python版本

1
2
3
4
[root@vm01 ~]# vim /usr/bin/yum
#!/usr/bin/python
更改为
#!/usr/bin/python_old

安装Xlib, X11, XMotif

1
[root@vm01 ecFlow]# yum localinstall openmotif-2.1.32-2_IST.x86_64.rpm

ecFlowUI 需要图形界面QT支持

1
2
3
4
[root@vm01 ecFlow]# yum -y install mesa-libGL-devel mesa-libGLU-devel freeglut-devel git gflags gflags-devel
[root@vm01 ecFlow]# yum groupinstall "GNOME Desktop"
[root@vm01 ecFlow]# chmod +x qt-opensource-linux-x64-5.8.0.run
[root@vm01 ecFlow]# ./qt-opensource-linux-x64-5.8.0.run

安装ecFlow环境

1
2
3
4
5
[root@vm01 ~]# cd /usr/local/src/ecFlow/
[root@vm01 ecFlow]# tar xf boost_1_64_0.tar.gz
[root@vm01 ecFlow]# tar xf ecFlow-4.5.0-Source.tar.gz
[root@vm01 ecFlow]# export WK=/usr/local/src/ecFlow/ecFlow-4.5.0-Source
[root@vm01 ecFlow]# export BOOST_ROOT=/usr/local/src/ecFlow/boost_1_64_0

安装boost

基于bjam安装boost

1
2
3
4
[root@vm01 boost_1_64_0]# cd $BOOST_ROOT
[root@vm01 boost_1_64_0]# ./bootstrap.sh
[root@vm01 boost_1_64_0]# ./b2
[root@vm01 boost_1_64_0]# ./b2 install --prefix=/usr/local

基于python安装boost

1
2
3
[root@vm01 boost_1_64_0]# ./bootstrap.sh --with-python=/usr/bin/python3
[root@vm01 boost_1_64_0]# ./b2
[root@vm01 boost_1_64_0]# ./b2 install --prefix=/usr/local

如果不需要ecflow的python接口,可以通过下面的设置避免编译boost的python库,在调用$WK/build_scripts/boost_build.sh前设置
export ECF_NO_PYTHON=1

1
2
3
[root@vm01 boost_1_64_0]# cd $BOOST_ROOT
[root@vm01 boost_1_64_0]# $WK/build_scripts/boost_1_53_fix.sh
[root@vm01 boost_1_64_0]# $WK/build_scripts/boost_build.sh

编译安装ecflow

推荐使用cmake 编译ecflow

1
2
[root@vm01 boost_1_64_0]# cd $WK
[root@vm01 build]# mkdir build; cd build;

ecFlow

1
[root@vm01 build]# export CMAKE_PREFIX_PATH=/opt/Qt5.8.0/5.8/gcc_64/lib/cmake/Qt5Network

ecFlow

1
2
3
4
5
6
7
[root@vm01 build]# vim ../CMakeLists.txt   #在最底下添加这行代码
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
[root@vm01 build]# cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/ecflow -DCMAKE_BUILD_TYPE=Release -DENABLE_GUI=OFF
[root@vm01 build]# CPUS=$(lscpu -p | grep -v '#' | wc -l)
[root@vm01 build]# make -j${CPUS}
[root@vm01 build]# make check
[root@vm01 build]# make install

参考链接:
https://software.ecmwf.int/wiki/display/ECFLOW/Installation
http://windrocblog.sinaapp.com/?p=1602
https://wenku.baidu.com/view/fda9af29bfd5b9f3f90f76c66137ee06eff94e8d.html?re=view
http://blog.csdn.net/u013121305/article/details/49853713