CDHでHDFSのスナップショットを試す

CDHでHDFSのスナップショットを試してみました。
誤ってファイルを削除してもスナップショットを取得しておけば復元する事が出来ます。
Apache Hadoop 2.5.0-cdh5.3.2 - HDFS Snapshots

環境

CDH5.3.2

スナップショット対象

/user/Snaptestディレクトリをスナップショット対象にして試してみます。
下記のファイルがあります。

$ hadoop fs -ls /user/Snaptest
Found 5 items
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:26 /user/Snaptest/test1
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:27 /user/Snaptest/test2
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:27 /user/Snaptest/test3
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:27 /user/Snaptest/test4
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:27 /user/Snaptest/test5

スナップショットを有効にする

デフォルトではスナップショットが有効になっていないので有効にします。
ディレクトリ単位で有効に出来ます。

$ hdfs dfsadmin -allowSnapshot /user/Snaptest
Allowing snaphot on /user/Snaptest succeeded

確認

$ hdfs lsSnapshottableDir
drwxr-xr-x 0 hdfs hadoop 0 2015-03-03 21:30 1 65536 /user/Snaptest

スナップショットの作成

書式:hdfs dfs -createSnapshot [対象ディレクトリ][スナップショット名(任意)]

$ hdfs dfs -createSnapshot /user/Snaptest snaptest
Created snapshot /user/Snaptest/.snapshot/snaptest

スナップショットが出来ているか確認

$ hadoop fs -ls /user/Snaptest/.snapshot/snaptest
Found 5 items
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:26 /user/Snaptest/.snapshot/snaptest/test1
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:27 /user/Snaptest/.snapshot/snaptest/test2
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:27 /user/Snaptest/.snapshot/snaptest/test3
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:27 /user/Snaptest/.snapshot/snaptest/test4
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:27 /user/Snaptest/.snapshot/snaptest/test5

スナップショットから復元

まず元データ削除

$ hadoop fs -rm /user/Snaptest/test*

復元

$ hadoop fs -cp /user/Snaptest/.snapshot/snaptest/* /user/Snaptest/

確認

$ hadoop fs -ls /user/Snaptest/
Found 5 items
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:47 /user/Snaptest/test1
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:47 /user/Snaptest/test2
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:47 /user/Snaptest/test3
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:47 /user/Snaptest/test4
-rw-r--r--   3 hdfs hadoop          5 2015-03-03 21:47 /user/Snaptest/test5

スナップショット消去

書式:hdfs dfs -deleteSnapshot [対象ディレクトリ][スナップショット名(任意)]

$ hdfs dfs -deleteSnapshot /user/Snaptest snaptest

ちなみにrmでは消去出来ないので上記コマンドで。

スナップショットを無効にする

$ hdfs dfsadmin -disallowSnapshot /user/Snaptest
Disallowing snaphot on /user/Snaptest succeeded

確認

$ hdfs lsSnapshottableDir

以上、スナップショットでした。 気軽に出来るので取得しておけば安心です。
(ノ´▽`)ノ{+++THANK YOU+++}ヽ(´▽`ヽ)

Hadoop徹底入門 第2版 オープンソース分散処理環境の構築

Hadoop徹底入門 第2版 オープンソース分散処理環境の構築