-
ELT 툴 Airbyte 개요 및 M1 mac local환경 세팅Programming 2022. 4. 13. 15:13
Airbyte?
- 데이터 통합을 쉽고 확장가능성 있게 만들어주는 EL(T) Tool
- CDC기능을 사용 준실시간성으로 데이터를 가져올 수 있다
- 비교적 설치가 간편하다
- 지원하는 데이터 connector들이 많다 DB이외에 페이스북, 인스타그램 등 다양한 SNS과도 연동 가능하며 140개 이상의 커넥터를 지원
- T(Transform)부분의 지원이 빈약하다
- 아직 Hive나 Glue 저장을 지원하지는 않는다
- 쿠버네티스, 에어플로우, dbt 등과 통합하여 사용할 수 있다.
- ex) airflow + airbyte + dbt on kubernates
Architecture
- Airbyte는 플랫폼과 커넥터 이렇게 두가지 컨셉으로 나뉜다.
- 플랫폼은 모든 수평적 서비스들에서 요구하는 설정과 데이터의 움직임을 운영하는(UI, configuration API, job scheduling, logging, alerting 등...)것들을 제공한다.
- 커넥터들은 데이터를 넣고 가져오는 독립적인 모듈이다.
- 커넥터들은 도커 이미지로 패키징 되어있다.
- UI: Airbyte API와 상호작용을 통해 쉽게 사용할 수 있는 그래픽 인터페이스
- WebApp Server: UI와 API사이에 커넥션을 핸들링
- Config Store: 모든 커넥션 정보들을 저장한다(credentials, frequency 등)
- Scheduler Store: 스케줄러에 대한상태와 작업정보를 저장
- Config API: Airbyte의 메인 컨트롤. sources, destinations, connections, 설정 관리 등 API로 부터 불러와 설정한다.
- Scheduler: 스케줄러는 API의 요청에 의해 작업을 수행하고 Temporal service로 병렬적으로 작업을 할당하여 보낸다. 작업의 성공/실패를 트래킹하는 것을 책임진다.
- Temporal Service: 스케줄러를 위해서 task queue와 워크플로우들을 관리한다.
- Worker: 워커들은 source 커넥터와 연결하여 데이터를 당겨와 destination에 적재한다.
- Temporary Storage: 언제든지 디스크에 데이터를 채우고 싶을 때, Worker들이 사용할 수 있는 스토리지
Source
- Extract 대상의 연결 목록들을 관리하는 곳
destination
- Load 대상의 연결 목록들을 관리하는 곳
connection
- 등록한 Source와 Destination을 조합해 하나의 Connection으로 연결해서 관리할 수 있다.
- sync하는 주기를 설정할 수 있다. (시, 분 단위)
- 원하는 컬렉션 or 테이블만 골라서 가져올 수 있다.
- Overwrite할지 incremental하게 쌓을지 선택할 수 있다.
- 증분형식으로 가져오기 위해서는 primary key 지정이 필수
Quick start
git clone <https://github.com/airbytehq/airbyte.git> cd airbyte docker-compose up
- webserver: http://localhost:8000
- 단, M1의 경우에는 일부 이미지가 지원되지 않는 경우가 있어서 arm64 이미지로 새롭게 build된 dev버전으로 실행해야 한다.
requirements for build
- Java 17
- Node 16
- python 3.7 or higher
- Docker and Docker-compose
- Jq
위 요구사항을 build하기 전에 맞춰준다.
export DOCKER_BUILD_PLATFORM=linux/arm64 export DOCKER_BUILD_ARCH=arm64 export ALPINE_IMAGE=arm64v8/alpine:3.14 export POSTGRES_IMAGE=arm64v8/postgres:13-alpine export JDK_VERSION=17
- M1의 경우 빌드전 환경변수로 arm64로 세팅해주어야 한다. 터미널을 통해 위 변수들을 미리 설정해준다.
SUB_BUILD=PLATFORM ./gradlew build
- 환경변수들을 적용한 이후에 airbyte root 위치에서 위 명령어로 gradle을 통해서 build해준다.
VERSION=dev docker-compose up
- 위 명령어를 통해서 m1 실리콘 환경 로컬에서 airbyte를 실행할 수 있다.
'Programming' 카테고리의 다른 글
PrestoSQL to Trino Migration 할 때 주의할 점 (0) 2023.12.22 kafka retention 용량 설정 값 이해하기 (0) 2023.05.01 dockerfile 한국어 로케일 설정(feat. 우분투와 데비안의 차이) (2) 2021.08.10 Luigi로 batch job 모니터링 및 스케줄링 (0) 2021.06.19 Druid + superset로 BI 아키텍쳐 구축하기 (0) 2021.03.28