データ パイプライン
要件
REST API を使用してデータのエクスポートをトリガーするには、次が必要です。
A valid Bitbucket Data Center license
Bitbucket system admin global permissions
Considerations
開始する前に、多数のセキュリティとパフォーマンスへの影響を考慮する必要があります。
セキュリティ
セキュリティと機密性に基づいてデータを除外する必要がある場合は、データをエクスポートした後に行う必要があります。
エクスポートされたファイルは共有ホーム ディレクトリに保存されるため、このファイルが適切に保護されていることも確認できます。
パフォーマンスの影響
パフォーマンスの問題のリスクを最小限に抑えるため、次を強くお勧めします。
- データのエクスポートは、アクティビティが少ない時間帯またはアクティビティのないノードで実行します。
fromDate
パラメーターを使用してエクスポートするデータの量を制限します。日付が古過ぎるとより多くのデータがエクスポートされるため、データのエクスポート時間が長くなります。
数値 | おおよそのエクスポート時間 | |
---|---|---|
ユーザー | 25,000 | less than a minute |
リポジトリ | 6,500 | less than a minute |
変更を確認できる「コミット」 | 1800 万 | 4 hour 30 minutes |
Pull Requests | 250,000 | 30 分 |
総エクスポート時間は約 5 時間でした。
テスト パフォーマンス対本番環境の比較
ここで紹介するパフォーマンス データは、当社独自の内部テストに基づいています。お客様の環境におけるデータ エクスポートの実際の時間と影響は、インフラストラクチャ、構成、負荷によって異なります。
Our tests were conducted on a two node Data Center instance in AWS:
- EC2 instance type:
m5d.4xlarge
- RDS インスタンス タイプ:
db.m4.4xlarge
データ エクスポートの実行
アプリケーションが、/jira などのコンテキスト パスを使用するように設定されている場合は、これを必ず以下の例の <base-url>
に含めます。
現在の状態データをエクスポートするには、<base-url>/rest/datapipeline/latest/export
に POST
リクエストを実行します。
エクスポートされるデータを fromDate
値の後に作成または更新されたエンティティだけに制限するには、fromDate
パラメーターを使用します。
このパラメーターは、ISO 8601 形式 (yyyy-MM-ddTHH:mmTZD) で設定された日付値のみを受け付けます。以下に例を示します。
- 2020-12-30T23:01Z
- 2020-12-30 T 22:01+01:00
(たとえば、リクエストで URL エンコーディングを使用する必要があります2020-12-30T22%3A03%2B01%3A00
)
fromDate パラメーターなしでエクスポートをトリガーすると、直近の 365 日内のすべてのデータがエクスポートされます。
認証に cURL と個人アクセス トークンを使用するリクエストの例を次に示します。
curl -H "Authorization:Bearer ABCD1234" -H "X-Atlassian-Token: no-check"
-X POST https://myexamplesite.com/rest/datapipeline/latest/
export?fromDate=2020-10-22T01:30:11Z
"X-Atlassian-Token: no-check"
ヘッダーは Confluence にのみ必要です。Jira の場合は省略できます。
POST
リクエストには次の応答があります。
自動データ エクスポート キャンセル
CANCELLED
と自動でマークされます。ただし、クラッシュまたはハードウェア レベルの障害が発生して JVM に通知されなかった場合、エクスポート プロセスはロックされることがあります。この場合、DELETE
リクエストを通じてエクスポートを CANCELLED としてマークする必要があります。これによって、プロセスがロックから解放されて別のデータ エクスポートを実行できます。
データ エクスポートを設定する
You can configure the format of the export data through the following configuration properties.
既定値 | 説明 |
---|---|
plugin.data.pipeline.embedded.line.break.preserve | |
false | 埋め込まれた改行を出力ファイルに保持するかどうかを指定します。Hadoop などのツールでは、改行が問題になる場合があります。 このプロパティはデフォルトで |
plugin.data.pipeline.embedded.line.break.escape.char | |
\\n | 埋め込まれた改行の文字をエスケープします。デフォルトでは、 |
The following additional properties only apply to Bitbucket.
既定値 | 説明 |
---|---|
plugin.data.pipeline.bitbucket.export.personal.forked.repository.commits | |
false | Specifies whether commits from forked repositories in personal projects should be exported. Set this property to |
plugin.data.pipeline.bitbucket.export.build.statuses | |
false | Specifies whether build statuses should be included in the export. Exporting build statuses can take a significant amount of time if you have a lot of builds. Set this property to |
plugin.data.pipeline.bitbucket.commit.queue.polling.timeout.seconds | |
20 | Time, in seconds, it takes to receive the first commit from git process. You should only need to change this if you see a |
plugin.data.pipeline.bitbucket.commit.git.execution.timeout.seconds | |
3600 | Sets the idle and execution timeout for the git ref-list command. You should only need to change this if you see "an error occurred while executing an external process: process timed out" error. |
エクスポートのステータスを確認する
アプリケーションの管理コンソールからエクスポートのステータスを確認して、最後にエクスポートを実行した日時を確認できます。データ エクスポート ステータスを表示するには、次の手順に従います。
- Go to > System.
- [データ パイプライン] を選択します。
- 開始前 - エクスポートは現在実行されていません
- 開始 - エクスポートは現在実行中です
- 完了 - エクスポートが完了しました
- リクエストをキャンセル - キャンセル リクエストが送信されました
- キャンセル - エクスポートがキャンセルされました
- 失敗 - エクスポートに失敗しました。
失敗したエクスポートまたはキャンセルされたエクスポートの解決については、「データ パイプラインのトラブルシューティング」をご参照ください。
出力ファイル
データ エクスポートを実行するたびに、数値ジョブ ID をタスクに割り当てます (最初のデータ エクスポートに対して 1 から開始)。このジョブ ID は、エクスポートされたデータを含むファイルのファイル名と場所で使用されます。
エクスポートされたファイルの場所
エクスポートされたデータは個別の CSV ファイルとして保存されます。ファイルは次のディレクトリに保存されます。
<shared-home>/data-pipeline/export/<job-id>
if you run Bitbucket in a cluster<local-home>/shared/data-pipeline/export/<job-id>
you are using non-clustered Bitbucket.
<job-id>
ディレクトリ内には次のファイルが表示されます。
build_statuses_<job_id>_<timestamp>.csv
commits_<job_id>_<timestamp>.csv
pull_requests_<job_id>_<timestamp>.csv
repositories_<job_id>_<timestamp>.csv
users_<job_id>_<timestamp>.csv
これらのファイルでデータをロードして変換するには、そのスキーマを理解する必要があります。「データ パイプライン エクスポート スキーマ」をご参照ください。
カスタム エクスポート パスを設定する
ルート エクスポート パスを変更するには、<base-url>/rest/datapipeline/1.0/config/export-path
に PUT
リクエストを実行します。
リクエストの本文で、次のように優先するディレクトリに絶対パスを渡します。
{
"path": "/tmp/new/path"
}
PUT
リクエストには次の応答があります。
エクスポート パスを確認するには、<base-url>/rest/datapipeline/1.0/config/export-path
に GET
リクエストを実行します。
GET
リクエストには次の応答があります。
デフォルトのエクスポート パスに戻す
デフォルト パスに戻すには、<base-url>/rest/datapipeline/1.0/config/export-path
に DELETE
リクエストを実行します。
Spark と Hadoop のインポート設定の例
既存の Spark インスタンスまたは Hadoop インスタンスがある場合、次の参照を使用し、さらに変換するためにデータをインポートする方法を設定します。