edit-icon download-icon

アーキテクチャと構成

最終更新日: Jul 30, 2018

概要

OssImport ツールを使用すると、ローカルまたは他のクラウドストレージシステムに格納されたデータを OSS に移行できます。以下の特徴があります:

  • ローカルドライブ、Qiniu、Baidu BOS、AWS S3、Azure Blob、Youpai Cloud、Tencent Cloud COS、Kingsoft KS3、HTTP、OSSなどの豊富なデータソースをサポートし、必要に応じて拡張できます。
  • 再開可能なデータ転送をサポートします。
  • トラフィック制御をサポートします。
  • 指定された時刻または指定された接頭辞の後にオブジェクトを移行することをサポートします。
  • パラレルデータのアップロードとダウンロードをサポートします。
  • スタンドアロンモードと分散モードをサポートします。スタンドアロンモードは展開と使用が容易で、分散モードは大規模なデータ移行に適しています。

環境

Java 1.7 以降

アーキテクチャー

OssImport には、スタンドアロンモード分散モード の 2 つの展開モードがあります。スタンドアロンモードは、データが 30 TB 未満の小規模なデータ移行には十分です。大規模なデータ移行には分散モードを推奨します。
スタンドアローンモードは、30 TB未満の小規模なデータ移行の用途には最適です、[ダウンロード]

大規模なデータ移行には分散モードをお勧めします。[ダウンロード]

スタンドアロン

master、worker、tracker、および console は、同じマシン上で実行されます。システムには 1 つの worker しかありません。スタンドアロンモードの展開と実行をカプセル化して最適化し、スタンドアロンの展開と実行は非常に簡単です。スタンドアロンモードでは、master、worker、tasktracker、および console モジュールは ossimport2.jar にパッケージ化されています。

スタンドアロンモードのファイル構造は次のとおりです。

  1. ossimport
  2. ├── bin
  3. └── ossimport2.jar # The JAR including master, worker, tracker, and console modules
  4. ├── conf
  5. ├── local_job.cfg # Standalone job configuration file
  6. └── sys.properties # Configuration file for the system running parameters
  7. ├── console.bat # Windows command line, which can execute distributed call-in tasks
  8. ├── console.sh # Linux command line, which can execute distributed call-in tasks
  9. ├── import.bat # The configuration file for one-click import and execution in Windows is the data migration job configured in conf/local_job.cfg, including start, migration, validation, and retry
  10. ├── import.sh # The configuration file of one-click import and execution in Linux is the data migration job configured in conf/local_job.cfg, including start, migration, validation, and retry
  11. ├── logs # Log directory
  12. └── README.md # Description documentation. We recommend that you carefully read the documentation before using this feature

