(四)FATE框架AllinOne集群部署

本文通过部署指南对转载原文进行了适当修改。会用**(作者的话)**标识。

一、准备

1、硬件

准备一台至少12核CPU、24G内存、1T硬盘(最好SSD)和一个不低于10MB能上互联网的网络。(最好能满足上面的条件,要不然即使安装的没有问题,也可能跑不起来)。
(由于在家,只能用笔记本电脑部署学习,倒也是可以通过测试,没办法,暂时只能如此。我的电脑是8核,16G内存,512G硬盘)

2、软件

Xshell 、VMware Workstation 16 Pro,这两款软件的下载地址: https://pan.baidu.com/s/1j6j4n4TMlxxvtSFb-r_G5A 提取码:52bv

Centos,下载地址:
http://vault.centos.org/7.5.1804/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso

二、安装 VMWare虚拟机安装

从我给的网盘地址将VMWare软件下载下来安装即可,自行激活,如果有问题问度娘。

安装完成后,点击“编辑→虚拟网络编辑器”,如下图:
(四)FATE框架AllinOne集群部署_第1张图片
查找网关
(四)FATE框架AllinOne集群部署_第2张图片
选择VMnet8,然后点击NAT设置。
(四)FATE框架AllinOne集群部署_第3张图片
在这里找到网关:192.168.65.2 记住这个网关,后面配置网络的时候要用到。

三、CentOS安装

打开vwmare软件,点击创建新的虚拟机
(四)FATE框架AllinOne集群部署_第4张图片
选择“典型(推荐)“,然后选择”下一步“。
(四)FATE框架AllinOne集群部署_第5张图片
选择“下一步“
(四)FATE框架AllinOne集群部署_第6张图片
如下图,选择“Linux“、”Centos7 64位“、然后选择”下一步“
(四)FATE框架AllinOne集群部署_第7张图片
给虚拟机命名,第一台命名为“fate01”,第二台虚拟机命名为“fate02”。
然后选择安装路径,安装在空间较大的盘符。然后选择“下一步”
(四)FATE框架AllinOne集群部署_第8张图片
最大磁盘大小设置为“500G”,选择“将磁盘拆分成多个文件”,然后选择“下一步”.
(四)FATE框架AllinOne集群部署_第9张图片
选择“自定义硬件”,如下图:
(四)FATE框架AllinOne集群部署_第10张图片
然后设置内存为8G,处理器数量设置为1,每个处理器的内核数量设置为4,在“新CD/DCD(IDE)”选项中设置“CentOS-7-x86_64-DVD-1804.iso”文件的路径,完成上面的设置后选择关闭。

(部署指南配置是:8 core /16GB memory / 500GB硬盘/10M带宽,有条件的记得按这个配置。我设置了4G内存倒也能通过测试。)

(四)FATE框架AllinOne集群部署_第11张图片
(四)FATE框架AllinOne集群部署_第12张图片(四)FATE框架AllinOne集群部署_第13张图片
然后我们就能看到虚拟机的配置,如果没有问题,则选择”完成”,等待虚拟机安装结束。
(四)FATE框架AllinOne集群部署_第14张图片

出现下图则说明安装完成,选择“开启此虚拟机”,你就可以看到Centos7的安装页面。

(四)FATE框架AllinOne集群部署_第15张图片

选择“Install CentOS 7”,然后按“Enter”键。
(四)FATE框架AllinOne集群部署_第16张图片

出下面如下画面,选择“中文”,在右侧选择“简体中文(中国)”,然后选择“继续”。
(四)FATE框架AllinOne集群部署_第17张图片

选择“键盘”,点击“+”,选择“英语(英国)”,然后点击“添加”,再选择“完成”。
(四)FATE框架AllinOne集群部署_第18张图片
(四)FATE框架AllinOne集群部署_第19张图片
(四)FATE框架AllinOne集群部署_第20张图片
接下来,点击“软件选择”。在左侧选择“最小安装”,在右侧选择“调试工具”和”系统管理工具”。然后选择“完成”。
(我装了GNOME桌面)
(四)FATE框架AllinOne集群部署_第21张图片
(四)FATE框架AllinOne集群部署_第22张图片

