本文共 4970 字,大约阅读时间需要 16 分钟。
本文主要介绍,OssImport在典型场景下应用,典型需求的实现。
OssImport有 单机模式 和 分布式模式 两种部署方式。对于小于 30TB 的小规模数据数据迁移,单机模式即可完成。对于大规模的数据迁移,请使用分布式模式。
Worker有限流功能,通过修改配置文件sys.properties
的配置项workerMaxThroughput(KB/s)
实现,该配项不是动态生效的,修改后需要重启服务才能生效。分布式部署情况下,需要修改每个Worker的$OSS_IMPORT_WORK_DIR/conf
下的sys.properties
,然后重启服务。
分时限流,可通过 crontab
定时修改 sys.properties
,然后重启服务生效。
Worker列表请在提交任务前确定,目前不支持动态添加。
OssImport支持只校验数据不迁移数据,任务配置文件 job.cfg
或 local_job.cfg
的配置项 jobType=audit 而不是 import
,其它配置与数据迁相同。
以下步骤可以完成从其它存储到OSS的无缝切换:
date +%s
获取;job.cfg
或 local_job.cfg
)的配置项 importSince=T1
,增量数据迁移完成的时间为 T2;注意:
数据迁移增量模式,是指数据迁移任务启动后,先进行一次全量迁移,每隔一段时间自动的进行增量数据迁移。第一次数据迁移任务为全量迁移,提交任务后立即启动;后面的增量数据迁移每隔一个周期启动一次。增量模式有两个配置项:
isIncremental
,是否打开增量迁移模式, true 表示打开增量模式, false 表示关闭增量模式,默认关闭。incrementalModeInterval
,增量模式下的同步间隔,即增量数据迁移的间隔周期,单位秒。isIncremental=true
时有效。可配置的最小值为 900秒 ,不建议配置成小于 3600秒 的值,会浪费大量请求,造成额外的系统开销。使用场景:
迁移文件的过滤条件,即只迁移满足特定的条件的文件。OssImport支持指定 前缀 和 最后修改时间 :
srcPrefix
,指定迁移文件的前缀,默认为空。如果srcType=local
,填写本地目录,需要完整路径,以 / 进行分割并且以 / 结尾,如 c:/example/
或 /data/example/
; srcType 为oss
、qiniu
、bos
、ks3
、youpai
、s3
,则为待同步object的前缀,不包括bucket名称,如data/to/oss/
, 迁移所有文件srcPrefix设置为空 。importSince
,迁移文件的最后修改时间,整形,单位秒。如果文件的最后修改(LastModified Time)在 importSince
之前(包含)将被迁移,如果文件的最后修改(LastModified Time)在 importSince
之后将不被迁移;importSince
为 Unix时间戳,即自1970年1月1日UTC零点以来的秒数,通过命令date +%s
获取;默认值0,表示迁移全部数据。增量模式下只对第一次全量迁移有效,非增量模式对整个迁移任务有效。本地数据迁移到OSS的工具选择:
-u/--update
和 --snapshot-path
选项实现,详细说明请使用 ossutil help cp
查看。提示:
-t
或 -a
选项,这些操作的数据修改都不会被检测到,也不会同步到OSS, 请知悉 。什么时候使用OssImport:
OSS直接数据迁移收费:
不推荐使用场景:
对于从云端(非本地)迁移到OSS,且带宽资源不是很充足的用户,建议够买按量付费的ECS进行迁移,。ECS配置:
在配置迁移服务时,将 targetDomain
设为带 internal 的内网域名;如果源端也是OSS,将 srcDomain
也设为带 internal 的内网域名,可以省掉从OSS源端下载的流量费,仅收取OSS访问次数的费用。
HTTP数据迁移任务需要配置的参数:
srcType
配置为 srcType=http
,请注意字符大小写;job.cfg 中的 httpListFilePath
,指定的HTTP地址列表文件, 请使用绝对路径指定 ,如 c:/example/http.list
、/root/example/http.list
。一个完整的HTTP链接是 127.0.0.1/aa/bb.jpg
,不同的切分方法最后会导致上传到oss的路径会不一样:
http://127.0.0.1/aa/ bb.jpg # 第一行http://127.0.0.1/ aa/bb.jpg # 第二行
第一行的文件导入到OSS后的的文件名为 `destPrefix + bb.jpg`,第二行的文件名为 `destPrefix + aa/bb.jpg`。 *httpPrefixColumn* 指定域名列,默认第一列,如上述的 `127.0.0.1/aa/` 或`127.0.0.1/`。 *relativePathColumn* 指定在OSS中文件名,如上述的 `bb.jpg` 或 `aa/bb.jpg`。如果文件中有多列,如下
http://127.0.0.1/aa/ bb/cc dd/ee ff.jpg
配置应该如下: *httpPrefixColumn=1* , *relativePathColumn=4* 。
destAccessKey
、 destSecretKey
、 destDomain
、 destBucket
等OSS的配置。HTTP数据迁移子任务切分参数:
taskObjectCountLimit
,每个 Task 最大的文件数,默认10000;taskObjectSizeLimit
, 每个 Task 最大数据量, HTTP数据迁移时该参数无效 ,原因是 Master 切分 Task 时,如果每个HTTP文件都是源上获取文件大小,每个文件都有一次HTTP请求开销,会影响子任务分配的效率,进而影响子任务的并发执行,降低迁移的效率;域名
, httpListFilePath
指定的文件中第一列,连续相同的域名任务按照 taskObjectCountLimit
的限制切分,连续不同的域名切分成不同的 Task ,这种做法的目的是为了更好的复用连接。比如:
http://mingdi-hz.oss-cn-hangzhou.aliyuncs.com/ import/test1.txthttp://mingdi-hz.oss-cn-hangzhou.aliyuncs.com/ import/test2.txthttp://mingdi-bj.oss-cn-beijing.aliyuncs.com/ import/test3.txthttp://mingdi-bj.oss-cn-beijing.aliyuncs.com/ import/test4.txt
`taskObjectCountLimit` 大于2的情况下,会切分成 ***2*** 个 *Task* , 而
http://mingdi-hz.oss-cn-hangzhou.aliyuncs.com/ import/test1.txthttp://mingdi-bj.oss-cn-beijing.aliyuncs.com/ import/test3.txthttp://mingdi-hz.oss-cn-hangzhou.aliyuncs.com/ import/test2.txthttp://mingdi-bj.oss-cn-beijing.aliyuncs.com/ import/test4.txt
会切分成 ***4*** 个 *Task* , ***所以 `httpListFilePath` 指定的HTTP地址列表文件,请先按照域名排序*** 。
以下参数的配置与网络流量有关:
workerTaskThreadNum
,表示 Worker 并发执行的任务数量,如果网络较差、并发大,会出现大量超时错误,此时应该降低并发量,修改该配置项,并重启服务;workerMaxThroughput(KB/s)
, 表示 Worker 流量的上限,如果业务需要限流,比如源端流控控制、网络限制等情况。该参数的值应该小于机器的最大网络流量,并根据业务需要评估。taskObjectCountLimit
,每个 Task 最大的文件数,默认10000。该参数会影响 Task 的数量,数量过小无法实现有效的并发。taskObjectSizeLimit
, 每个 Task 最大数据量,默认1GB。该参数会影响 Task 的数量,数量过小无法实现有效的并发。提示:
转载地址:http://blkul.baihongyu.com/