概要

OssImport ツールを使用すると、ローカルまたは他のクラウドストレージシステムに保存されているデータを OSS に移行できます。 次のような機能があります。

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

環境

  • Java 1.7 以降

アーキテクチャ

OssImport には、スタンドアロンモードと分散モードの 2 つの展開モードがあります。

  • スタンドアロンモードは、30 TB 未満の小規模なデータ移行には十分です。 ダウンロード
  • ダウンロード大規模なデータ移行には、分散モードを推奨します。 ダウンロード
  • スタンドアロン

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

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

    ossimport
    ├── bin
    │ └── ossimport2.jar  # The JAR including master, worker, tracker, and console modules
    ├── conf
    │ ├── local_job.cfg   # Standalone job configuration file
    │ └── sys.properties  # Configuration file for the system running
    ├── console.bat         # Windows command line, which can run distributed call-in tasks
    ├── console.sh          # Linux command line, which can run distributed call-in tasks
    ├── 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
    ├── 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
    ├── logs                # Log directory
    └── README.md           # Description documentation. We recommend that you carefully read the documentation before using this feature

    注記:

    • mport.bat または import.sh ファイルはワンクリックのインポートスクリプトであり、local_job.cfg への変更が完了した後、直接実行します。
    • console.bat または console.sh はコマンドラインツールであり、コマンドの分散実行に使用します。
    • スクリプトやコマンドは、ossimport ディレクトリ、つまり *.bat/*.sh と同じレベルのディレクトリで実行します。
  • 分散

    下の図に示すように、 OssImport は master-worker 分散アーキテクチャに基づいています。

    Master --------- Job --------- Console
        |
        |
       TaskTracker
        |_____________________
        |Task     | Task      | Task
        |         |           |
    Worker      Worker      Worker

    図の説明:

    • Job: ユーザーによって送信されたデータ移行ジョブ。 ユーザーは 1 つのジョブは 1 つの構成ファイル job.cfg に対応します。
    • Task: ジョブはデータサイズとファイル数によって複数のタスクに分割できます。 各タスクはファイルの一部を移行します。 ジョブをタスクに分割するための最小単位はファイルです。 1 つのファイルを複数のタスクに分割することはできません。

    OssImport ツールモジュールは次のテーブルに一覧表示されています。

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

    分散モードでは、データ移行のため、複数のワーカーノードを開始できます。   タスクはワーカーノードに均等に割り当てられ、1 つのワーカーノードで複数のタスクを実行できます。 1 台のマシンで開始できるワーカーノードは 1 つだけです。 マスターは、workers で設定された最初のワーカーノードと同時に開始され、タスクトラッカーとコンソールもマシン上で実行されます。

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

    ossimport
    Miss -- Bin
    │ ├── console.jar     # The JAR package of the console module
    │ ├── master.jar      # The JAR package of the master module 
    │ ├── tracker.jar     # The JAR package of the tracker module
    │ └── worker.jar      # The JAR package of the worker module
    ├── conf
    │ ├── job.cfg         # The template of the job configuration file 
    │ ├── sys.properties  # Configuration file for the system running parameters
    │ └── workers         # Worker list
    ├── console.sh          # The command line tool. Currently it only supports Linux
    ├── logs                # Log directory
    └── README.md           # Description documentation. We recommend that you carefully read the documentation before using the feature

    注記:

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

構成ファイル

スタンドアロンモードでは、sys.propertieslocal_job.cfg の 2 つの構成ファイルがあります。 分散モードでは、sys.propertieslocal_job.cfgworkers の 3 つの構成ファイルがあります。 具体的には、local_job.cfgjob.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 OSS 内の移行されたファイルの MD5 値を、メタデータ x-oss-meta-md5 を使用して記録するかどうか。 既定値の設定は "no" になっています。 主に MD5 を使用したファイルデータの検証に使用されます。
  • job.cfg

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

    フィールド 意味 説明
    jobName ジョブ名、文字列
    • ジョブの一意の識別子。 命名規則は [a-zA-Z0-9_-]{4,128} です。 異なる名前の複数のジョブの申請をサポートします。
    • 別のジョブと同じ名前のジョブを送信すると、システムはそのジョブがすでに存在することを通知するメッセージを表示します。 元のジョブを名前でクリーンアップする前に、同じ名前のジョブを送信することはできません。
    jobType ジョブタイプ、文字列 "import" と "audit" の 2 つのタイプがあります。既定値は、"import" です。 既定値は、"import" です。
    • import: データ移行を実行し、移行されたデータの整合性を検証します。
    • audit: データの一貫性のみを検証します。
    isIncremental 増分移行モードをブール値で有効にするかどうか
    • 既定値: "false"
    • "true" に設定されている場合、増分データは incrementalModeInterval (単位: 秒)で指定された間隔で再スキャンされ、OSS と同期されます。
    incrementalModeInterval 増分モードでの同期間隔、整数値。 単位: 秒 isIncremental=true のときに有効です。 設定可能な最小間隔は 900 秒です。 大量の要求が浪費され、システムオーバーヘッドが増加するため、3,600 秒よりも小さい値に設定することは推奨されません。
    importSince この時間値 (整数値) より後にデータを移行します。 単位: 秒
    • この時間値は UNIX のタイムスタンプです。つまり、1970年 1 月 1 日の UTC 00:00 からの秒数です。 date +%s コマンドで値を取得します。
    • 既定値は "0" で、すべてのデータを移行することを示します。
    srcType 同期ソースタイプ、文字列。 大文字と小文字を区別します。 現在、このパラメーターは local、oss、qiniu、bos、ks3、s3、youpai、HTTP、cos、azure を含む 10 種類をサポートしています。
    • local: ローカルファイルから OSS にデータを移行します。 このオプションには srcPrefix を入力するだけでよく、srcAccessKey、srcSecretKey、srcDomain、および srcBucket を入力する必要はありません。
    • あるバケットから別のバケットにデータを移行します。
    • 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 を入力します。
    • または local と HTTP タイプの場合、このオプションは空のままにすることができます。
    • youpai タイプと azure タイプの場合は、AccountName を入力します。
    srcSecretKey ソース SecretKey、文字列 srcType が oss、qiniu、baidu、ks3、または s3 に設定されている場合は、データソースの SecretKey を入力します。
    • local と HTTP タイプの場合、このオプションは空のままにすることができます。
    • youpai: オペレーターのパスワードを入力します。
    • azure: AccountKey を入力します。
    srcDomain ソースエンドポイント srcType が local または HTTP に設定されている場合、この設定項目は不要です。
    • oss: コンソールから取得したドメイン名です。 これは、バケットプレフィックスのない第 2 レベルのドメイン名です。 完全な一覧はドメイン名一覧にあります。
    • qiniu: Qiniu コンソールから取得した対応するバケットのドメイン名です。
    • bos: http://bj.bcebos.comhttp://gz.bcebos.com などの Baidu BOS ドメイン名です。
    • ks3: http://kss.ksyun.comhttp://ks3-cn-beijing.ksyun.com、または http://ks3-us-west-1.ksyun.coms などの Kingsoft KS3 のドメイン名。
    • さまざまなリージョンの S3 および AWS S3 ドメイン名は、S3エンドポイントにあります。
    • youpai: Youpai Cloud のドメイン名。例えば光回線の http://v0.api.upyun.com、通信回線のhttp://v1.api.upyun.com、China Unicom または China Netcom line の http://v2.api.upyun.com、China Mobile またはChina Railcom lineの http://v3.api.upyun.com があります。
    • cos: Tencent Cloud のバケットのリージョンです。南中国: gz、北中国: tj、東中国: sh などがあります。
    • azure: core.chinacloudapi.cn などの EndpointSuffix が Azure Blob の接続文字列にあります。
    srcBucket ソースバケットまたはコンテナーの名前 srcType が local または HTTP に設定されている場合、この設定項目は不要です。 azure: Azure Blob のコンテナー名を入力し、他のバケット名を入力します。
    srcPrefix ソースプレフィックス、文字列。 既定値は "empty" です。 srcType が local に設定されている場合は、 c:/example/ または /data/example/ のように、ローカルディレクトリを完全に区切ります。区切り文字は "/" を入力します。 srcType が oss、qiniu、bos、ks3、youpai、または s3 の場合、値は data/to/oss/ のように、バケット名を除いた同期対象オブジェクトのプレフィックスです。 すべてのオブジェクトを同期したい場合は、srcPrefix を空のままにしてください。
    宛先 AccessKey、文字列

    OSS の AccessKeyID を表示するには、コンソールにログインします。

    destSecretKey 宛先 SecretKey、文字列

    OSS の AccessKeySecret を表示するには、コンソールにログインします。

    destDomain 宛先エンドポイント、文字列

    コンソールから取得します。 これは、バケットプレフィックスのない第 2 レベルのドメイン名です。 完全な一覧はドメイン名一覧にあります。

    destBucket 宛先バケット、文字列 OSS バケット名 "/" で終わる必要はありません。
    destPrefix 宛先プレフィックス、文字列。 既定値は "empty" です。
    • 宛先プレフィックス。 既定値は "empty" です。その場合、オブジェクトは宛先バケットに配置されます。
    • 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 タスク内の最大データサイズ (整数)。 Unit: bytes. 既定値は "1GB" です。 この構成オプションは、実行されたジョブの並行性に影響します。 通常、構成は、合計データサイズ / 合計ワーカー数 / 移行スレッド数 (workerTaskThreadNum) に設定されます。 合計データサイズが不明な場合は、既定値を使用します。
    isSkipExistFile データ移行中に既存のオブジェクトをスキップするかどうか (ブール値)。 "true" に設定すると、オブジェクトはサイズと LastModifiedTime に従ってスキップされます。 " false" に設定すると、既存のオブジェクトは上書きされます。 既定値は "false" です。 jobType が "audit" に設定されている場合、このオプションは無効です。
    scanThreadCount 並列ファイルスキャンのスレッド数 (整数)。 既定値は "1" です。 この設定オプションは、ファイルのスキャン効率に関連しています。 特殊な要件がない場合は、設定を変更しないでください。
    maxMultiThreadScanDepth 並列スキャンのディレクトリの最大許容深度 (整数)。 既定値は "1" です。
    • 既定値の1は、最上位ディレクトリでの並列スキャンを示します。
    • 特殊な要件がない場合は、設定を変更しないでください。 値が大きすぎると、ジョブは正常に実行されない可能性があります。
    appId Tencent COS の appId (整数)。 srcType が cos に設定されている場合に有効です。
    httpListFilePath HTTP 一覧ファイルの絶対パス、文字列。
    • srcType が HTTP に設定されている場合に有効です。 ソースが HTTP リンクアドレスの場合、c:/example/http.list のように、コンテンツとして HTTP リンクアドレスを含むファイルの絶対パスを指定する必要があります。
    • ファイル内の HTTP リンクは、以下の内容を含むc:/example/http.list のように、それぞれアップロード後の OSS 上のプレフィックスと相対パスを表すスペースで区切られた 2 つの列に分割する必要があります。 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 アドレスは次のような行になります。

    192.168.1.6
    192.168.1.7
    192.168.1.8

    注記:

    • 上記の設定では、最初の行の 192.168.1.6 がマスターになる必要があります。つまり、マスター、ワーカー、および タスクトラッカー は 192.168.1.6 で開始され、コンソールもマシン上で実行される必要があります。
    • ユーザー名、ログインモード、および複数のワーカーモードの作業ディレクトリが同一であることを確認します。  

構成ファイルの例

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

移行タイプ 設定ファイル 説明
OSSにローカルで移行 job.cfg Srcprefix は / の末尾の絶対パスです (D:/work/oss/data/、/home/user/work/oss/data/ など)。
Seven Bull Cloud ストレージから OSS へ移行 job.cfg Srcprefix と DESTIN プレフィックスは空になるように設定できます。空でない場合は、destPrefix=docs/ のように / で終わります。
Baidu BosからOSS への転送 job.cfg Srcprefix と DESTIN プレフィックスは空になるように設定できます。空でない場合は、destPrefix=docs/ のように / で終わります。
AWS S3 から OSS への移行 job.cfg S3 のドメイン名
クラウドストレージから OSS への再移行 job.cfg Srcaccesskey/Scanner はオペレーターのアカウント番号とパスワードを入力します。
Tencent CO から OSS への移行 job.cfg srcDomain=sh などの V4 バージョンに従ってください。 Srcprefix は空でもかまいません。空でない場合は、srcPrefix=/docs/ のように、前後に/ を付けます。
azure Blob からOSSへの移行 job.cfg Srcaccesskey/srcsecretkey はストレージの cun chu と key を埋めます。 srcdomain は、core.chinacloudapi.cn などの接続文字列 Endpointsuffix を入力します。
OSS 間での移行 job.cfg 異なるリージョン間、異なるストレージタイプ間、および異なるプレフィックス間のデータ移行に適しています。 ECS 上に配置し、トラフィックを節約するため、内部ドメイン名を使用することを推奨します。
高速チャンネルを使用した OSS へのデータ移行 job.cfg すべてのデータソースに適用されます。高速移行要件がある場合、ジョブを送信するか、またはチケットを起票し、 OSS サポートセンターへお問い合わせください。