设置“安装位置”,然后选择“我要配置分区”,选择“完成”。
(四)FATE框架AllinOne集群部署_第23张图片
(四)FATE框架AllinOne集群部署_第24张图片

然后出现如下画面,选择“点这里自动创建他们”
(四)FATE框架AllinOne集群部署_第25张图片

选择“home”,设置期望容量为100GiB,然后点击“+”
(四)FATE框架AllinOne集群部署_第26张图片

添加新的挂载点“/data”,容量为“341.12GiB”,然后点击“添加挂载点”。
(四)FATE框架AllinOne集群部署_第27张图片

然后点击“完成”,选择“接受更改”
(四)FATE框架AllinOne集群部署_第28张图片
(四)FATE框架AllinOne集群部署_第29张图片

点击“网路和主机名”
(四)FATE框架AllinOne集群部署_第30张图片

以太网,选择“打开”,设置主机名为“fate01”,点击“应用”,然后选择“配置”。
(四)FATE框架AllinOne集群部署_第31张图片

点击“IPv4设置”,方法设置为“手动”,点击“Add”,增加IP地址,如下图,ip地址为“192.168.0.1”,另一台的ip地址设置为192.168.0.2,子网掩码和网关相同都,分别设置为“24”和“192.168.65.2”(这个网关我们在前面提到过)。DNS服务器设置为“192.168.65.2”,勾选“需要IPv4地址完成这个连接”。
(四)FATE框架AllinOne集群部署_第32张图片

点击”IPv6设置”,方法选择“忽略”。然后选择“保存”。
(四)FATE框架AllinOne集群部署_第33张图片

然后观察IP设置是否正确,如果没有问题则选择“完成”。
(四)FATE框架AllinOne集群部署_第34张图片

完成上面的设置后,选择“开始安装”。然后设置root密码。
(四)FATE框架AllinOne集群部署_第35张图片

将密码设置为“123456”,然后点击“完成”,等待安装完成。
(然而123456会被提示太简单)
(四)FATE框架AllinOne集群部署_第36张图片

安装完成后,点击“重启”。
(四)FATE框架AllinOne集群部署_第37张图片

重启之后,出现如下画面,输入“root”,密码“123456”登录root账户。
(四)FATE框架AllinOne集群部署_第38张图片

另一台虚拟机的安装步骤和第一台一样只是名字是“fate02”,IP地址为“192.168.0.2”。

安装完成后,安装Xshell,用Xshell登录。个人认为用xshell执行命令方便一些。

(个人喜欢用可视化桌面)

四、Fate AllinOne部署集群

1.服务器配置

服务器
数量 1 or 2
配置 8 core /16GB memory / 500GB硬盘/10M带宽
操作系统 CentOS linux 7.2及以上/Ubuntu 18.04
依赖包 (部署时自动安装)
用户 用户:app,属主:apps(app用户需可以sudo su root而无需密码)
文件系统 1. 500G硬盘挂载在/ data目录下; 2.创建/ data / projects目录,目录属主为:app:apps

2.集群规划

party 主机名 IP地址 操作系统 安装软件 服务
PartyA VM_0_1_centos 192.168.0.1 CentOS 7.2/Ubuntu 18.04 fate,eggroll,mysql fate_flow,fateboard,clustermanager,nodemanager,rollsite,mysql
PartyB VM_0_2_centos 192.168.0.2 CentOS 7.2/Ubuntu 18.04 fate,eggroll,mysql fate_flow,fateboard,clustermanager,nodemanager,rollsite,mysql

架构图:

(四)FATE框架AllinOne集群部署_第39张图片

3.组件说明

软件产品 组件 端口 说明
fate fate_flow 9360;9380 联合学习任务流水线管理模块
fate fateboard 8080 联合学习过程可视化模块
eggroll clustermanager 4670 cluster manager管理集群
eggroll nodemanager 4671 node manager管理每台机器资源
eggroll rollsite 9370 跨站点或者说跨party通讯组件,相当于以前版本的proxy+federation
mysql mysql 3306 数据存储,clustermanager和fateflow依赖

