164
微信
Linux平台使用说明__官方迁移工具_常用工具_对象存储 OSS-阿里云
简介
【ossimport2】同步工具可以将您本地或第三方云存储服务上的文件同步到OSS上。
主要特性:
- 支持将本地、OSS、七牛、百度对象存储、金山对象存储、又拍云、亚马逊s3、腾讯云cos、HTTP链接形式的文件同步到指定OSS Bucket上
- 支持存量数据同步(允许指定只同步某个时间点之后的文件)
- 支持增量数据自动同步
- 支持断点续传
- 支持上传/下载流量控制
- 支持并行list和并行数据下载/上传
如果您有较大量级的数据(超过20T),且期望以较短时间迁移到OSS上,除了【ossimport2】同步工具之外,我们的专业技术人员还可以为您提供多机器并行同步方案,请加旺旺群:904193608联系我们。
运行环境
您需要在Java JDK1.7以上的环境中运行【ossimport2】同步工具,建议使用Oracle版本JDK:
注意:程序运行前请检查进程允许打开的文件数的配置(ulimit -n 查看),如果小于10240,需要作相应修改。
部署工具
首先,在您本地服务器上创建同步的工作目录,并且将【ossimport2】工具包下载在该目录中。
示例:创建/root/ms目录为工作目录,且工具包下载在该工作目录下。
export work_dir=/root/ms
wget https://import-service-package.oss.aliyuncs.com/ossimport2/ossimport-v2.1-linux.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 -Dskip_exist_file=false -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties start > $work_dir/logs/ossimport2.log 2>&1 &
请注意:相关的log文件会自动生成在您执行启动服务的当前目录的logs目录中,建议您在工作目录($work_dir)下执行启动命令。启动任务时如果skip_exist_file=true,则在上传中如果碰到oss上存在且长度和源端一致的文件,将会跳过此文件
2.编辑示例任务描述文件local_job.cfg
字段说明:
字段名 | 说明 |
---|---|
jobName | 自定义任务名字,任务的唯一标识, 支持提交多个名字不同的任务 |
jobType | 可以配置为import(执行数据同步操作)或者audit(仅进行同步源数据与同步目标数据全局一致性校验) |
isIncremental=false | 是否打开自动增量模式,如果设为true,会每间隔incrementalModeInterval(单位秒)重新扫描一次增量数据,并将增量数据同步到oss上 |
incrementalModeInterval=86400 | 增量模式下的同步间隔 |
importSince | 指定时间,用于同步大于该时间的数据,这个时间为unix时间戳(秒数);默认为0 |
srcType | 同步源类型,目前支持oss,qiniu,baidu,ks3,youpai,local |
srcAccessKey | 如果srcType设置为oss、qiniu、baidu、ks3、youpai,则需要填写数据源的access key |
srcSecretKey | 如果srcType设置为oss、qiniu、baidu、ks3、youpai,则需要填写数据源的secret key |
srcDomain | 源endpoint |
srcBucket | 源bucket名字 |
srcPrefix | 源前缀,默认为空;如果srcType=local,则填写本地待同步目录,请注意您需要填写完整的目录路径(以’/‘结尾)。如果srcType设置为oss、qiniu、baidu、ks3、youpai,则需要填写待同步的Object前缀,同步所有文件前缀可以设置为空。 |
destAccessKey | 填写同步目标端OSS 的access key |
destSecretKey | 填写同步目标端 OSS的 secret key |
destDomain | 填写同步目标端OSS的endpoint |
destBucket | 填写同步目标端 OSS的bucket |
destPrefix | 填写同步目标端文件前缀,默认为空 |
taskObjectCountLimit | 每个子任务最大的文件个数限制,这个会影响到任务执行的并行度,一般配置为总的文件数/你配置的下载线程数,如果不知道总文件数,可以配置为默认值 |
taskObjectSizeLimit | 每个子任务下载的数据量大小限制(bytes) |
scanThreadCount | 并行扫描文件的线程数,与扫描文件的效率有关 |
maxMultiThreadScanDepth | 最大允许并行扫描目录的深度,采用默认值即可 |
注:1) 如果配置了自动增量模式,则任务会定期被执行以扫描最新的数据,该任务永远不会结束。2) 对于srcType为youpai的情况,由于又拍云本身API限制,list文件的操作无法实现checkpoint,在list完成之前杀掉进程会导致重新list所有文件的操作。
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中),命令如下
ps axu | grep "ossimport2.jar.* start" | grep -v grep | awk '{print "kill -9 "$2}' | bash
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”表示:总共需要上传的数据量(26378979字节)/已经上传完成的数据量(26378979字节)。“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编码,对于数据源是nfs的情况下较容易出现该问题。
- 上传过程中源目录的文件发生了修改,这种情况在audit.log里会提示SIZE_NOT_MATCH相关字样的错误,这种情况下老的文件已经上传成功,新的修改没有上传到oss。
- 源文件在上传过程中被删除,导致下载文件时失败。
- 源文件名不符合oss命名规范(如不能以/开头,或不能为空),导致文件上传到oss失败。
- 数据源出现问题导致下载数据源文件失败。
- 没有先杀掉进程再执行clean有可能会导致程序执行异常。
- 程序异常退出,任务状态为Abort,这种情况请联系我们(请加旺旺群:904193608)。
6.建议
对于从云端(非本地)迁移到oss,且带宽资源不是很充足的用户,建议够买按量付费的ecs进行迁移(购买地址:https://ecs-buy.aliyun.com/#/postpay)
ecs配置:
- 1.付费方式选择按量付费
- 2.地域选择oss对应的区域
- 3.带宽峰值选100M(流入流量和内网流量是不记费的)
- 4.系统linux/windows随意
- 5.其他全部选择最低配置
收费根据区域不同会略有不同,杭州配置费用,0.277元/小时,公网流量费0.8元/GB(公网带宽:按使用流量,仅单向收取【流出】流量费用,【流入流量和内网流量不收费】,按实际使用金额每小时扣费。例如您在1小时内公网流出流量为2.5GB,收取费用为2.5GB*0.8元/小时=2.0元)
在配置迁移服务时,将targetDomain设为带internal的内网域名;如果源端也是oss,将srcDomain也设为带internal的内网域名,可以省掉从oss源端下载的流量费,仅收取oss访问次数的费用;
迁移结束后释放掉机器(注意:不是关机,是释放)
最后更新:2016-11-23 20:01:38
上一篇:
ossprobe__常用工具_对象存储 OSS-阿里云
下一篇:
Windows平台使用说明__官方迁移工具_常用工具_对象存储 OSS-阿里云
授权访问鉴权规则__如何使用RAM授权_API 参考_云数据库 RDS 版-阿里云
查询API分组详情__API分组相关接口_API_API 网关-阿里云
PolicyVersion__数据类型_RAM API文档_访问控制-阿里云
补丁管理-漏洞修复失败__产品常见问题_服务器安全(安骑士)-阿里云
添加业务指标监控__Dashboard_用户指南_云监控-阿里云
Special__数据类型_API_API 网关-阿里云
UpdateRowInBatchWriteRowRequest__DataType_API 参考_表格存储-阿里云
Media C SDK开发包__历史版本SDK下载_SDK 参考_对象存储 OSS-阿里云
搭数服务协议__相关协议_平台介绍_数加平台介绍-阿里云
发送普通消息(三种方式)__Java SDK_TCP 接入(专业)_消息队列 MQ-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云