Linux平台使用说明
简介
【ossimport2】同步工具可以将您本地或第三方云存储服务上的文件同步到OSS上。
主要特性:
支持将本地、OSS、七牛、百度对象存储的文件同步到指定OSS Bucket上 支持存量数据同步(允许指定只同步某个时间点之后的文件) 支持增量数据自动同步 支持断点续传 支持上传/下载流量控制 支持并行list和并行数据下载/上传 如果您有较大量级的数据,且期望以较短时间迁移到OSS上,除了【ossimport2】同步工具之外,我们的专业技术人员还可以为您提供多机器并行同步方案,请加旺旺群:904193608联系我们。
运行环境
您需要在Java JDK1.7以上的环境中运行【ossimport2】同步工具,建议使用Oracle版本JDK:
点击查看
部署工具
首先,在您本地服务器上创建同步的工作目录,并且将【ossimport2】工具包下载在该目录中。
示例:创建/root/ms目录为工作目录,且工具包下载在该工作目录下。
export work_dir=/root/ms wget http://oss.aliyuncs.com/import-service-package/ossimport4linux.zip unzip ./ossimport4linux.zip -d "$work_dir" 配置工具
编辑工作目录($work_dir)下的配置文件/conf/sys.properties:
vim $work_dir/conf/sys.properties workingDir=/root/ms slaveUserName= slavePassword= privateKeyFile= slaveTaskThreadNum=60 slaveMaxThroughput(KB/s)=100000000 slaveAbortWhenUncatchedException=false dispatcherThreadNum=5 您可以直接使用配置默认值。如有特殊要求,可以编辑配置字段值:
字段 说明 workingDir 表示当前的工作目录,即工具包解压后所在的目录 slaveTaskThreadNum 表示同时执行同步的工作线程数 slaveMaxThroughput(KB/s) 表示迁移速度总的流量上限限制 slaveAbortWhenUncatchedException 表示遇到未知错误时是否跳过还是abort,默认不abort dispatcherThreadNum 表示分发任务的并行线程数,默认值一般够用 服务运行
ossimport2支持如下命令:
任务提交:java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties submit $jobConfigPath 任务取消:java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties clean $jobName 状态查看:java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties stat detail 任务重试:java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties retry $jobName 服务的运行和使用步骤如下:
1.启动服务,执行如下命令:
cd $work_dir nohup java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties start 2>&1 > $work_dir/logs/ossimport2.log & 请注意:相关的log文件会自动生成在您执行启动服务的当前目录的logs目录中,建议您在工作目录($work_dir)下执行启动命令。
2.编辑示例任务描述文件local_job.cfg
字段说明:
字段名 说明 jobName 自定义任务名字,任务的唯一标识, 支持提交多个名字不同的任务 jobType 可以配置为import(执行数据同步操作)或者audit(仅进行同步源数据与同步目标数据全局一致性校验) isIncremental=false 是否打开自动增量模式,如果设为true,会每间隔incrementalModeInterval(单位秒)重新扫描一次增量数据,并将增量数据同步到oss上 incrementalModeInterval=86400 增量模式下的同步间隔 importSince 指定时间,用于同步大于该时间的数据,这个时间为unix时间戳(秒数);默认为0 srcType 同步源类型,目前支持oss,qiniu,baidu,local srcAccessKey 如果srcType设置为oss、qiniu、baidu,则需要填写数据源的access key srcSecretKey 如果srcType设置为oss、qiniu、baidu,则需要填写数据源的secret key srcDomain 源endpoint srcBucket 源bucket名字 srcPrefix 源前缀,默认为空;如果srcType=local,则填写本地待同步目录,请注意您需要填写完整的目录路径(以'/'结尾)。如果srcType设置为oss、qiniu、baidu,则需要填写待同步的Object前缀,同步所有文件前缀可以设置为空。 destAccessKey 填写同步目标端OSS 的access key destSecretKey 填写同步目标端 OSS的 secret key destDomain 填写同步目标端OSS的endpoint destBucket 填写同步目标端 OSS的bucket destPrefix 填写同步目标端文件前缀,默认为空 taskObjectCountLimit 每个子任务最大的文件个数限制,这个会影响到任务执行的并行度,一般配置为总的文件数/你配置的下载线程数 taskObjectSizeLimit 每个子任务下载的数据量大小限制(bytes) scanThreadCount 并行扫描文件的线程数,与扫描文件的效率有关 maxMultiThreadScanDepth 最大允许并行扫描目录的深度,采用默认值即可 3.提交任务
java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties submit $work_dir/local_job.cfg 注意事项:
如果有同名任务正在执行,则提交任务会失败。 如果您需要暂停同步任务,您可以停止ossimport2进程,需要同步时重启ossimport2进程即可,重启后会按照上次的进度继续上传。 如果您需要重新全量同步文件,您可以先停止ossimport2进程,再调用如下命令清除当前任务。 示例:假设当前任务名为local_test(这个任务名配置在文件local_job.cfg中),命令如下
java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties clean local_test 4.查看任务执行状态:
[root@iZ23gztmc8fZ local]# java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties stat detail --------------job stats begin--------------- ----------------job stat begin------------------ JobName:local_test JobState:Running PendingTasks:0 RunningTasks:1 SucceedTasks:0 FailedTasks:0 ScanFinished:true RunningTasks Progress: FD813E8B93F55E67A843DBCFA3FAF5B6_1449307162636:26378979/26378979 1/1 ----------------job stat end------------------ --------------job stats end--------------- 这里会显示当前任务的总体的执行进度,并且会显示当前正在执行的task进度。例如上文中: "26378979/26378979"表示:总共需要上传的数据量(26378979KB)/已经上传完成的数据量(26378979KB)。 "1/1" 表示:总共需要上传的文件个数(1个)/已经上传完成的文件个数(1个)。
迁移工具会将用户提交的一个job任务分解为多个task并行执行,当所有的task都执行完成之后,job任务才算执行完成。 任务执行完成之后,JobState会显示为"Succeed"或者"Failed",表示任务执行成功或者失败。 如果任务执行失败,可以通过如下命令查看各个task失败的原因: 以下命令中$jobName需要替换成对应得job名字(jobName配置在文件local_job.cfg中)。
cat $work_dir/master/jobs/$jobName/failed_tasks/*/audit.log 对于任务失败的情况,我们在工具中已经做了较为充分的重试,对于可能由于数据源或者目标源暂时不可用引起的失败情况,可以通过如下命令尝试重新执行失败的TASK:
java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties retry $jobName 5.常见任务失败原因
任务配置出错,比如access key/id出错,权限不足等,这种情况下通常现象是所有task都失败,具体确认需要查看$work_dir/logs/ossimport2.log文件。 源文件名的编码方式与系统默认的文件名编码方式不符,例如在windows下文件名默认为gbk编码,linux下默认为utf-8编码。 上传过程中源目录的文件发生了修改,这种情况在audit.log里会提示SIZE_NOT_MATCH相关字样的错误,这种情况下老的文件已经上传成功,新的修改没有上传到oss。 源文件在上传过程中被删除,导致下载文件时失败。 源文件名不符合oss命名规范(如不能以/开头,或不能为空),导致文件上传到oss失败。 数据源出现问题导致下载数据源文件失败。 程序异常退出,任务状态为Abort,这种情况请联系我们(请加旺旺群:904193608)。