4.基础环境配置

4.1 hostname配置

1)修改主机名

在192.168.0.1 root用户下执行:

hostnamectl set-hostname VM_0_1_centos

在192.168.0.2 root用户下执行:

hostnamectl set-hostname VM_0_2_centos

2)加入主机映射

在目标服务器(192.168.0.1 192.168.0.2)root用户下执行:

vi /etc/hosts

添加内容

192.168.0.1 VM_0_1_centos
192.168.0.2 VM_0_2_centos

(四)FATE框架AllinOne集群部署_第40张图片

添加完成后,重新登录。

su root

4.2 关闭selinux

在目标服务器(192.168.0.1 192.168.0.2)root用户下执行:

确认是否已安装selinux

centos系统执行:

rpm -qa | grep selinux

ubuntu系统执行:apt list --installed | grep selinux

如果已安装了selinux就执行:

setenforce 0

(四)FATE框架AllinOne集群部署_第41张图片

4.3 配置yum仓库

在目标服务器(192.168.0.1 192.168.0.2)root用户下执行:

1)备份CentOS-Base.repo文件

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

img

2)修改yum仓库配置

vi /etc/yum.repos.d/CentOS-Base.repo

添加:

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
 
[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

3)使新仓库配置生效

yum clean all
yum makecache

(四)FATE框架AllinOne集群部署_第42张图片

4.4 修改Linux系统参数

在目标服务器(192.168.0.1 192.168.0.2)root用户下执行:

1)清理20-nproc.conf文件

cd /etc/security/limits.d
ls -lrt 20-nproc.conf

存在则:

mv 20-nproc.conf 20-nproc.conf_bak

(四)FATE框架AllinOne集群部署_第43张图片

2)修改limits.conf文件

vim /etc/security/limits.conf

添加:

* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

(四)FATE框架AllinOne集群部署_第44张图片

重新登陆,查看是否生效

su root
ulimit -a

4.5 修改系统mysql配置

mv /etc/my.cnf /etc/my.cnf_bak

img

4.6 关闭防火墙(可选)

在目标服务器(192.168.0.1 192.168.0.2)root用户下执行

如果是Centos系统:

systemctl disable firewalld.service
systemctl stop firewalld.service
systemctl status firewalld.service

(四)FATE框架AllinOne集群部署_第45张图片

如果是Ubuntu系统:

ufw disable

ufw status

4.7 软件环境初始化

1)创建用户

在目标服务器(192.168.0.1 192.168.0.2)root用户下执行

groupadd -g 6000 apps
useradd -s /bin/bash -g apps -d /home/app app
passwd app

输入密码:

(四)FATE框架AllinOne集群部署_第46张图片

2)配置sudo

在目标服务器(192.168.0.1 192.168.0.2)root用户下执行

vim /etc/sudoers.d/app

添加:

app ALL=(ALL) ALL
app ALL=(ALL) NOPASSWD: ALL
Defaults !env_reset

(四)FATE框架AllinOne集群部署_第47张图片

给文件sudoers文件增加写入权限

chmod u+w /etc/sudoers

编辑 sudoers文件

vi /etc/sudoers

在root ALL=(ALL) ALL下面追加:

root    ALL=(ALL)       NOPASSWD: ALL
app     ALL=(ALL)       ALL
app     ALL=(ALL)       NOPASSWD: ALL

给文件sudoers文件删除写入权限

chmod u-w /etc/sudoers

(四)FATE框架AllinOne集群部署_第48张图片

3)配置ssh无密登录

① 配置自身免密

在目标服务器(192.168.0.1 192.168.0.2)app用户下执行

在虚拟机VM_0_1_centos 上以app用户身份在home目录下执行

su app
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >>/home/app/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

(四)FATE框架AllinOne集群部署_第49张图片

