单机部署(已下线)
本文介绍如何单机部署ossimport,单机部署支持Linux和Windows系统。
前提条件
已安装Java 1.7或Java 1.8。
快速使用
下载ossimport-2.3.7.zip并解压。
解压后的文件结构如下:
ossimport ├── bin │ └── ossimport2.jar # 包括Master、Worker、TaskTracker、Console四个模块的总jar ├── conf │ ├── local_job.cfg # Job配置文件 │ └── sys.properties # 系统运行参数配置文件 ├── console.bat # Windows命令行,可以分布执行调入任务 ├── console.sh # Linux命令行,可以分布执行调入任务 ├── import.bat # Windows一键导入,执行配置文件为conf/local_job.cfg配置的数据迁移任务,包括启动、迁移、校验、重试 ├── import.sh # Linux一键导入,执行配置文件为conf/local_job.cfg配置的数据迁移任务,包括启动、迁移、校验、重试 ├── logs # 日志目录 └── README.md # 说明文档,强烈建议使用前仔细阅读
根据需求编辑conf/sys.properties、conf/local_job.cfg文件。
注意不要修改以下内容:
conf/sys.properties中的配置项workingDir、workerUserName、workerPassword、privateKeyFile。
conf/local_job.cfg
的名称、位置、配置项jobName
。
配置示例请参见配置文件示例。
重要请在提交任务前确认sys.properties和local_job.cfg中的参数,任务提交后参数无法再修改。
配置完成后运行任务。
Window系统下在双击运行import.bat。
Linux终端中执行bash import.sh命令。
运行方式
单机模式下,数据迁移任务有以下两种执行方式:
一键导入:是对所有步骤的封装,按照脚本提示执行即可完成数据迁移。快速使用步骤使用的是这种执行方式,对于初级用户建议使用一键导入 。
执行一键导入。
Window系统下在双击运行import.bat。
Linux终端中执行bash import.sh命令。
说明如果之前执行过程序,会提示是否从上次的断点处继续执行,或者重新执行同步任务。对新的数据迁移任务,或者修改了同步的源端/目的端,请选择重新执行。
Windows下任务开始后,会打开一个新的cmd窗口执行同步任务并显示日志,旧窗口会每隔10秒打印一次任务状态,数据迁移期间不要关闭两个窗口;Linux下服务在后台执行。
当Job完成后,如果发现有任务失败了,会提示是否重试。输入y重试,输入n则跳过退出。
如果上传失败,请查看master/jobs/local_test/failed_tasks/<taskid>/audit.log文件,确定失败原因。
分步执行:执行启动服务、提交任务、重试失败子任务等步骤。
清除同名任务。
如果以前运行过同名任务,需要重新执行任务,请先清除同名任务。如果没有运行过,或需要重试失败任务,不要执行清除命令。
Window下在cmd.exe中执行console.bat clean。
Linux下在终端执行bash console.sh clean。
提交数据迁移任务。
ossimport不能提交同名任务,如果有请先清除。提交任务的配置文件为conf/local_job.cfg,默认任务名称为
local_test
。提交任务的命令:Window下在cmd.exe中执行console.bat submit。
Linux下在终端执行bash console.sh submit。
启动服务。
Windows下在cmd.exe中执行console.bat start。
Linux下在终端执行bash console.sh start。
查看任务状态。
Windows下在cmd.exe中执行console.bat stat。
Linux下在终端执行bash console.sh stat。
失败Task重试。
由于网络或其它原因,子任务可能失败。失败重试只重试失败的Task,不会重试成功的Task。
Windows下在cmd.exe中执行console.bat retry。
Linux下在终端执行bash console.sh retry。
停止服务。
Windows下关闭窗口%JAVA_HOME%/bin/java.exe。
Linux下载终端执行bash console.sh stop。
任务状态及日志
任务提交后,Master分解成Task,由Worker执行Task,Tracker收集Task状态。任务运行完成后ossimport目录内容如下:
ossimport
├── bin
│ └── ossimport2.jar # 单机版jar
├── conf
│ ├── local_job.cfg # Job配置文件
│ └── sys.properties # 系统运行参数配置文件
├── console.sh # 命令行工具
├── import.sh # 一键导入脚本
├── logs
│ ├── import.log # 迁移日志
│ ├── job_stat.log # 任务状态记录
│ ├── ossimport2.log # 单机版运行日志
│ └── submit.log # 任务提交记录
├── master
│ ├── jobqueue # 存放尚未分解完成的任务
│ └── jobs # 存放任务运行状态
│ └── local_test # 任务名称
│ ├── checkpoints # Master分解Job到Task的checkpoint点记录
│ │ └── 0
│ │ └── 034DC9DD2860B0CFE884242BC6FF92E7.cpt
│ ├── dispatched # 已经分配给Worker尚未运行完成的Task
│ │ └── localhost
│ ├── failed_tasks # 运行失败的Task
│ ├── pending_tasks # 尚未分配的Task
│ └── succeed_tasks # 成功运行的Task
│ └── A41506C07BF1DF2A3EDB4CE31756B93F_1499744514501@localhost
│ ├── audit.log # Task运行日志,通过该日志可以查看错误原因
│ ├── DONE # Task运行成功标志
│ ├── error.list # Task错误列表,可以查看错误文件列表
│ ├── STATUS # 任务状态标志文件,内容为Failed或Completed,表示子任务失败或成功
│ └── TASK # Task描述信息
└── worker # Worker正在运行的Task状态,运行完成后由Master管理
└── jobs
└── local_test
└── tasks
Job运行信息,可以查看logs/ossimport2.log或logs/import.log。
Task的失败原因,可以查看master/jobs/${JobName}/failed_tasks/${TaskName}/audit.log。
Task的失败文件,可以查看master/jobs/${JobName}/failed_tasks/${TaskName}/error.list。
上述日志仅作为排查问题时的参考,您的业务和应用不要依赖于该内容。
迁移结果校验
ossimport不对迁移文件进行校验,无法保证迁移结果的正确性和一致性。在迁移任务完成后,请您务必自行做好源端和目的端数据的一致性校验。
如您在未校验源端和目的端数据一致性前,删除源数据,由此所引起的一切损失和后果均由您自行承担。
迁移失败常见原因
上传过程中源目录的文件发生了修改,log/audit.log里会提示
SIZE_NOT_MATCH
相关字样的错误,这种情况下老的文件已经上传成功,新的修改没有上传到OSS。源文件在上传过程中被删除,导致迁移失败。
源文件名不符合OSS命名规范(不能以正斜线(/)开头,不能为空),导致上传到OSS失败。
因网络异常、账号权限不足等原因导致的下载数据源文件失败,可查看logs/ossimport2.log或logs/import.log确定错误原因。
程序异常退出,任务状态为Abort 。如果遇到此类问题,请联系技术支持进行排查。