在数值天气预报系统中有大量的计算机任务,这些任务之间又存在错综复杂的关系,如何管理和维护大量的复杂的任务成为一个难题,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;
|
1
| [root@vm01 build]# export CMAKE_PREFIX_PATH=/opt/Qt5.8.0/5.8/gcc_64/lib/cmake/Qt5Network
|
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