使用ssh 192.168.0.1命令测试,第一次需要确认yes ,之后应可以不需密码登录为成功。

(四)FATE框架AllinOne集群部署_第50张图片

在VM_0_2_centos 上执行相同步骤配置VM_0_2_centos 的自身免密登录。

② 配置VM_0_1_centos 免密登录VM_0_2_centos

在VM_0_1_centos app用户下执行

scp ~/.ssh/authorized_keys [email protected]:/home/app/.ssh

输入VM_0_2_centos的app密码

在VM_0_2_centos app用户下执行

cat ~/.ssh/id_rsa.pub >> /home/app/.ssh/authorized_keys
scp ~/.ssh/authorized_keys [email protected]:/home/app/.ssh

输入VM_0_1_centos 的app密码完成文件传输。

在VM_0_1_centos app用户下执行

ssh 192.168.0.2

应不需要密码即可登录fate02机。

到这里我们已经完成环境的配置了。

4.6 增加虚拟内存

目标服务器(192.168.0.1 192.168.0.2 192.168.0.3)

生产环境使用时,因内存计算需要增加128G虚拟内存,执行前需检查存储空间是否足够。

手工创建,root用户执行:

cd /data
dd if=/dev/zero of=/data/swapfile128G bs=1024 count=134217728
mkswap /data/swapfile128G
swapon /data/swapfile128G
cat /proc/swaps
echo '/data/swapfile128G swap swap defaults 0 0' >> /etc/fstab

(四)FATE框架AllinOne集群部署_第51张图片

校验

cat /proc/swaps

Filename                                Type            Size    Used    Priority
/data/swapfile32G_1                     file            33554428        0       -1
/data/swapfile32G_2                     file            33554428        0       -2
/data/swapfile32G_3                     file            33554428        0       -3
/data/swapfile32G_4                     file            33554428        0       -4

free -m
              total        used        free      shared  buff/cache   available
Mem:          15715        6885          91         254        8739        8461
Swap:        131071           0      131071

5.项目部署

注:此指导安装目录默认为/data/projects/,执行用户为app,安装时根据具体实际情况修改。

设置projects目录

在目标服务器(192.168.0.1 192.168.0.2)root用户下执行

cd /data
mkdir projects
chown app:apps projects
ls -l
chown -R app /data

(四)FATE框架AllinOne集群部署_第52张图片

5.1 获取项目

在目标服务器(192.168.0.1 具备外网环境)app用户下执行

进入执行节点的/data/projects/目录,执行:

cd /data/projects/
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/fate_cluster_install_1.6.0_release-c7-u18.tar.gz
tar xzf fate_cluster_install_1.6.0_release-c7-u18.tar.gz

5.2 部署前检查

在目标服务器(192.168.0.1 192.168.0.2 )app用户下执行

把检查脚本fate-cluster-install/tools-install/check.sh从192.168.0.1拷贝到192.168.0.2

#在192.168.0.1和192.168.0.2服务器上分别执行检查脚本
sh ./check.sh

#确认app用户已配置sudo
#虚拟内存,size不低于128G,如不满足需参考4.6章节重新设置
#文件句柄数,不低于65535,如不满足需参考4.3章节重新设置
#用户进程数,不低于64000,如不满足需参考4.3章节重新设置
#确认部署前没有fate进程和端口冲突
#确认/etc/my.cnf是否存在,存在需要mv;确认是否存在/data/projects/fate目录,存在需把fate目录mv备份。

5.3 配置文件修改和示例

在目标服务器(192.168.0.1)app用户下执行

修改配置文件fate-cluster-install/allInone/conf/setup.conf.

vi fate-cluster-install/allInone/conf/setup.conf

配置文件setup.conf说明:

