Snapshot(通過快照備份和恢復(fù)數(shù)據(jù))
當(dāng)您希望對(duì)OSS-HDFS服務(wù)的數(shù)據(jù)進(jìn)行備份,在數(shù)據(jù)發(fā)生錯(cuò)誤、被誤刪除時(shí),將數(shù)據(jù)恢復(fù)至可用狀態(tài),您可以使用Snapshot命令創(chuàng)建快照。OSS-HDFS服務(wù)的快照功能在使用方式上與HDFS的快照功能完全兼容,同時(shí)支持目錄層級(jí)的操作。
此功能目前尚處于試用和小規(guī)模使用階段,不建議大規(guī)模生產(chǎn)使用。
前提條件
已創(chuàng)建Hadoop環(huán)境、Hadoop集群或者Hadoop客戶端。具體操作,請(qǐng)參見創(chuàng)建Hadoop運(yùn)行環(huán)境。
已開通OSS-HDFS服務(wù)。具體操作,請(qǐng)參見開通OSS-HDFS服務(wù)。
已配置4.5.0及以上版本JindoSDK 。具體操作,請(qǐng)參見非EMR集群接入OSS-HDFS服務(wù)快速入門。
步驟1:配置環(huán)境變量
連接ECS實(shí)例。具體操作,請(qǐng)參見連接ECS實(shí)例。
進(jìn)入已安裝的JindoSDK JAR包下的bin目錄。
以下以
jindosdk-x.x.x-linux
為例,如使用其他版本的JindoSDK,請(qǐng)?zhí)鎿Q為對(duì)應(yīng)的JAR包名稱。cd jindosdk-x.x.x-linux/bin/
說明x.x.x表示JindoSDK JAR包版本號(hào)。
授予bin目錄下的
jindo-util
文件的讀、寫、執(zhí)行的權(quán)限。chmod 700 jindo-util
將
jindo-util
文件重命名為jindo
。mv jindo-util jindo
新建配置文件
jindosdk.cfg
,然后在配置文件中添加以下配置項(xiàng)。[common]保持以下默認(rèn)配置。 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]自定義以下配置項(xiàng)。 <!-- 以下以杭州地域?yàn)槔?,其他地域?qǐng)根據(jù)實(shí)際情況替換。 --> fs.oss.endpoint = cn-hangzhou.oss-dls.aliyuncs.com <!-- 配置訪問OSS-HDFS服務(wù)的AccessKeyId、AccessKeySecret。 --> fs.oss.accessKeyId = LTAI******** fs.oss.accessKeySecret = KZo1********
設(shè)置環(huán)境變量。
export JINDOSDK_CONF_DIR=<JINDOSDK_CONF_DIR>
<JINDOSDK_CONF_DIR>填寫
jindosdk.cfg
配置文件所在的絕對(duì)路徑。
步驟2:執(zhí)行快照相關(guān)操作
開啟快照功能
假設(shè)您擁有名為examplebucket的Bucket,并在該Bucket下創(chuàng)建了名為exampledir的目錄。當(dāng)您需要為該目錄開啟快照功能時(shí),請(qǐng)通過JindoSDK的Shell命令行工具執(zhí)行如下命令:
./jindo admin -allowSnapshot -dlsUri oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir
關(guān)于配置Endpoint的具體操作,請(qǐng)參見JindoFS服務(wù)Endpoint。
創(chuàng)建快照
在examplebucket下的exampledir目錄開啟快照功能后,您需要執(zhí)行以下操作:
新建子目錄和文件。
在exampledir目錄下新建子目錄dir1以及dir2以及文件file1
# 新建子目錄dir1。 hdfs dfs -mkdir oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1 # 新建子目錄dir2。 hdfs dfs -mkdir oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir2 # 新建文件file1。 hdfs dfs -touchz oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/file1.txt # 新建文件file2。 hdfs dfs -touchz oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/file2.txt
為exampledir創(chuàng)建名為S1的快照。
hdfs dfs -createSnapshot oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir S1
重命名快照
例如,您需要將已創(chuàng)建的快照S1重命名為S2,請(qǐng)通過HDFS的Shell命令行工具執(zhí)行以下命令:
hdfs dfs -renameSnapshot oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir S1 S2
訪問快照中的目錄和文件
當(dāng)您需要訪問examplebucket根目錄exampledir的子目錄dir1,請(qǐng)通過HDFS的Shell命令行工具執(zhí)行以下命令:
hdfs dfs -ls oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1
考慮到此前您已為examplebucket根目錄exampledir創(chuàng)建了快照S1,因此訪問快照S1的行為等同于訪問根目錄exampledir。請(qǐng)通過HDFS的Shell命令行工具執(zhí)行以下命令訪問快照S1中的目錄和文件:
hdfs dfs -ls oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/.snapshot/S1/dir1
對(duì)比快照內(nèi)容
當(dāng)您需要對(duì)比exampledir目錄下快照S1與快照S2存在的差異時(shí),請(qǐng)通過JindoSDK的Shell命令行工具執(zhí)行如下命令:
./jindo admin -snapshotDiff \
-dlsUri -dlsUri oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir \
-fromSnapshot S1 \
-toSnapshot S2
通過快照恢復(fù)數(shù)據(jù)
快照功能通常用于數(shù)據(jù)備份和恢復(fù)。通過快照功能,可以及時(shí)恢復(fù)誤刪除的數(shù)據(jù)。假設(shè)您誤刪除了examplebucket根目錄exampledir下的文件dir1:
hdfs dfs -rm -r oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1
考慮到此前您已為examplebucket根目錄exampledir創(chuàng)建了快照S1,此時(shí)您可以通過HDFS的Shell命令行工具執(zhí)行以下命令恢復(fù)誤刪除數(shù)據(jù):
hdfs dfs -cp oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/.snapshot/S1/dir1 oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir
完成數(shù)據(jù)恢復(fù)后,您可以通過以下命令查看誤刪除的文件夾或者文件:
hdfs dfs -ls oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1
刪除快照
例如,您不再需要保留examplebucket根目錄exampledir創(chuàng)建的快照S1或者重命名后的快照S2,請(qǐng)通過HDFS的Shell命令行工具執(zhí)行如下命令刪除快照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
關(guān)閉快照功能
當(dāng)您不再需要使用快照功能時(shí),請(qǐng)通過JindoSDK的Shell命令行工具執(zhí)行如下命令關(guān)閉快照功能:
./jindo admin -disallowSnapshot -dlsUri oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir
關(guān)閉快照功能前,請(qǐng)確保已刪除目標(biāo)路徑下的所有快照。否則,關(guān)閉快照功能將會(huì)報(bào)錯(cuò)。