Airbyte Troubles and Workarounds

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の場合は下記の設定値になる

initContainerlimits={memory=4Gi, cpu=3}, requests={memory=0, cpu=0}
sourcelimits={memory=4Gi, cpu=3}, requests={memory=0, cpu=0}
destinationlimits={memory=4Gi, cpu=3}, requests={memory=0, cpu=0}
orchestratorlimits={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のお世話が大変…