このトピックでは、Hadoop Distributed File System (HDFS) から Data Transport デバイスのネットワーク接続ストレージ (NAS) にデータを移行するためのタスクを作成および実行する方法について説明します。
データ移行中にデバイスでネットワークの切断または停電が発生した場合、一部のデータが移行されない可能性があります。移行ジョブを実行する前に、ネットワークと電源が信頼できるものであることを確認してください。
移行タスクの作成
移行プロセスが存在するかどうかを確認する
ps -ef | grep jarコマンドを実行します。master.jar、worker.jar、および tracker.jar ファイルが存在するかどうかを確認します。存在する場合は、kill -9 <PID> コマンドを実行して、master、worker、および tracker プロセスを停止します。
cd /mnt/cube1/software/ossimportコマンドを実行して、指定されたディレクトリに移動します。
hdfs-oss.cfg ファイルを構成する
移行タスクのデータが格納されるディレクトリを指定する必要があります。
HDFS ファイルシステムのすべてのデータを移行する場合は、1 つの移行タスクを作成します。
HDFS ファイルシステムの一部のディレクトリにあるデータを移行する場合は、ディレクトリごとに 1 つのタスクを作成します。
cd /mnt/cube1/software/ossimport/confコマンドを実行して、hdfs-oss.cfg ファイルを見つけます。移行タスクの数に基づいて hdfs-oss.cfg ファイルをコピーし、ファイルを区別します。たとえば、hdfs-oss1.cfg など、異なるファイル名を指定できます。
コマンドを実行して構成ファイルのいずれかを開き、ファイル内の次の表に示すパラメーターを指定します。
パラメーター
説明
jobName
タスク名。例: example_job。
srcType
データソースのタイプ。この例では、値は hdfs に設定されています。
srcAccessKey
スーパー管理者のユーザー名。この例では、値は hdfs に設定されています。
srcSecretKey
スーパー管理者のパスワード。この例では、値は hdfs に設定されています。
srcDomain
データソースへのアクセス パス。この例では、このパラメーターの値は hdfs://<HDFS のプライマリノードの IP アドレス>:<HDFS サービスポート> 形式です。例: hdfs://192.168.24.247:8020。
srcBucket
データソースが存在するバケット。この例では、デフォルト値は hdfs です。
srcPrefix
ソースパス。パスの末尾にスラッシュ (/) を追加する必要があることに注意してください。例: /mnt/nas/example_dir/。
destType
データの移行先。この例では、データは HDFS ファイルシステムから Data Transport デバイスの NAS に移行されます。値を local に設定します。
destPrefix
Data Transport デバイスにデータが格納される保存先パス。Data Transport デバイスのストレージプール 1 のパスは /mnt/cube1/data/ です。Data Transport デバイスのストレージプール 2 のパスは /mnt/cube2/data/ です。
auditMode
検証モード。値を simple に設定します。
タスクのデプロイと送信
console.sh スクリプトは HDFS ディレクトリにあります。HDFS ディレクトリで次の操作を実行します。
次のコマンドを実行して、Data Transport の組み込みサービスをデプロイします。
bash console.sh deploy次のコマンドを実行して、サービスを開始します。
bash console.sh start次のコマンドを実行して、プロセスが開始されたかどうかを確認します。
ps -ef | grep jarmaster.jar、worker.jar、および tracker.jar ファイルが存在する場合は、プロセスが開始されています。
次のコマンドを実行して、移行タスクを送信します。
bash console.sh submit conf/<構成ファイルの名前>
(オプション) 増分移行の構成
増分移行を構成する場合は、構成ファイルの次のパラメーターを変更する必要があります。
isIncremental: 増分移行モードを指定します。値をtrueに設定します。incrementalModeInterval: 増分移行を実行する間隔を指定します。単位: 秒。値は 900 未満にすることはできません。repeatCount: 増分移行の回数を指定します。30 以下の値を設定することをお勧めします。設定する値は、実際の増分移行回数に 1 を加えた値である必要があります。たとえば、増分移行を 2 回実行する場合は、repeatCountの値を 3 に設定する必要があります。
(オプション) sys.properties ファイルの構成
workerTaskThreadNum は、タスクを処理するスレッドの数を調整するために使用されます。小規模ファイルの数が多い場合は、スレッドの数を増やして移行速度を向上させることができます。
jobNetFlowLimiter は、デバイスの帯域幅を調整するために使用されます。デバイスまたはタスクの帯域幅を調整できます。
デバイスの帯域幅を調整するには、
worker-level-netflow-policy,<開始時間>:<終了時間>:<最大帯域幅>形式でパラメーター値を設定します。単位:バイト。 異なる期間に最大帯域幅値を指定する場合は、期間をカンマ (,) で区切ります。例:
jobNetFlowLimiter=worker-level-netflow-policy,080000:200000:52428800,200000:235959:104857600。これは、08:00:00 から 20:00:00 までの最大帯域幅が 50 MB/秒であり、20:00:00 から 23:59:59 までの最大帯域幅が 100 MB/秒であることを示しています。00:00:00 から 07:59:59 までは帯域幅は調整されません。タスクの帯域幅を調整するには、
<タスク名>,<開始時刻>:<終了時刻>:<最大帯域幅>形式でパラメーター値を設定します。単位: バイト。異なる期間に最大帯域幅値を指定する場合は、期間をコンマ (,) で区切ります。複数のタスクの帯域幅を調整する場合は、タスクをセミコロン (;) で区切ります。例:
jobNetFlowLimiter=job1,080000:200000:41943040,200000:235959:62914560;job2,080000:180000:10485760,220000:235959:20971520。これは、job1 タスクの 08:00:00 から 20:00:00 までの最大帯域幅が 40 MB/秒であり、job1 タスクの 20:00:00 から 23:59:59 までの最大帯域幅が 60 MB/秒であることを示しています。job1 タスクの帯域幅は、00:00:00 から 07:59:59 までは調整されません。job2 タスクの場合、08:00:00 から 18:00:00 までの最大帯域幅は 10 MB/秒であり、22:00:00 から 23:59:59 までの最大帯域幅は 20 MB/秒です。その他の期間中は帯域幅は調整されません。
(オプション) 移行タスクの再試行
タスクが失敗した場合は、bash console.sh retry [job_name] コマンドを実行してタスクを再試行できます。
ログの表示
ossimport/workdir/logs/ ディレクトリには、ファイルのアップロードステータスとタスクのステータスを記録するログがいくつか格納されています。
タスクの進行状況ログ
job_status.logファイルは 30 秒ごとに更新され、タスクのステータスを記録するために使用されます。次のセクションでは、ファイル内のパラメーターについて説明します。jobname はタスク名を示します。
jobState はタスクステータスを示します。running 状態は、タスクが進行中であることを示します。succeed 状態は、タスクが成功したことを示します。failed 状態は、タスクが失敗し、一部のファイルのデータが正常に移行されなかったことを示します。
pending task count は、配信待ちのタスクの数を示します。
dispatched task count は、配信されたタスクの数を示します。
succeed task count は、成功したタスクの数を示します。
failed task count は、失敗したタスクの数を示します。
is scan Finished は、データスキャンが完了したかどうかを示します。値 true は、スキャンが完了したことを示します。値 false は、スキャンが完了していないことを示します。isIncremental を true に設定した場合、値は常に false になることに注意してください。
ファイルアップロードログ
fileStatusForSls_v1.logファイルには、ファイルアップロードのログが記録されます。ファイルがアップロードされるたびにログエントリが生成されます。フィールドはコンマ (,) で区切られます。次のセクションでは、ファイルに記録されたフィールドの対応する場所情報について説明します。列 4: ファイルパス名。
列 6: タスク名。
列 12: ファイルの移行状態。有効な値: succeed および failed。
列 13: 失敗の原因。
列 16: オブジェクトサイズ。
タスクステータスログ
jobsForSls_v1.log ファイルには、タスクのステータスが記録され、すべてのタスクが完了するまで毎分更新されます。次のセクションでは、ファイルに記録された情報について説明します。
列 5: タスク名。
列 9: タスクステータス。
列 14: ファイルの総数。
列 15: ファイルの合計サイズ。
列 16: データが正常に移行されたファイルの数。
列 17: データが正常に移行されたファイルのサイズ。
列 21: データスキャンが完了したかどうかを示します。値 1 は、スキャンが完了したことを示します。値 0 は、スキャンが完了していないことを示します。