当您希望对OSS-HDFS服务的数据进行备份,在数据发生错误、被误删除时,将数据恢复至可用状态,您可以使用Snapshot命令创建快照。OSS-HDFS服务的快照功能与HDFS的快照功能完全兼容,同时支持目录层级操作。
此功能目前尚处于试用和小规模使用阶段,不建议大规模生产使用。
前提条件
已创建Hadoop环境、Hadoop集群或者Hadoop客户端。具体操作,请参见创建Hadoop运行环境。
已开通OSS-HDFS服务。具体操作,请参见开通OSS-HDFS服务。
已配置4.5.0及以上版本JindoSDK 。具体操作,请参见非EMR集群接入OSS-HDFS服务快速入门。
步骤1:配置环境变量
连接ECS实例。具体操作,请参见连接ECS实例。
进入已安装的JindoSDK JAR包下的bin目录。
以下以
jindosdk-x.x.x-linux
为例,如使用其他版本的JindoSDK,请替换为对应的JAR包名称。cd jindosdk-x.x.x-linux/bin/
说明x.x.x表示JindoSDK JAR包版本号。
授予bin目录下的
jindo-util
文件的读、写、执行的权限。chmod 700 jindo-util
将
jindo-util
文件重命名为jindo
。mv jindo-util jindo
新建配置文件
jindosdk.cfg
,添加以下配置项。[common]保持以下默认配置。 logger.dir = /tmp/jindo-util/ logger.sync = false logger.consolelogger = false logger.level = 0 logger.verbose = 0 logger.cleaner.enable = true hadoopConf.enable = false [jindosdk]自定义以下配置项。 <!-- 以下以杭州地域为例,其他地域请根据实际情况替换。 --> fs.oss.endpoint = cn-hangzhou.oss-dls.aliyuncs.com <!-- 配置访问OSS-HDFS服务的AccessKeyId、AccessKeySecret。 --> fs.oss.accessKeyId = LTAI******** fs.oss.accessKeySecret = KZo1********
设置环境变量。
export JINDOSDK_CONF_DIR=<JINDOSDK_CONF_DIR>
<JINDOSDK_CONF_DIR>填写
jindosdk.cfg
配置文件所在的绝对路径。
步骤2:执行快照相关操作
假设您拥有名为examplebucket的Bucket,并在该Bucket下创建了名为exampledir的目录。
开启快照功能
执行以下命令开启快照功能。
./jindo admin -allowSnapshot -dlsUri oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir
关于配置Endpoint的具体操作,请参见JindoFS服务Endpoint。
创建快照
新建子目录和文件。
在exampledir目录下新建子目录dir1以及dir2以及文件file1和file2。
hdfs dfs -mkdir oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1 hdfs dfs -mkdir oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir2 hdfs dfs -touchz oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/file1.txt hdfs dfs -touchz oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/file2.txt
为exampledir创建名为S1的快照。
hdfs dfs -createSnapshot oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir S1
重命名快照
将快照S1重命名为S2。
hdfs dfs -renameSnapshot oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir S1 S2
访问快照中的目录和文件
访问exampledir的子目录dir1。
hdfs dfs -ls oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1
访问快照S1中的目录和文件。
hdfs dfs -ls oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/.snapshot/S1/dir1
对比快照内容
对比快照S1与快照S2的差异。
./jindo admin -snapshotDiff \
-dlsUri oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir \
-fromSnapshot S1 \
-toSnapshot S2
通过快照恢复数据
假设您误删除了examplebucket根目录exampledir下的文件dir1。
hdfs dfs -rm -r oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1
恢复误删除数据。
hdfs dfs -cp oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/.snapshot/S1/dir1 oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir
完成数据恢复后,查看误删除的文件夹或者文件:
hdfs dfs -ls oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1
删除快照
删除不再需要保留的快照S1以及S2。
删除快照S1
hdfs dfs -deleteSnapshot oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir S1
删除快照S2
hdfs dfs -deleteSnapshot oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir S2
关闭快照功能
当您不再需要使用快照功能时,执行如下命令关闭快照功能。
./jindo admin -disallowSnapshot -dlsUri oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir
关闭快照功能前,请确保已删除目标路径下的所有快照。否则,关闭快照功能将会报错。