Airbyteを使っている上でハマった箇所がたくさんあったので残しておきます
目次
Airbyteが稼働し始めない
事象
AirbyteのGUIからconnectionを設定すし、syncを開始するもいつまで経ってもデータのloadが開始されない(約20分(?)ほど経過後にエラーが発生する)
回避策
おそらくEC2のspecが足りていないのが原因
row-resoruce-modeオプションをつけてabctl installを行う
sudo abctl local install --low-resource-mode
※通常はsudo abctl local install
Airbyteがload途中でフリーズする
事象
Airbyteのloadが開始され、GUIからも処理開始からの経過時間と抽出件数が表示されるも何分経っても件数が増えない
回避策
EC2のモニタリングやコマンドラインからdocker stats
, free -m
を実行してmemory, cpuの使用率を確認する
memory, cpu使用率が逼迫している場合、Airbyteの設定ファイルvalues.yaml
を作成し、abctl installのオプションに設定してAirbyteの再install(再起動)を行う
sudo abctl local install --values ./values.yaml --low-resource-mode
Airbyteの設定ファイルvalues.yamlの設定内容がわからない
ec2のspecに合わせてmemory, cpuの設定値を変更する
global:
jobs:
resources:
requests:
cpu: 500m
memory: 4Gi
limits:
cpu: 3
memory: 10Gi <-- ec2が`t3.xlargeの時は10Gi, r7iz.xlargeの時は26Giにした`
low-resource-modeオプションまたはvalues.yamlの設定が反映されているかわからない
回避策
sync時のlogを確認する(airbyteのsyncを開始し、TimelineからView logs
を選択)
設定が反映されるコンテナは4つ( initContainer, source, destination, orchestrator)
4-12-10 20:00:01 platform > [initContainer] image: airbyte/workload-init-container:1.2.0 resources: ResourceRequirements(claims=[], limits={memory=26Gi, cpu=3}, requests={memory=4Gi, cpu=500m}, additionalProperties={})
2024-12-10 20:00:01 platform > Launching replication pod: replication-job-56-attempt-0 with containers:
2024-12-10 20:00:01 platform > [source] image: airbyte/source-bigquery:0.4.2 resources: ResourceRequirements(claims=[], limits={memory=26Gi, cpu=3}, requests={memory=4Gi, cpu=500m}, additionalProperties={})
2024-12-10 20:00:01 platform > [destination] image: airbyte/destination-s3:1.2.1 resources: ResourceRequirements(claims=[], limits={memory=26Gi, cpu=3}, requests={memory=4Gi, cpu=500m}, additionalProperties={})
2024-12-10 20:00:01 platform > [orchestrator] image: airbyte/container-orchestrator:1.2.0 resources: ResourceRequirements(claims=[], limits={memory=26Gi, cpu=3}, requests={memory=4Gi, cpu=500m}, additionalProperties={})
values.yamlを設定した場合は4つのコンテナに同じ設定値が設定されるlimits={memory=26Gi, cpu=3}, requests={memory=4Gi, cpu=500m}
の部分を見て反映されたか、されていないを判断する
values.yaml無し、low-resource-modeの場合は下記の設定値になる
initContainer | limits={memory=4Gi, cpu=3}, requests={memory=0, cpu=0} |
source | limits={memory=4Gi, cpu=3}, requests={memory=0, cpu=0} |
destination | limits={memory=4Gi, cpu=3}, requests={memory=0, cpu=0} |
orchestrator | limits={memory=4Gi, cpu=3}, requests={memory=0, cpu=0} |
values.yamlの設定値が反映されない
回避策
abctlで通常のinstallを実行した後、valuesオプションをつけてinstallを行う
sudo abctl local install
sudo abctl local install --values ./values.yaml --low-resource-mode
その後syncを実行してlogを確認する
まとめ
なんだかairbyteのお世話が大変…