diff --git a/doc/DEPLOY.md b/doc/DEPLOY.md old mode 100644 new mode 100755 index 322d46730e6e142a8c5d8d84fc460d2196e81f61..55492ae0d5be6486b34cdd1eb306c0d55e53df9b --- a/doc/DEPLOY.md +++ b/doc/DEPLOY.md @@ -336,7 +336,7 @@ gflags.conf transfer.conf 将bin/cube,bin/cube-agent和conf/gflags.conf拷贝到多个物理机上。假设拷贝好的文件结构如下: -``` +```bash $ tree . |-- bin @@ -385,7 +385,7 @@ Flags from /home/work/dangyifei/open-builder/src/main.cpp: 只利用builder工具建立索引无特殊位置要求,如果接入配送环节使用必须和cube-transfer同机部署。 假设单独使用builder工具,文件结构如下: -``` +```bash $ tree `-- cube-builder |-- source @@ -395,13 +395,19 @@ $ tree #### 3.3 启动cube-builder ##### 3.3.1接入配送流程 -拷贝bin/cube-builder和cube-transfer程序同机器。 -相关参数已经封装好,只需要在cube-transfer的conf/transfer.conf里配置好cube-builder的地址、源数据和建库数据output的地址即可。 -##### 3.3.2单机builder,假设分片数为2,词典名为test -######base模式 -``` -启动cube-builder命令 -./open_builder -input_path=./source -output_path=./output -shard_num=2 -dict_name=test +拷贝bin/cube-builder和cube-transfer程序到同一机器。 +相关参数已经封装好,只需要在cube-transfer的conf/transfer.conf里配置好cube-builder的地址、源数据和建库数据output的地址即可, 执行cube-transfer时会通过配置文件中的路径调用cube-builder,所以通常不需要手动执行cube-builder。 + +##### 3.3.2单机builder + +**假设分片数为2,词典名为test** + +###### base模式 + +启动cube-builder命令,参数中的路径需要为绝对路径 + +```bash +./cube-builder -input_path=${source} -output_path=${output} -shard_num=2 -dict_name=test ``` 运行后会根据当前时间戳自动生成建库索引文件夹1565323045_1565323045和meta信息文件夹meta_info结构如下: ``` @@ -430,11 +436,13 @@ $ tree `-- 1565323045_1565323045_1_0.json ``` test_part0.tar和test_part0.tar.md5是shard0分片的数据和md5校验,1565323045_1565323045_0_0.json是0号分片的索引长度和数量,在对应版本的delta建库中需要。 -######delta模式 +###### delta模式 需要依赖于上次的base或者delta的id和key,1565323045_1565323045_0_0.json前一个时间戳是id,后一个是key(和分片数据的目录key_id相反),对应cube-builder输入参数-last_version和-depend_version,保持output和dict_name不变(builder会寻找上一轮的index meta信息)。 -``` -启动cube-builder命令 --input_path=./source -output_path=./output -shard_num=2 -depend_version=1565323045 -last_version=1565323045 -job_mode=delta -dict_name=test + +启动cube-builder命令,参数中的路径需要为绝对路径 + +```bash +./cube-builder -input_path=${source} -output_path=${output} -shard_num=2 -depend_version=1565323045 -last_version=1565323045 -job_mode=delta -dict_name=test ``` 运行后会根据当前时间戳自动生成delta建库索引文件夹1565323045_1565326078和meta信息文件夹meta_info结构如下: ``` @@ -480,7 +488,7 @@ $ tree `-- 1565326078_1565323045_1_0.json ``` #### 3.4 seqfile工具 -builder输入数据的源格式必须为seqfile,key为uint64(输入必须为二进制8个字节),value为序列化的二进制。 +builder输入数据的源格式必须为seqfile,key为uint64(输入必须为二进制8个字节),value为序列化的二进制。 提供明文转seqfile工具和读seqfile工具,位置在output/tool里kvtool.py和kv_to_seqfile.py。 kvtool.py 是读seqfile工具,会输出读到的kv信息,参数是文件地址假设在/home/work/test下的seqfile,运行方式如下: ``` @@ -506,7 +514,7 @@ SOURCE_FILE = './source/file.txt' #明文源数据路径 #### 4.1 cube-transfer配置修改 -cube-transfer配置文件是conf/transfer.conf,配置比较复杂;各个配置项含义如下: +cube-transfer配置文件是conf/transfer.conf,配置比较复杂,配置文件中的路径需要为绝对路径,各个配置项含义如下: ``` [default] dict_name: test_dict //词典名 @@ -523,15 +531,16 @@ transfer_address: 10.10.10.5 //cube-transfer本机 [cube_agent] agent0_0: 10.10.220.15:8001 //0号分片0号副本的agent ip:port -cube0_0: 10.10.220.15:8000:/ssd2/cube_open //0号分片0号副本的cube ip:port:deploy_path +cube0_0: 10.10.220.15:8000:/ssd2/cube_open //0号分片0号副本的cube,该路径下会存放配送的数据 ip:port:deploy_path agent0_1: 10.10.180.40:8001 //0号分片1号副本的agent ip:port -cube0_1: 10.10.180.40:8000:/home/disk1/cube_open //0号分片1号副本的cube ip:port:deploy_path +cube0_1: 10.10.180.40:8000:/home/disk1/cube_open //0号分片1号副本的cube ,该路径下会存放配送的数据 ip:port:deploy_path ``` #### 4.2 拷贝cube-transfer到物理机 将bin/cube-transfer和conf/transfer.conf拷贝到多个物理机上,构建output和tmp文件夹用来存放配送的中间文件。 假设拷贝好的文件结构如下: + ``` $ tree . @@ -542,24 +551,25 @@ $ tree |-- transfer.conf ``` #### 4.3 启动cube-transfer -假设启动服务端口8099,-l参数是log等级 --config是配置文件位置 -``` +假设启动服务端口8099,-l参数是log等级 --config是配置文件位置,./log文件夹下可以查看cube-transfer的日志 +```bash ./cube-transfer -p 8099 -l 4 --config conf/transfer.conf ``` #### 4.4 cube-transfer支持查询接口 > 获取当前词典状态 ->http://10.10.10.5:8099/dict/info +> http://10.10.10.5:8099/dict/info > 获取实例当前状态 ->http://10.10.10.5:8099/instance/status +> http://10.10.10.5:8099/instance/status > 获取配送历史从最近的base到当前正在配送的delta ->http://10.10.10.5:8099/dict/deploy/history +> http://10.10.10.5:8099/dict/deploy/history #### 4.5 donefile格式协议 一旦cube-transfer部署完成,它就不断监听我们配置好的donefile数据位置,发现有数据更新后,即启动数据下载,然后通知cube-builder执行建库和配送流程,将新数据配送给各个分片的cube-server。 id最好使用版本产出时间戳,base和patch每产出一条直接在donefile文件最后加一行即可,文件名固定base.txt、patch.txt + >base.txt每行一条,id和key相同,目录下可有多个文件,不能有文件夹 >``` >{"id":"1562000400","key":"1562000400","input":"/home/work/test_data/input/seqfile"} @@ -747,7 +757,7 @@ CTR预估任务样例使用的数据来自于[原始模型](https://github.com/P #### 2.2 Client编译与部署 -按照[1.2Serving编译](#1.2 Serving编译)部分完成编译后,client端文件在output/demo/client/ctr_prediction路径下。 +按照1.2Serving编译部分完成编译后,client端文件在output/demo/client/ctr_prediction路径下。 ##### 2.2.1 配置修改 @@ -774,4 +784,4 @@ cluster: "list://127.0.0.1:8010" ##### 2.2.2 运行服务 -执行`./bin/ctr_predictoin`启动client端,在./log路径下可以看到client端执行的日志。 +执行`./bin/ctr_predictoin`启动client端,在./log路径下可以看到client端执行的日志。 \ No newline at end of file