配置项 配置项值 说明
roles 默认:“host” “guest” 部署的角色,有HOST端、GUEST端
version 默认:1.5.1 Fate 版本号
pbase 默认: /data/projects 项目根目录
lbase 默认:/data/logs 保持默认不要修改
ssh_user 默认:app ssh连接目标机器的用户,也是部署后文件的属主
ssh_group 默认:apps ssh连接目标的用户的属组,也是部署后文件的属组
ssh_port 默认:22,根据实际情况修改 ssh连接端口,部署前确认好端口,不然会报连接错误
eggroll_dbname 默认:eggroll_meta eggroll连接的DB名字
fate_flow_dbname 默认:fate_flow fate_flow、fateboard等连接的DB名字
mysql_admin_pass 默认 mysql的管理员(root)密码
redis_pass 默认 redis密码,暂未使用
mysql_user 默认:fate msyql的应用连接账号
mysql_port 默认:3306,根据实际情况修改 msql服务监听的端口
host_id 默认 : 10000,根据实施规划修改 HOST端的party id。
host_ip 192.168.0.1 HOST端的ip
host_mysql_ip 默认和host_ip保持一致 HOST端mysql的ip
host_mysql_pass 默认 HOST端msyql的应用连接账号
guest_id 默认 : 9999,根据实施规划修改 GUEST端的party id
guest_ip 192.168.0.2 GUEST端的ip
guest_mysql_ip 默认和guest_ip保持一致 GUEST端mysql的ip
guest_mysql_pass 默认 GUEST端msyql的应用连接账号
dbmodules 默认:“mysql” DB组件的部署模块列表,如mysql
basemodules 默认:“tools” “base” “java” “python” “eggroll” “fate” 非DB组件的部署模块列表,如 “tools” “base”、 “java”、 “python” 、“eggroll” 、“fate”
fateflow_grpc_port 默认:9360 fateflow grpc服务端口
fateflow_http_port 默认:9380 fateflow http服务端口
fateboard_port 默认:8080 fateboard服务端口
rollsite_port 默认:9370 rollsite服务端口
clustermanager_port 默认:4670 clustermanager服务端口
nodemanager_port 默认:4671 nodemanager服务端口

1)两台主机partyA+partyB同时部署**

#to install role
roles=( "host" "guest" )

version="1.6.0"
#project base
pbase="/data/projects"
#log directory
lbase="/data/logs"

#user who connects dest machine by ssh
ssh_user="app"
ssh_group="apps"
#ssh port
ssh_port=22

#eggroll_db name
eggroll_dbname="eggroll_meta"
#fate_flow_db name
fate_flow_dbname="fate_flow"

#mysql init root password
mysql_admin_pass="fate_dev"

#redis passwd
redis_pass=""

#mysql user
mysql_user="fate"
#mysql port
mysql_port="3306"

#host party id
host_id="10000"
#host ip
host_ip="192.168.0.1"
#host mysql ip
host_mysql_ip="${host_ip}"
host_mysql_pass="fate_deV2999"

#guest party id
guest_id="9999"
#guest ip
guest_ip="192.168.0.2"
#guest mysql ip
guest_mysql_ip="${guest_ip}"
guest_mysql_pass="fate_deV2999"

#db module lists
dbmodules=( "mysql" )

#base module lists
basemodules=( "tools" "base" "java" "python" "eggroll" "fate" )

fateflow_grpc_port=9360
fateflow_http_port=9380
fateboard_port=8080

rollsite_port=9370
clustermanager_port=4670
nodemanager_port=4671

2)只部署一个party

#to install role
roles=( "host" )

version="1.6.0"
#project base
pbase="/data/projects"
#log directory
lbase="/data/logs"

#user who connects dest machine by ssh
ssh_user="app"
ssh_group="apps"
#ssh port
ssh_port=22

#eggroll_db name
eggroll_dbname="eggroll_meta"
#fate_flow_db name
fate_flow_dbname="fate_flow"

#mysql init root password
mysql_admin_pass="fate_dev"

#redis passwd
redis_pass=""

#mysql user
mysql_user="fate"
#mysql port
mysql_port="3306"

#host party id
host_id="10000"
#host ip
host_ip="192.168.0.1"
#host mysql ip
host_mysql_ip="${host_ip}"
host_mysql_pass="fate_deV2999"

