本文介绍如何分布式部署ossimport,分布式部署目前只支持Linux系统,Windows系统暂不支持。
下载
分布式版本下载地址ossimport-2.3.5.tar.gz,下载到本地后,使用命令 tar -zxvf ossimport-2.3.5.tar.gz -C $HOME/ossimport
解压,解压后的文件结构如下:
ossimport ├── bin │ ├── console.jar # Console模块jar包 │ ├── master.jar # Master模块jar包 │ ├── tracker.jar # Tracker模块jar包 │ └── worker.jar # Worker模块jar包 ├── conf │ ├── job.cfg # Job配置文件模板 │ ├── sys.properties # 系统运行参数配置文件 │ └── workers # Worker列表 ├── console.sh # 命令行工具,目前支持只Linux ├── logs # 日志目录 └── README.md # 说明文档,使用前请仔细阅读
注意:
- OSS_IMPORT_HOME:OssImport的根目录,默认为解压命令中的目录
$HOME/ossimport
,也可以通过命令export OSS_IMPORT_HOME=<dir>
或修改系统配置文件$HOME/.bashrc
设置,推荐使用默认目录; - OSS_IMPORT_WORK_DIR:OssImport的工作目录,通过
conf/sys.properties
的配置项workingDir
指定,推荐为$HOME/ossimport/workdir
; - OSS_IMPORT_HOME或OSS_IMPORT_WORK_DIR请使用绝对路径配置,如
/home/<user>/ossimport
或/home/<user>/ossimport/workdir
。
配置
分布式部署有三个配置文件conf/sys.properties
、conf/job.cfg
、conf/workers
。
conf/job.cfg
:分布式模式下任务的配置文件模板,数据迁移前请按照实际参数修改;conf/sys.properties
:系统运行参数配置文件,如工作目录、Worker运行参数等请在该文件中配置;conf/workers
:worker列表。
注意
- 请在提交任务前确认
sys.properties
和job.cfg
中的参数,任务提交后参数无法再修改。 - Worker 列表
workers
请启动服务前确定,启动后无法再增加或删除。
运行
- 执行迁移任务
分布式部署时,执行任务的一般步骤是修改任务配置文件 、部署服务 、清除同名任务 、提交任务 、启动迁移服务 、查看任务状态 、重试失败子任务以及停止迁移任务 。详细说明如下:
- 部署服务。在Linux终端执行bash console.sh deploy。
说明 部署前请保证配置文件conf/job.cfg、conf/workers 已经修改完成。
- 清除同名任务。如果运行过同名任务,需要从新执行任务,请先清除同名任务。如果没有运行过,或需要重试失败子任务,不需要执行清除命令。Linux终端中执行
bash console.sh clean job_name
。 - 提交数据迁移任务。OssImport不能重复提交同名任务,如果有请使用
clean
命令清除。提交任务需要指定任务的配置文件,任务的配置文件模板在conf/job.cfg
,建议在模板的基础上修改。在Linux终端执行bash console.sh submit [job_cfg_file]
,提交配置文件为 job_cfg_file 的任务,job_cfg_file
为可选参数,不指定时默认为$OSS_IMPORT_HOME/conf/job.cfg
,$OSS_IMPORT_HOME
默认为console.sh
所在的目录。 - 启动服务。Linux终端执行
bash console.sh start
。 - 查看任务状态。Linux终端执行
bash console.sh stat
。 - 失败任务重试。由于网络或其它原因,任务可能运行失败。失败重试只重试失败的任务,成功的任务不会重试。Linux下在终端执行
bash console.sh retry [job_name]
, job_name 为可选参数,指定job_name
时重试失败任务的子任务,不指定job_name
时重试所有任务的失败子任务。 - 停止服务。Linux终端执行
bash console.sh stop
。
提示:
bash console.sh
在参数错误时,会自动提示命令格式;- 配置文件和提交任务中的目录,推荐使用绝对目录;
- 任务的配置,即
job.cfg
中的配置项。注意 配置项提交后不能修改。
- 部署服务。在Linux终端执行bash console.sh deploy。
- 常见任务失败原因
- 上传过程中源目录的文件发生了修改,
log/audit.log
里会提示SIZE_NOT_MATCH
相关字样的错误,这种情况下老的文件已经上传成功,新的修改没有上传到OSS; - 源文件在上传过程中被删除,导致下载的时候失败;
- 源文件名不符合OSS命名规范(不能以/开头,不能为空),导致上传到OSS失败;
- 下载数据源文件失败;
- 程序异常退出,任务状态为 Abort ,这种情况请联系我们。
- 上传过程中源目录的文件发生了修改,
- 任务状态及日志
任务提交后,Master分解成Task,有Worker执行Task,Tracker收集Task状态。任务运行完成后workdir目录内容如下:
workdir ├── bin │ ├── console.jar # Console模块jar包 │ ├── master.jar # Master模块jar包 │ ├── tracker.jar # Tracker模块jar包 │ └── worker.jar # Worker模块jar包 ├── conf │ ├── job.cfg # Job配置文件模板 │ ├── sys.properties # 系统运行参数配置文件 │ └── workers # Worker列表 ├── logs │ ├── import.log # 迁移日志 │ ├── master.log # Master日志 │ ├── tracker.log # Tracker日志 │ └── worker.log # Worker日志 ├── master │ ├── jobqueue # 存放尚未分解完成的任务 │ └── jobs # 存放任务运行状态 │ └── xxtooss # 任务名称 │ ├── checkpoints # Master分解Job到Task的checkpoint点记录 │ │ └── 0 │ │ └── ED09636A6EA24A292460866AFDD7A89A.cpt │ ├── dispatched # 已经分配给Worker尚未运行完成的Task │ │ └── 192.168.1.6 │ ├── failed_tasks # 运行失败的Task │ │ └── A41506C07BF1DF2A3EDB4CE31756B93F_1499348973217@192.168.1.6 │ │ ├── audit.log # Task运行日志,通过该日志可以查看错误原因 │ │ ├── DONE # Task运行成功标志,失败为空 │ │ ├── error.list # Task错误列表,可以查看错误文件列表 │ │ ├── STATUS # 任务状态标志文件,内容为Failed或Completed,表示子任务失败或成功 │ │ └── TASK # Task描述信息 │ ├── pending_tasks # 尚未分配的Task │ └── succeed_tasks # 成功运行的Task │ └── A41506C07BF1DF2A3EDB4CE31756B93F_1499668462358@192.168.1.6 │ ├── audit.log # Task运行日志,通过该日志可以查看错误原因 │ ├── DONE # Task运行成功标志 │ ├── error.list # Task错误列表,成功为空 │ ├── STATUS # 任务状态标志文件,内容为Failed或Completed,表示子任务失败或成功 │ └── TASK # Task描述信息 └── worker # Worker正在运行的Task状态,运行完成后由Master管理 └── jobs ├── local_test2 │ └── tasks └── local_test_4 └── tasks
注意- Job运行信息,可以查看
logs/import.log
。 - Task的失败原因,可以查看
master/jobs/${JobName}/failed_tasks/${TaskName}/audit.log
。 - Task的失败文件,可以查看
master/jobs/${JobName}/failed_tasks/${TaskName}/error.list
。 - 上述日志仅作为排查问题时的参考,您的业务和应用不要依赖于该内容。
- Job运行信息,可以查看
常见错误及排除
请查看常见错误及排除。