データ パイプライン
要件
REST API を使用してデータのエクスポートをトリガーするには、次が必要です。
A valid Bitbucket Data Center license
Bitbucket system admin global permissions
Considerations
開始する前に、多数のセキュリティとパフォーマンスへの影響を考慮する必要があります。
セキュリティ
セキュリティと機密性に基づいてデータを除外する必要がある場合は、データをエクスポートした後に行う必要があります。
エクスポートされたファイルは共有ホーム ディレクトリに保存されるため、このファイルが適切に保護されていることも確認できます。
パフォーマンスの影響
パフォーマンスの問題のリスクを最小限に抑えるため、次を強くお勧めします。
- データのエクスポートは、アクティビティが少ない時間帯またはアクティビティのないノードで実行します。
fromDate
パラメーターを使用してエクスポートするデータの量を制限します。日付が古過ぎるとより多くのデータがエクスポートされるため、データのエクスポート時間が長くなります。
Amount of data | おおよそのエクスポート時間 |
---|---|
Small data set
| 10 時間 |
Large data set
| 35 時間 |
Test performance vs production
The performance data presented here is based on our own internal testing. The actual duration and impact of a data export on your own environment will likely differ depending on:
- インフラストラクチャ、構成、負荷
- amount of pull request activity to be exported.
Our tests were conducted on Data Center instances in AWS:
- Small - EC2 instance type
m5d.4xlarge
and RDS instance typedb.m4.4xlarge
- Large - EC2 instance type
c5.2xlarge
and RDS instance typedb.m5.large
We intentionally export data quite slowly to keep any performance degradation under a 5% threshold. If you run Bitbucket in a cluster, you could use your load balancer to redirect traffic away from the node performing the export.
データ エクスポートの実行
アプリケーションが、/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. |
plugin.data.pipeline.bitbucket.export.pull.request.activities | |
true | Specifies whether historical data about pull request activity data should be included in the export. Exporting activity data will significantly increase your export duration. Set this property to |
エクスポートのステータスを確認する
アプリケーションの管理コンソールからエクスポートのステータスを確認して、最後にエクスポートを実行した日時を確認できます。データ エクスポート ステータスを表示するには、次の手順に従います。
- 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_request_activities_<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 インスタンスがある場合、次の参照を使用し、さらに変換するためにデータをインポートする方法を設定します。