#guest party id
guest_id=""
#guest ip
guest_ip=""
#guest mysql ip
guest_mysql_ip="${guest_ip}"
guest_mysql_pass=""

#db module lists
dbmodules=( "mysql" )

#base module lists
basemodules=( "tools" "base" "java" "python" "eggroll" "fate" )

fateflow_grpc_port=9360
fateflow_http_port=9380
fateboard_port=8080

rollsite_port=9370
clustermanager_port=4670
nodemanager_port=4671

5.4 部署

按照上述配置含义修改setup.conf文件对应的配置项后,然后在fate-cluster-install/allInone目录下执行部署脚本:

cd fate-cluster-install/allInone
nohup sh ./deploy.sh > logs/boot.log 2>&1 &

部署日志输出在fate-cluster-install/allInone/logs目录下,实时查看是否有报错:

tail -f ./logs/deploy.log (部署结束,查看一下即可)
tail -f ./logs/deploy-guest.log (实时打印GUEST端的部署情况)
tail -f ./logs/deploy-mysql-guest.log  (实时打印GUEST端mysql的部署情况)
tail -f ./logs/deploy-host.log    (实时打印HOST端的部署情况)
tail -f ./logs/deploy-mysql-host.log    (实时打印HOST端mysql的部署情况)

deploy.log出现以下内容说明安装完成

init over
deploy guest mysql 172.16.132.190 over
deploy guest 172.16.132.190 over
deploy host mysql 172.16.132.189 over
deploy host 172.16.132.189 over

5.5 问题定位

1)eggroll日志

/data/projects/fate/eggroll/logs/eggroll/bootstrap.clustermanager.err

/data/projects/fate/eggroll/logs/eggroll/clustermanager.jvm.err.log

/data/projects/fate/eggroll/logs/eggroll/nodemanager.jvm.err.log

/data/projects/fate/eggroll/logs/eggroll/bootstrap.nodemanager.err

/data/projects/fate/eggroll/logs/eggroll/bootstrap.rollsite.err

/data/projects/fate/eggroll/logs/eggroll/rollsite.jvm.err.log

2)fateflow日志

/data/projects/fate/python/logs/fate_flow/

3)fateboard日志

/data/projects/fate/fateboard/logs

6.测试

6.1 Toy_example部署验证

此测试您需要设置3个参数:guest_partyid,host_partyid,work_mode。

6.1.1 单边测试

1)192.168.0.1上执行,guest_partyid和host_partyid都设为10000:

source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/examples/toy_example/
python run_toy_example.py 10000 10000 1

类似如下结果表示成功:

“2020-04-28 18:26:20,789 - secure_add_guest.py[line:126] - INFO: success to calculate secure_sum, it is 1999.9999999999998”

(四)FATE框架AllinOne集群部署_第53张图片

提示:如出现max cores per job is 1, please modify job parameters报错提示,需要修改当前目录下文件toy_example_conf.json中参数task_cores为1.

2)192.168.0.2上执行,guest_partyid和host_partyid都设为9999:

source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/examples/toy_example/
python run_toy_example.py 9999 9999 1

类似如下结果表示成功:

“2020-04-28 18:26:20,789 - secure_add_guest.py[line:126] - INFO: success to calculate secure_sum, it is 1999.9999999999998”

6.1.2 双边测试

选定9999为guest方,在192.168.0.2上执行:

source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/examples/toy_example/
python run_toy_example.py 9999 10000 1

类似如下结果表示成功:

“2020-04-28 18:26:20,789 - secure_add_guest.py[line:126] - INFO: success to calculate secure_sum, it is 1999.9999999999998”

(四)FATE框架AllinOne集群部署_第54张图片

6.2 最小化测试

6.2.1 上传预设数据:

分别在192.168.0.1和192.168.0.2上执行:

source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/examples/scripts/
python upload_default_data.py -m 1

6.2.2 快速模式:

请确保guest和host两方均已分别通过给定脚本上传了预设数据。

快速模式下,最小化测试脚本将使用一个相对较小的数据集,即包含了569条数据的breast数据集。

