数据从三方云对象存储迁移到 OSS/OSS-HDFS§
使用前须知§
- 请参考 JindoDistCp 介绍 文章内容进行环境适配和工具包下载。
- 如您在使用过程中遇到问题可参考 JindoDistCp 问题排查指南 进行解决。
1、拷贝数据到阿里云 OSS/OSS-HDFS 上§
您可以使用如下命令将三方云对象存储上的目录拷贝到 OSS/OSS-HDFS 上
hadoop jar jindo-distcp-tool-${version}.jar s3://example-s3-bucket/data --dest oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/dir/ --hadoopConf fs.oss.accessKeyId=yourkey --hadoopConf fs.oss.accessKeySecret=yoursecret --parallelism 10
参数 | 描述 | 示例 |
---|---|---|
--src | 三方云对象存储路径。 | s3://example-s3-bucket/data/ |
--dest | OSS/OSS-HDFS 的目标路径。 | oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/ |
--hadoopConf | 指定 OSS/OSS-HDFS/S3/COS/OBS 的 Access Key ID ,Access Key Secret |
* 配置 OSS/OSS-HDFS 的 AccessKeyId: --hadoopConf fs.oss.accessKeyId=yourkey * 配置 OSS/OSS-HDFS 的 AccessKeySecret: --hadoopConf fs.oss.accessKeySecret=yoursecret |
--parallelism | 任务并发大小,根据集群资源可调整。 | 10 |
2、增量拷贝文件§
如果 Distcp 任务因为各种原因中间失败了,而此时您想进行断点续传,只Copy剩下未Copy成功的文件。或者源端文件新增了部分文件,此时需要您在进行上一次 Distcp 任务完成后进行如下操作:
使用 --update 命令,获得增量的文件列表§
hadoop jar jindo-distcp-tool-${version}.jar --src s3://example-s3-bucket/data --dest oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/dir/ --hadoopConf fs.oss.accessKeyId=yourkey --hadoopConf fs.oss.accessKeySecret=yoursecret --update --parallelism 20
3、YARN 队列及带宽选择§
如您需要对 DistCp 作业使用的 YARN 队列和带宽进行限定,可用如下命令
hadoop jar jindo-distcp-tool-${version}.jar --src s3://example-s3-bucket/data --dest oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/dir/ --hadoopConf fs.oss.accessKeyId=yourkey --hadoopConf fs.oss.accessKeySecret=yoursecret --hadoopConf mapreduce.job.queuename=yarnQueue --bandWidth 100 --parallelism 10
- --hadoopConf mapreduce.job.queuename=yarnQueue:指定 YARN 队列的名称
- --bandWidth:指定单机限流带宽的大小,单位 MB
4、配置访问三方云对象存储的 AK§
您可以通过指定 AK 来获得访问三方云对象存储的权限。您可以在命令中使用 --hadoopConf 选项来指定 AK。
S3 示例命令如下:
hadoop jar jindo-distcp-tool-${version}.jar --src s3://example-s3-bucket/data/hourly_table --dest oss://example-oss-bucket/hourly_table --hadoopConf fs.s3.accessKeyId=yourkey --hadoopConf fs.s3.accessKeySecret=yoursecret
COS 示例命令如下:
hadoop jar jindo-distcp-tool-${version}.jar --src cos://example-cos-bucket/data/hourly_table --dest oss://example-oss-bucket/hourly_table --hadoopConf fs.cos.accessKeyId=yourkey --hadoopConf fs.cos.accessKeySecret=yoursecret
OBS 示例命令如下:
hadoop jar jindo-distcp-tool-${version}.jar --src obs://example-obs-bucket/data/hourly_table --dest oss://example-oss-bucket/hourly_table --hadoopConf fs.obs.accessKeyId=yourkey --hadoopConf fs.obs.accessKeySecret=yoursecret
您也可以将三方云对象存储的 AK 预先配置在 Hadoop 的 core-site.xml 文件里 ,避免每次使用时临时填写 AK, 以 S3 为例。
<configuration>
<property>
<name>fs.s3.accessKeyId</name>
<value>xxx</value>
</property>
<property>
<name>fs.s3.accessKeySecret</name>
<value>xxx</value>
</property>
</configuration>
5、配置 OSS/OSS-HDFS 的 AK§
通常您需要将 OSS/OSS-HDFS AccessKey/AccessSecret 信息写在参数里,但是 JindoDistCp 可以将其预先写在 Hadoop 的core-site.xml
文件里 ,以避免使用时多次填写的问题。
<configuration>
<property>
<name>fs.oss.accessKeyId</name>
<value>xxx</value>
</property>
<property>
<name>fs.oss.accessKeySecret</name>
<value>xxx</value>
</property>
</configuration>
6、配置 OSS-HDFS Endpoint§
访问 OSS-HDFS 需要配置 Endpoint(cn-xxx.oss-dls.aliyuncs.com
),与 OSS 对象接口的 Endpoint(oss-cn-xxx-internal.aliyuncs.com
)不同。JindoSDK 会根据配置的 Endpoint 访问 OSS-HDFS 或 OSS 对象接口。
使用 OSS-HDFS 时,推荐访问路径格式为:oss://<Bucket>.<Endpoint>/<Object>
如: oss://mydlsbucket.cn-shanghai.oss-dls.aliyuncs.com/Test
。
这种方式在访问路径中包含 OSS-HDFS 的 Endpoint,JindoSDK 会根据路径中的 Endpoint 访问对应的 OSS-HDFS 接口。 JindoSDK 还支持更多的 Endpoint 配置方式,详情参考 OSS/OSS-HDFS Endpoint 配置。
注意:
JindoSDK 4.4.0 及以上版本默认使用域名分离的方式,数据读写域名默认使用内网标准 OSS 域名,如果在非阿里云内网环境执行 distcp 命令,则需要在 Hadoop 的core-site.xml
文件中配置数据流访问的公网 OSS endpoint。
<configuration>
<property>
<name>fs.oss.data.endpoint</name>
<value>oss-cn-xxx.aliyuncs.com</value>
</property>
</configuration>
7、其他功能§
如您需要其他使用其他功能,请参考: * JindoDistCp 使用说明