この記事では、PowerScale Hadoop以外の環境をDell PowerScale Clusterにバックアップするための推奨されるベスト プラクティスについて説明します。Dell PowerScaleは、80%を超えるストレージ効率を実現する堅牢な消失訂正符号データ保護機能を備えており、Hadoopクラスター上のデータにとって理想的なバックアップ ターゲットです。DistCp(分散コピー)は、すべてのHadoopディストリビューションとバージョンに付属する標準ツールです。DistCpはHadoopディレクトリー全体をコピーできます。DistCpはMapReduceジョブとして実行され、必要に応じてシステムを完全に使用して並列でファイル コピーを実行します。他のタスクへの影響を制御するために帯域幅を制限するオプションもあります。
環境
この記事では、次のテスト環境を使用します。
DistCpは標準のHadoopツールであるため、このドキュメントに記載されているアプローチは、他のすべてのHadoopディストリビューションやバージョンとは言わないまでも、ほとんどに適用できます。
このドキュメントの読み取り中に、バックアップするデータが /mydataディレクトリーのPHD Hadoop HDFSクラスター上にあると仮定しますこのデータを /ifs/hadoop/backup/mydataディレクトリーのPowerScale Clusterにバックアップする例。
図1:IsilonへのHadoopクラスターのバックアップ
最もシンプルなバックアップ コマンドを以下に示します。
[gpadmin@phddas2-0 ~]$ hadoop distcp -skipcrccheck -update /mydata hdfs://all-nc-s-hdfs/backup/mydata
上記のコマンドは、Hadoopクライアント(hadoop)がインストールされている任意のホストで実行できます。コマンドを実行するユーザーには、ソース ファイルを読み取り、ターゲット ファイルを書き込む権限が必要です。
PowerScale Clusterに配置されているターゲット ファイルのCRCチェックを回避するには、-skipcrccheckオプションと-updateオプションを指定する必要があります。PowerScaleはHadoop CRCを格納しないため、計算にはコストがかかりすぎます。したがって、CRCチェックに関連するエラーを防止するには、これらのオプションが必要です。
次のパラメーター「/mydata」は、ソースHadoopクラスター上のソース パスです。これは、HDFSネームスペース全体をバックアップする「/」になる場合もあります。パスは完全修飾ではないため、core-site.xmlのfs.defaultFSパラメーターで指定されたHDFS NameNodeを使用します。
最後のパラメーター「hdfs://all-nc-s-hdfs/backup/mydata」は、PowerScale Cluster上のターゲット パスです。ホスト部分「all-nc-s-hdfs」は、all-nc-s-hdfs.example.comなどの相対または完全修飾DNS名にすることができます。PowerScale ClusterのSmartConnectゾーンDNS名である必要があります。ディレクトリーの「/backup/mydata」部分は、PowerScale Clusterアクセス ゾーンで定義されているHDFSルート パスに関連しています。HDFSルート パスが /ifs/hadoopの場合、この値は /ifs/hadoop/backup/mydataを参照します。
ソース ディレクトリーとターゲット ディレクトリーでサイズが同じファイルは変更されていないと見なされ、コピーされません。特に、ファイルのタイムスタンプは、変更されたファイルの判別には使用されません。DistCpの詳細については、『Hadoop DistCp Version 2 Guide』を参照してください。
権限のコピー
デフォルトでは、ターゲット ファイルの所有者、グループ、権限は、DistCpを開始するユーザーによって作成された新しいファイルのデフォルトにリセットされます。ソース ファイルに定義されている所有者、グループ、権限は失われます。ソース ファイルからこの情報を保持するには、-pオプションを使用します。-pオプションはchown/chgrpを実行する必要があるため、DistCpを開始するユーザーはターゲット システム上のスーパーユーザーである必要があります。PowerScale Clusterのルート ユーザーは、この目的のために機能します。例: [root@phddas2-0 ~]$ hadoop distcp -skipcrccheck -update -pugp /mydata hdfs://all-nc-s-hdfs/backup/mydata
バックアップ ソースのスナップショットの使用
大規模なデータセットのバックアップには時間がかかる場合があります。ディレクトリー構造がスキャンされるとき、DistCpプロセスの最初に存在するファイルが、そのファイルのコピー時には存在しなくなっていることがあります。このファイルの変更により、エラーが発生します。さらに、アプリケーションを使用するには、一貫性のある単一のポイントインタイム バックアップが必要になる場合があります。これらの問題に対処するには、バックアップ プロセス中にデータセットが変更されないように、ソースのHDFSスナップショットを作成することをお勧めします。これは、ターゲットのPowerScale ClusterのSnapshotIQ機能とは無関係です。
HDFSスナップショットを使用するには、まず特定のディレクトリーのスナップショットを許可する必要があります。[gpadmin@phddas2-0 ~]$ hdfs dfsadmin -allowSnapshot /mydata
Allowing snapshot on /mydata succeeded
DistCpを使用したバックアップの直前に、HDFSスナップショットを作成します。
[gpadmin@phddas2-0 ~]$ hdfs dfs -createSnapshot /mydata backupsnap Created snapshot /mydata/.snapshot/backupsnap
このスナップショットの名前はbackupsnapです。HDFSパス/mydata/.snapshot/backupsnapからアクセスできます。このスナップショットの後にHDFSファイルに加えた変更は、後続のバックアップには反映されません。次のコマンドを使用して、スナップショットをPowerScaleにバックアップできます。
[gpadmin@phddas2-0 ~]$ hadoop distcp -skipcrccheck -update /mydata/.snapshot/backupsnap hdfs://all-nc-s-hdfs/backup/mydata
バックアップ コマンドの実行が終了したら、スナップショットを削除できます。これにより、スナップショット以降に変更された古いバージョンのファイルを保持するために使用される領域が解放されます。
[gpadmin@phddas2-0~]$ hdfs dfs -deleteSnapshot /mydata backupsnap
バックアップ ターゲットにPowerScaleスナップショットを使用する
バックアップ ソースにスナップショットを使用する場合とは別に、古いバージョンのファイルをリストアするために、バックアップ ターゲット ディレクトリーの複数のスナップショットを保持したい場合があります。
PowerScaleでスナップショットを作成するには、SnapshotIQライセンスが必要です。スナップショットは、Web管理インターフェイスまたはCLIを使用して作成できます。CLIを使用して1つのPowerScaleスナップショットを手動で作成するには、任意のPowerScaleノードにSSHで接続し、次のコマンドを実行します。all-nc-s-1# isi snapshot snapshots create /ifs/hadoop/backup/mydata --name backup-2014-07-01 --expires 1D --verbose
Created snapshot backup-2014-07-01 with ID 6
このコマンドは、以下の「バックアップのスケジュール設定」セクションで説明するバックアップ プロセスに追加できます。
PowerScale OneFSスナップショットの詳細については、お使いのバージョンのOneFSのPowerScale OneFS CLI管理ガイドを参照してください。「PowerScale OneFS情報ハブ」
複数のPowerScale ClusterのSYNCIQレプリケーション
PowerScale ClusterへのDistCpバックアップが完了したら、OneFS SyncIQを使用して、WAN経由で他のPowerScale Clusterにスナップショットをレプリケートできます。レプリケートされたスナップショットは、ディザスター リカバリー戦略の汎用性と効率性に優れたコンポーネントを提供できます。
図2:複数のIsilon ClusterのSynIQレプリケーション
削除されたファイルの処理
デフォルトでは、ソースのHadoopクラスターから削除されたファイルはターゲットのHadoopクラスターから削除されません。この動作が必要な場合は、-delete引数をDistCpコマンドに追加します。このコマンドを使用する場合は、バックアップ ターゲットでスナップショットを使用して、削除されたファイルのリカバリーを許可することをお勧めします。
バックアップのスケジュール設定
さまざまな方法を使用して、Hadoopクラスターをバックアップする手順を自動化およびスケジュール設定できます。Apache Oozieは、Hadoopタスクの自動化によく使用され、DistCpを直接サポートしています。CRONはシェル スクリプトの実行にも使用できます。SSHセッションでコマンドの実行を自動化するには、パスワード不要のSSHを有効にします。パスワード不要のSSHを使用すると、CRONユーザーはHadoopクライアントとPowerScale Clusterに接続できます(SnapshotIQを使用している場合)。
PowerScaleのバックアップ ターゲット ファイルは、PowerScaleがHDFSをサポートしているため、ソース ファイルと同じ方法でHadoopアプリケーションからアクセスできます。最初に元のHadoop環境にリストアする必要はなく、バックアップ データを直接使用できます。この機能により、分析時間を節約できます。たとえば、次のようなMapReduceコマンドを実行する場合は、次のようになります。hadoop jar /usr/lib/gphd/hadoop-mapreduce/hadoop-mapreduce-examples.jar grep /mydata/mydataset1 output1 ABC
次のコマンドを使用して、PowerScale上のバックアップ データセットに対してMapReduceジョブを実行できます。hadoop jar /usr/lib/gphd/hadoop-mapreduce/hadoop-mapreduce-examples.jar grep hdfs://all-nc-s-hdfs/backup/ /mydata/mydataset1 output1 ABC
fs.defaultFSパラメーターを使用するのではなく、完全修飾Hadoopパスを指定するには、アプリケーション プロバイダーに詳細を確認してください。また、PowerScale Clusterは、ハイ パフォーマンス用ではなく、バックアップとアーカイブ用に設計されているため、プライマリーHadoop環境と同じパフォーマンスは得られない可能性があります。テストを実行することをお勧めします。または、Dell PowerScaleに相談して適切なサイズ設定を行ってください。