选定9999为guest方,在192.168.0.2上执行:

source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/examples/min_test_task/
#单边测试
python run_task.py -m 1 -gid 9999 -hid 9999 -aid 9999 -f fast
#双边测试
python run_task.py -m 1 -gid 9999 -hid 10000 -aid 10000 -f fast

其他一些可能有用的参数包括:

  1. -f: 使用的文件类型. “fast” 代表 breast数据集, “normal” 代表 default credit 数据集.
  2. –add_sbt: 如果被设置为1, 将在运行完lr以后,启动secureboost任务,设置为0则不启动secureboost任务,不设置此参数系统默认为1。

若数分钟后在结果中显示了“success”字样则表明该操作已经运行成功了。若出现“FAILED”或者程序卡住,则意味着测试失败。

6.2.3 正常模式

只需在命令中将“fast”替换为“normal”,其余部分与快速模式相同。

6.3 Fateboard testing

Fateboard是一项Web服务。如果成功启动了fateboard服务,则可以通过访问 http://192.168.0.1:8080 和 http://192.168.0.2:8080 来查看任务信息,如果有防火墙需开通。

(四)FATE框架AllinOne集群部署_第55张图片

7.系统运维

7.1 服务管理

在目标服务器(192.168.0.1 192.168.0.2)app用户下执行

7.1.1 Eggroll服务管理

source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/eggroll

启动/关闭/查看/重启所有:

sh ./bin/eggroll.sh all start/stop/status/restart

启动/关闭/查看/重启单个模块(可选:clustermanager,nodemanager,rollsite):

sh ./bin/eggroll.sh clustermanager start/stop/status/restart

7.1.2 Fate服务管理

  1. 启动/关闭/查看/重启fate_flow服务
source /data/projects/fate/bin/init_env.sh
cd /data/projects/fate/python/fate_flow
sh service.sh start|stop|status|restart

如果逐个模块启动,需要先启动eggroll再启动fateflow,fateflow依赖eggroll的启动。

  1. 启动/关闭/重启fateboard服务
cd /data/projects/fate/fateboard
sh service.sh start|stop|status|restart

7.1.3 Mysql服务管理

启动/关闭/查看/重启mysql服务

cd /data/projects/fate/common/mysql/mysql-8.0.13
sh ./service.sh start|stop|status|restart

7.2 查看进程和端口

在目标服务器(192.168.0.1 192.168.0.2 )app用户下执行

7.2.1 查看进程

#根据部署规划查看进程是否启动
ps -ef | grep -i clustermanager
ps -ef | grep -i nodemanager
ps -ef | grep -i rollsite
ps -ef | grep -i fate_flow_server.py
ps -ef | grep -i fateboard

7.2.2 查看进程端口

#根据部署规划查看进程端口是否存在
#clustermanager
netstat -tlnp | grep 4670
#nodemanager
netstat -tlnp | grep 4671
#rollsite
netstat -tlnp | grep 9370
#fate_flow_server
netstat -tlnp | grep 9360
#fateboard
netstat -tlnp | grep 8080

7.3 服务日志

服务 日志路径
eggroll /data/projects/fate/eggroll/logs
fate_flow&任务日志 /data/projects/fate/python/logs
fateboard /data/projects/fate/fateboard/logs
mysql /data/logs/mysql/

8. 附录

8.1 Eggroll参数调优

假定 CPU核数(cpu cores)为 c, Nodemanager的数量为 n,需要同时运行的任务数为 p,则:

egg_num=eggroll.session.processors.per.node = c * 0.8 / p

partitions (roll pair分区数)= egg_num * n

可通过job conf中的job parameters指定作业使用的参数:

  1. egg_num:配置task_cores或者配置eggroll_run中processors_per_node参数
  2. partitions:配置computing_partitions

更多关于作业提交配置请参考dsl_conf_v2_setting_guide_zh

————————————————
版权声明:本文为CSDN博主「AI浩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/118894462

你可能感兴趣的:(FATE)