注意:

  • import.bat または import.sh ファイルは、ワンクリックでインポートするスクリプトで、 local_job.cfg への変更が完了した直後に実行できます。
  • console.bat または console.sh はコマンドラインツールであり、コマンドの分散実行に使用できます。
  • スクリプトやコマンドを ossimportディレクトリ、つまり*.bat/*.shと同じレベルのディレクトリに実行します。
  • 分散
    OssImport は、下の図に示すように、 master-worker 分散アーキテクチャに基づいています。
  1. Master --------- Job --------- Console
  2. |
  3. |
  4. TaskTracker
  5. |_____________________
  6. |Task | Task | Task
  7. | | |
  8. Worker Worker Worker
  • Job:ユーザーが送信したデータ移行ジョブ。ユーザーの場合、1つのジョブは1つの構成ファイル job.cfg に対応します。

  • Task:ジョブは、データサイズとファイル数によって複数のタスクに分けられます。各タスクは、ファイルの一部を移行します。ジョブをタスクに分割するための最小単位はファイルです。1つのファイルを複数のタスクに分割することはできません。

OssImport ツールモジュールは、次の表のとおりです。

ロール説明
Masterマスタは、データサイズとファイル数によってジョブを複数のタスクに分割する役割を担います。sys.properties でデータサイズとファイル数を設定することができます。
ジョブを複数のタスクに分割する詳細なプロセスは、次のとおりです。
- マスターノードは、マイグレーションするファイルの完全リストをローカル/他のクラウドストレージデバイス.
-マスタは、データサイズとファイル数によってタスクにフルファイルリストを分割し、各タスクはファイルの一部の移行または検証を行います。
Worker- ワーカーはファイルマイグレーションとタスクのデータ検証を担当します。特定のファイルをデータソースから取り出し、ファイルを指定されたディレクトリにOSSにアップロードします。 job.cfg または local_job.cfg で、移行するデータソースとOSS構成を指定できます。
- ワーカーデータ移行では、トラフィックの制限と並行タスクの数の指定がサポートされています。 sys.properties で設定を構成できます。
TaskTrackerTaskTracker は Tracker と略されています。タスクの分散とタスクの状態の追跡を行います。
Consoleコンソールは、ユーザーと対話し、コマンド表示結果を受け取る役割を担います。 deploy start stop などのシステム管理コマンド、および submit retry clean などのジョブ管理コマンドをサポートしています。

分散モードでは、データ移行のために複数のワーカーノードを開始できます。タスクはワーカーノードに均等に割り当てられ、1 つのワーカーノードは複数のタスクを実行できます。1 台のマシンでは、1 つのワーカーノードしか開始できません。マスターは workersで設定された最初のワーカーノードと同時に起動され、tasktracker と console もマシン上で実行されます。

分散モードのファイル構造は次のとおりです。

  1. ossimport
  2. ├── bin
  3. ├── console.jar # The JAR package of the console module
  4. ├── master.jar # The JAR package of the master module
  5. ├── tracker.jar # The JAR package of the tracker module
  6. └── worker.jar # The JAR package of the worker module
  7. ├── conf
  8. ├── job.cfg # The template of the job configuration file
  9. ├── sys.properties # Configuration file for the system running parameters
  10. └── workers # Worker list
  11. ├── console.sh # The command line tool. Currently it only supports Linux
  12. ├── logs # Log directory
  13. └── README.md # Description documentation. We recommend that you carefully read the documentation before using the feature

注意:分散コマンドラインツール console.sh は現在 Linux のみをサポートしており、Windows はサポートしていません。

設定ファイル

スタンドアロンモードでは、 sys.properties local_job.cfg の 2 つの設定ファイルがあります。分散モードでは、 sys.properties local_job.cfg workers の 3 つの設定ファイルがあります。具体的には、 local_job.cfg job.cfg は同一ですが、名前は異なります。 workers ファイルは分散環境専用です。

sys.properties

システム実行パラメータ。

フィールド 意味 説明
workingDir 作業ディレクトリ - ツールキットが抽出された後のディレクトリです。
- スタンドアロンモードでこのオプションを変更しないでください。
- 各マシンの作業ディレクトリは、分散モードで同じでなければなりません。
workerUser ワーカーマシンの SSH ユーザー名 - privateKeyFile を構成している場合、privateKeyFile が優先順位で使用されます。
- privateKeyFile が構成されていない場合、workerUser/workerPassword の組み合わせが使用されます。
- スタンドアロンモードでこのオプションを変更しないでください。
workerPassword ワーカーマシンの SSH ユーザー・パスワード このオプションはスタンドアロン・モードでは変更しないでください。
privateKeyFile 公開鍵のファイルパス - SSHチャネルを確立している場合は、公開鍵ファイルのパスを指定できます。それ以外の場合は、空のままにします。
- privateKeyFile を設定している場合は、privateKeyFile が優先されます。
- privateKeyFile が設定されていない場合、workerUser/workerPassword が使用されます。
- スタンドアロンモードでこのオプションを変更しないでください。
sshPort SSH ポート デフォルト値は22です。通常は変更する必要はありません。スタンドアロンモードでこのオプションを変更しないでください。
workerTaskThreadNum ワーカーがタスクを実行する最大スレッド数 - このパラメータは、マシンのメモリとネットワークに関連しています。推奨値は 60 です。
- 物理マシンの場合は、値を 150 に増やすことができます。ネットワーク帯域幅がすでに上限に達している場合は、さらに値を大きくしないでください。
- ネットワークが不十分な場合は、適切な値(たとえば30)を減らします。この方法で、要求からの多数の要求のタイムアウトを回避できます。
workerMaxThroughput(KB/s) ワーカーノード上のデータ移行トラフィックの上限 この値は、トラフィックを制限します。デフォルト値 0 は、トラフィック制限が課せられていないことを示します。
dispatcherThreadNum タスク配布用のスレッド数とトラッカーのステータス確認 基本的にはデフォルト値を使用します。特別な要件がない場合は、デフォルト値を変更する必要はありません。
workerAbortWhenUncatchedException 不明なエラーが発生した場合にスキップするか、中止するかどうか 不明なエラーはデフォルトでスキップされます。
workerRecordMd5 メタデータ x-oss-meta-md5 を使用して、OSS 内の移行されたファイルの MD5 値を記録するかどうか。デフォルト設定は NO 主に MD5 を使用したファイルデータ検証に使用されます。
  • job.cfg

データ移行ジョブの構成。 local_job.cfg job.cfg オプションは、名前以外は同じです。

フィールド 意味 説明
jobName ジョブ名、文字列 - ジョブの一意の識別子。命名規則は[a-zA-Z0-9 _-] {4,128}です。それは、異なる名前の複数のジョブの提出をサポートします。
- 別のジョブと同じ名前のジョブをサブミットすると、ジョブがすでに存在することを知らせるメッセージが表示されます。元のジョブを名前でクリーンアップする前に、同じ名前のジョブをサブミットすることはできません。
jobType ジョブの種類、文字列 2つのタイプがあります: import audit 。デフォルト値は import です。
- import:データ移行を実行し、移行されたデータの整合性を検証します。
- audit:データの一貫性のみを検証します。
isIncremental 増分マイグレーション・モードを boolean 値として使用可能にするかどうか - デフォルト値:False。
- true に設定すると、incrementalModeInterval(単位:秒)で指定された間隔で増分データが再スキャンされ、OSSに同期されます。
incrementalModeInterval インクリメンタル・モードでの同期間隔、整数値。単位:秒 isIncremental = trueの場合に有効です。設定可能な最小間隔は 900 秒です。3,600 秒より小さい値に設定することは推奨されません。これは、多数の要求が無駄になり、システムのオーバーヘッドが増加するためです。
importSince この時間値よりも後でデータをマイグレーションします。これは整数値です。単位:秒 - この時刻の値は UNIX のタイムスタンプ。つまり 1970 年 1 月 1 日の UTC00:00 以降の秒数です。
srcType 同期ソース・タイプ、文字列。大文字と小文字を区別する 現在、このパラメータは、local、oss、qiniu、bos、ks3、s3、youpai、HTTP、cos、azure などの 10 種類をサポートしています。
- local:ローカルファイルから OSS にデータを移行します。このオプションの srcPrefix を入力するだけで済みます。srcAccessKey、srcSecretKey、srcDomain、および srcBucket を入力する必要はありません。
- oss:あるバケットから別のバケットにデータを移行します。
- qiniu:QiniuクラウドストレージからOSSにデータを移行します。
- bos:BaiduクラウドストレージからOSSにデータを移行します。
- ks3:KingsoftのクラウドストレージからOSSにデータを移行します。
- s3:AWS S3からOSSにデータを移行します。
- youpai:Youpai CloudからOSSにデータを移行します。
- HTTP:提供されたHTTPリンクリストを使用してOSSにデータを移行します。
- cos:TencentクラウドストレージCOSからOSSにデータを移行します。
- azure:Azure BLOBからOSSにデータを移行します。
srcAccessKey ソース AccessKey、文字列 srcType が oss、qiniu、baidu、ks3 または s3 に設定されている場合は、データソースの AccessKey を入力します。
- またはローカルと HTTP のタイプの場合、このオプションは空のままにすることができます。
- Youpai タイプと Azure タイプの場合は、AccountName を入力します。
srcSecretKey ソース SecretKey、文字列 srcType が oss、qiniu、baidu、ks3 または s3 に設定されている場合は、データソースの SecretKey を入力します。
ローカルおよび HTTP タイプの場合、このオプションは空のままにできます。
- youpai:オペレータのパスワードを入力します。
- azure:AccountKey。
srcDomain ソースエンドポイント srcType がローカルまたは HTTP に設定されている場合、この設定項目は不要です。
- oss:コンソールから取得したドメイン名。これはバケット接頭辞のない第2レベルのドメイン名です。ドメイン名リストに完全なリストがあります。
- qiniu:該当のドメイン名バケット BaiduのBOSのドメイン名は、http:// bj.bcebos.comまたはhttp://gz.bcebos.com のようなドメイン名になります。
- Kingsoft ks3:http://kss.ksyun.comもしくはhttp://ks3-cn-beijing.ksyun.comもしくはhttp://ks3-us-west-のようなドメイン名になります。様々な地域のS3ドメイン名とAWS S3ドメイン名は、S3エンドポイントで見つけることができます。
- youpai:Youpai Cloudのドメイン名。例えば光回線のhttp://v0.api.upyun.com、または通信回線のhttp:// v1.api.upyun.com、または中国聯通または中国ネットコム回線のhttp:// v2.api.upyun.comまたは中国携帯電話または中国 Railcom の http://v3.api.upyun.comがあります。
- cos: バケットなど中国南部などテンセントクラウドのリージョン:南中国:gz、北中国:tj、東中国:shがあります。
- azure:core.chinacloudapi.cn などの EndpointSuffixがあります。
srcBucket 送信元バケットまたはコンテナの名前 srcType がローカルまたは HTTP に設定されている場合、この設定項目は不要です。
azure:Azure BLOBのコンテナ名を入力し、他のバケット名を入力します。
srcPrefix ソースプレフィックス、文字列。デフォルト値は空です。 srcTypeが local に設定されている場合は、ローカルディレクトリを完全に入力、または、分割、 / c:/example/または/data/example/で終わるものとします。
srcTypeは、OSS、qiniu、BOS、KS3、youpaiまたはS3がある場合は、値は、オブジェクトのプレフィックスがなく、すべてのオブジェクトはsrcPrefixが空の状態で同期されます。
destAccessKey 宛先AccessKey、文字列 OSS AccessKeyIDを表示するには、コンソールにログオンします。
destSecretKey 宛先SecretKey、文字列 OSS AccessKeySecretを表示するには、コンソールにログオンします。
destDomain 宛先エンドポイント、文字列 コンソールから取得します。これはバケット接頭辞のない第2レベルのドメイン名です。完全なリストはドメイン名リストにあります。
destBucket 宛先バケット、文字列 OSSバケット名。 / で終わる必要はありません。
destPrefix 宛先プレフィックス、文字列。デフォルト値は空です。 - 宛先プレフィックス。デフォルト値は空です。
オブジェクトが宛先バケット置かれている場合
- OSS上の特定のディレクトリにデータを同期させる場合は、data/in/oss/のようなプレフィックスになります。
- OSSはオブジェクトプレフィックスとして / をサポートしていないので、 / で始まるdestPrefixを設定しないでください。
- パス srcPrefix + relativePath のローカルファイルは、OSSの destDomain / destBucket / destPrefix + relativePath に移行されます。
- パス srcDomain / srcBucket / srcPrefix + relativePath 内のクラウド上のオブジェクトは、OSS上の destDomain / destBucket / destPrefix + relativePath に移行されます。
taskObjectCountLimit タスク内のファイルの最大数(整数)。デフォルト値は10,000です。 この構成オプションは、実行されたジョブの並行性に影響します。一般的には、ファイルの総数/ワーカーの総数/マイグレーションスレッドの数(workerTaskThreadNum)に設定され、最大数は50,000に設定されます。ファイルの総数が不明な場合は、デフォルト値を使用してください。
taskObjectSizeLimit タスク内の最大データサイズ、整数。単位:バイト。デフォルト値は1 GBです。 この構成オプションは、実行されたジョブの並行性に影響します。一般的に、設定は合計データサイズ/ワーカーの総数/マイグレーションスレッドの数(workerTaskThreadNum)に設定されます。 合計データ・サイズが不明な場合は、デフォルト値を使用してください。
isSkipExistFile データ移行中に既存のオブジェクトをスキップするかどうか、ブール値。 trueに設定すると、オブジェクトはサイズとLastModifiedTimeに従ってスキップされます。falseに設定すると、既存のオブジェクトが上書きされます。デフォルト値はfalseです。jobTypeが監査に設定されている場合、このオプションは無効です。
scanThreadCount パラレルファイルスキャンのスレッド数(整数)。デフォルト値は1です。 この構成オプションは、ファイルのスキャン効率に関連しています。特別な要件がない場合は、構成を変更しないでください。
maxMultiThreadScanDepth パラレルスキャンのディレクトリの最大許容深度(整数)。デフォルト値は1です。 デフォルト値1は、最上位ディレクトリのパラレルスキャンを示します。
特別な要件がない場合は、この構成を変更しないでください。値が大きすぎると、ジョブが正常に実行されないことがあります。
appId Tencent COSのappId、整数。 srcTypeが cos に設定されている場合に有効です。
httpListFilePath HTTPリストファイルの絶対パス、文字列 - srcTypeがHTTPに設定されている場合に有効です。ソースがHTTPリンクアドレスの場合、 c:/example/http.list のように、HTTPリンクアドレスをコンテンツとして持つファイルの絶対パスを指定する必要があります。
ファイルは、アップロード後のOSS上の接頭辞と相対パスを表すスペースで区切られた2つのカラムに分けられます。例えば、c:/example/http.list のように、http: /mingdi-hz.oss-cn-hangzhou.aliyuncs.com/aa/bb.jpg http://mingdi-hz.oss-cn-hangzhou.aliyuncs.com/cc/dd.jpgのオブジェクト名それらが OSS に移行された後の 2 行は、それぞれ destPrefix + bb.jpg および destPrefix + cc/dd.jpg になります。

Workers

ワーカーは分散モード専用で、すべての IP アドレスは次のような行です。

  1. 192.168.1.6
  2. 192.168.1.7
  3. 192.168.1.8

注意:

  • 前の設定では、マスタ、ワーカー、タスクトラッカーは 192.168.1.6 で起動され、コンソールもマシン上で実行する必要があります。
  • 複数のワーカーモードのユーザー名、ログオンモード、作業ディレクトリが同じであることを確認します。

設定ファイルの例

次の表に、分散配備のデータ移行タスクプロファイルを示します。スタンドアロンマシンの構成ファイル名はlocal_job.cfgです。構成アイテムと分散配備の違いはありません。

以降タイプ 設定ファイル 説明|
OSSにローカルで移行 job.cfg Srcprefixは、/work/oss/data /、/home/user/work/oss/data/のような/の末尾の絶対パスです。
Seven Bull Cloud ストレージからOSSへ移行 job.cfg Srcprefix と DESTIN の prefix は空に設定できます。空でない場合は/終わること、例:destPrefix = docs/
Baidu BosからOSSへの移行 job.cfg SrcprefixとDESTIN接頭辞は空に設定できます。空でない場合は/終わること、例:destPrefix = docs/
AWS S3からOSSへの移行 job.cfg S3用のドメイン名
クラウドストレージからOSSに再び移動 job.cfg Srcaccesskey / Scannerはオペレータのアカウント番号とパスワードを入力します
Tencent COs から OSS への移行 job.cfg Srcdomain srcDomain = shのようなV4のバージョンに従ってください。srcPrefix属性は空白での使用可能です、空でない場合は/で始まり/終わること、例:srcPrefix=/docs/
AzureのBLOBからOSSへの移行 job.cfg Srcaccesskey/srcsecretkeyはストレージのcun chuとkeyを埋める。 srcdomain接続文字列を入力します。core.chinacloudapi.cnなどのエンドポイントサフィックスを使用する。
OSSからOSSへの移行 job.cfg これは、異なる地域間、異なるストレージタイプ間、および異なるプレフィックス間のデータ移行に適しています。 ECSに展開し、トラフィックを節約するために内部にドメイン名を使用することをお勧めします。
高速チャネルを使用してOSSにデータを移行する job.cfg すべてのデータソースに適用。高速移行要件がある場合、ジョブを送信またはOSSサポートに連絡してください。