このトピックでは、分散モードで ossimport をデプロイする方法について説明します。 ossimport を分散モードでデプロイできるのは Linux のみです。
前提条件
少なくとも 2 台のマシンで構成されるクラスターがデプロイされています。1 台のマシンはマスターとして使用され、他のマシンはワーカーとして使用されます。
マスターとワーカー間で SSH 接続が確立されています。
すべてのワーカーは同じユーザー名とパスワードを使用します。
説明マスターとワーカー間で SSH 接続が確立されているか、sys.properties ファイルにワーカーのログイン資格情報が構成されていることを確認してください。
ossimport をダウンロードしてインストールする
ossimport のインストールパッケージをダウンロードします。
ossimport-2.3.7.tar.gz をマシンにダウンロードします。
ossimport をインストールします。
説明以降のすべての操作はマスターで実行されます。
マスターにログインし、次のコマンドを実行して ossimport ディレクトリを作成します。
mkdir -p $HOME/ossimport
パッケージのディレクトリに移動し、次のコマンドを実行してパッケージを指定したディレクトリに展開します。
tar -zxvf ossimport-2.3.7.tar.gz -C $HOME/ossimport
パッケージを展開した後のディレクトリ構造は次のとおりです。
ossimport ├── bin │ ├── console.jar # コンソールモジュールの JAR パッケージ。 │ ├── master.jar # マスターモジュールの JAR パッケージ。 │ ├── tracker.jar # トラッカーモジュールの JAR パッケージ。 │ └── worker.jar # ワーカーモジュールの JAR パッケージ。 ├── conf │ ├── job.cfg # ジョブ構成ファイルテンプレート。 │ ├── sys.properties # システムパラメータを含む構成ファイル。 │ └── worker.jar # ワーカーの構成ファイル。 ├── console.sh # コマンドラインツール。 Linux のみサポートされています。 ├── logs # ログを格納するディレクトリ。 └── README.md # ossimport の説明を提供するファイル。 ossimport を使用する前に、このファイルを読むことをお勧めします。
OSS_IMPORT_HOME: ossimport のルートディレクトリ。 デフォルトでは、ルートディレクトリは展開コマンドの
$HOME/ossimport
です。export OSS_IMPORT_HOME=<dir>
コマンドを使用するか、システム構成ファイルの$HOME/.bashrc
設定項目を変更することで、ルートディレクトリを指定できます。 デフォルトのルートディレクトリを使用することをお勧めします。OSS_IMPORT_WORK_DIR: ossimport の作業ディレクトリ。
conf/sys.properties
ファイルのworkingDir
パラメーターを構成することで、作業ディレクトリを指定できます。 作業ディレクトリとして$HOME/ossimport/workdir
を使用することをお勧めします。OSS_IMPORT_HOME または OSS_IMPORT_WORK_DIR には絶対パス(
/home/<user>/ossimport
や/home/<user>/ossimport/workdir
など)を指定します。
構成ファイルを変更する
分散モードでデプロイされた ossimport を使用する前に、ビジネス要件に基づいて次の構成ファイルを変更します。conf/sys.properties
、conf/job.cfg
、conf/workers
。
conf/job.cfg
: 分散モードでジョブを構成するために使用される構成ファイルテンプレート。 ビジネス要件に基づいてパラメーターを変更します。conf/sys.properties
: 作業ディレクトリやワーカー関連のパラメーターなど、システムパラメーターを含む構成ファイル。conf/workers
: ワーカーの構成ファイル。
移行ジョブを送信する前に、
sys.properties
ファイルとjob.cfg
ファイルのパラメーターを確認してください。 移行ジョブのパラメーターは、ジョブの送信後は変更できません。サービスを開始する前に、
workers
ファイルを構成して確認してください。 サービスの開始後は、ワーカーを追加または削除できません。
移行ジョブを実行および管理する
移行ジョブを実行する
分散モードでデプロイされた ossimport を使用して移行ジョブを実行する場合、ほとんどの場合、次の手順を実行する必要があります。
サービスをデプロイします。 Linux で bash console.sh deploy コマンドを実行します。 このコマンドは、conf/workers 構成ファイルで指定されたすべてのマシンに ossimport をデプロイします。
説明サービスをデプロイする前に、conf/job.cfg 構成ファイルと conf/workers 構成ファイルが正しく構成されていることを確認してください。
同じ名前の既存のジョブをクリアします。 既存のジョブと同じ名前の移行ジョブを実行する場合は、最初に既存のジョブをクリアします。 新しい移行ジョブを実行する場合、または移行ジョブの失敗したタスクを再試行する場合は、clear コマンドを実行しないでください。 既存のジョブをクリアするには、Linux で
bash console.sh clean job_name
コマンドを実行します。移行ジョブを送信します。 移行ジョブの名前が一意であることを確認してください。
移行ジョブを送信するには、構成ファイルが必要です。
conf/job.cfg
テンプレートファイルに基づいて、ジョブ構成ファイルを作成できます。 移行ジョブを送信するには、Linux でbash console.sh submit [job_cfg_file]
コマンドを実行します。 コマンドでは、job_cfg_file
パラメーターはオプションであり、デフォルトで$OSS_IMPORT_HOME/conf/job.cfg
に設定されます。ここで、$OSS_IMPORT_HOME
はconsole.sh
ファイルを含むディレクトリを指定します。サービスを開始します。 Linux で
bash console.sh start
コマンドを実行します。ジョブステータスを表示します。 Linux で
bash console.sh stat
コマンドを実行します。失敗したタスクを再試行します。 ネットワークの問題などの理由でタスクが失敗することがあります。 retry コマンドを実行すると、失敗したタスクのみが再試行されます。 失敗したタスクを再試行するには、Linux で
bash console.sh retry [job_name]
コマンドを実行します。 コマンドでは、job_name
パラメーターはオプションであり、失敗したタスクを再試行するジョブを指定します。 このパラメーターを指定しない場合、すべてのジョブの失敗したタスクが再試行されます。サービスを停止します。 Linux で
bash console.sh stop
コマンドを実行します。
注:
bash console.sh
コマンドの実行時に指定されたパラメーターが無効な場合、有効なコマンド形式が表示されます。構成ファイルと送信された移行ジョブでは絶対パスを指定することをお勧めします。
job.cfg
ファイルには、ジョブ構成項目が含まれています。重要ジョブの送信後、ファイル内の移行ジョブの構成項目を変更することはできません。
ジョブの失敗の一般的な原因
移行中にソースデータが変更された場合、
log/audit.log
ファイルにSIZE_NOT_MATCH
エラーが記録されます。 このエラーは、元のデータがアップロードされたが、変更が Object Storage Service (OSS) にアップロードされていないことを示します。移行中にソースデータが削除された場合、移行ジョブは失敗します。
ソースファイルが OSS オブジェクトの命名規則に準拠していない場合、OSS への移行は失敗します。 OSS のオブジェクトの名前はスラッシュ (/) で始めることができず、空にすることもできません。
ソースファイルのダウンロードに失敗します。
移行ジョブの実行中に ossimport が予期せず終了した場合、ジョブの状態は中止になります。 この場合は、テクニカルサポートに連絡してください。
ジョブステータスとログを表示する
移行ジョブが送信されると、マスターはジョブをタスクに分割し、ワーカーはタスクを実行し、トラッカーはタスクステータスを収集します。 次のコードは、ジョブ完了後の workdir ディレクトリの構造を示しています。
workdir ├── bin │ ├── console.jar # コンソールモジュールの JAR パッケージ。 │ ├── master.jar # マスターモジュールの JAR パッケージ。 │ ├── tracker.jar # トラッカーモジュールの JAR パッケージ。 │ └── worker.jar # ワーカーモジュールの JAR パッケージ。 ├── conf │ ├── job.cfg # ジョブ構成ファイルテンプレート。 │ ├── sys.properties # システムパラメータを含む構成ファイル。 │ └── worker.jar # ワーカーの構成ファイル。 ├── logs │ ├── import.log # 移行ログ。 │ ├── master.log # マスターモジュールのログ。 │ ├── tracker.log # トラッカーモジュールのログ。 │ └── worker.log # ワーカーモジュールのログ。 ├── master │ ├── jobqueue # 分割されていないジョブ。 │ └── jobs # ジョブに関する情報。 │ └── xxtooss # ジョブの名前。 │ ├── checkpoints # マスターがジョブをタスクに分割するときに生成されるチェックポイント。 │ │ └── 0 │ │ └── ED09636A6EA24A292460866AFDD7A89A.cpt │ │── dispatched # ワーカーにディスパッチされたが完了していないタスク。 │ │ └── 192.168.1.6 │ │── failed_tasks # 失敗したタスク。 │ │ └── A41506C07BF1DF2A3EDB4CE31756B93F_1499348973217@192.168.1.6 │ │ ├── audit.log # タスクの実行ログ。 ログを表示してエラー原因を特定できます。 │ │ ├── DONE # タスクの完了を示すマークファイル。 タスクが失敗した場合、内容は空です。 │ │ ├── error.list # タスクのエラー。 ファイル内のエラーを表示できます。 │ │ ├── STATUS # タスクステータスを示すマークファイル。 このファイルの内容は、失敗または完了です。 │ │ └── TASK # タスクの説明。 │ ├── pending_tasks # ディスパッチされていないタスク。 │ └── succeed_tasks # 正常に実行されたタスク。 │ └── A41506C07BF1DF2A3EDB4CE31756B93F_1499668462358@192.168.1.6 │ ├── audit.log # タスクの実行ログ。 ログを表示してエラー原因を特定できます。 │ ├── DONE # タスクの完了を示すマークファイル。 │ ├── error.list # タスクのエラー。 タスクが成功した場合、内容は空です。 │ ├── STATUS # タスクステータスを示すマークファイル。 このファイルの内容は、失敗または完了です。 │ └── TASK # タスクの説明。 └── worker # ワーカーによって実行されているタスク。 タスクが実行された後、それらはマスターによって管理されます。 └── jobs ├── local_test2 │ └── tasks └── local_test_4 └── tasks
重要ジョブに関する情報を表示するには、
logs/import.log
ファイルを確認します。失敗したタスクのトラブルシューティングを行うには、
master/jobs/${JobName}/failed_tasks/${TaskName}/audit.log
ファイルを確認します。失敗したタスクのエラーを表示するには、
master/jobs/${JobName}/failed_tasks/${TaskName}/error.list
ファイルを確認します。上記のログは参考用です。 これらのログに基づいてサービスとアプリケーションをデプロイしないでください。
移行結果を確認する
ossimport は移行後にデータの検証を行わないため、データの整合性または完全性は保証されません。 移行ジョブが完了したら、移行元と移行先の間のデータ整合性を必ず確認してください。
移行元と移行先の間のデータ整合性を確認せずにソースデータを削除した場合、発生する損失と結果については、お客様の責任となります。
一般的なエラーとトラブルシューティング
一般的なエラーとトラブルシューティングの詳細については、「よくある質問」をご参照ください。