Admin
의 Providers
는 현재 설치되어 있는 Providers 패키지를 말한다.아파치 airflow2는 모듈 방식으로 제공되어지는데, task들을 작성하는데 있어, airflow의 핵심은 core scheduler
기능을 제공해주는데 있다.
provider
라는 이름의 추가 패키지를 활용하면 airflow의 확장성을 높일 수 있다.빅데이터 분석에 자주 쓰이는 Spark, Sqoop, Flink, Kafka 등을 연결할 수 있다.
Tableau도 확인할 수 있었는데, 내가 가지고 있는 건 Tableau DeskTop 버전이다. ㅜㅜ... Tableau Prep(Mac version)도 안된다. 해당 Providers와 연결하려면 Tableau Server여야 한다.
apache-airflow-providers-apache-hdfs
documentation에서 python api를 클릭해보자.HDFSHook 클래스로 Hook 객체 만들려면?
파라미터로 hdfs_conn_id가 필수적
으로 필요하다. 즉, airflow 상에 hdfs_connection이 등록되어야 한다는 말이다.
오잉? 그런데, Admin탭에 hdfs가 없다. 설치를 해줘야 할 것 같다.
HiveCliHook
HiveMetastoreHook
HiveServer2Hook
크게 이렇게 구성되어 있다.
✏️ HiveCliHook
비교 | 이미지 Extend | Custom 이미지 생성 |
---|---|---|
간단히 생성 가능 | O | X |
빌드 시간 | 짧음 | 상대적으로 긺 |
크기 최적화된 이미지 | X | O(약 20% 정도 사이즈 감소) |
폐쇄망에서 구성 가능 | X | O |
Extend
방법해당 방법은 무거워진다는 단점을 가지고 있다. Docker를 쓰는 이유는 가상화 컨테이너로써, 가볍게 사용하기 위한 목적이 있는데, Extend
방법은 pip install 할 대상들이 많아지면 많아질수록, 무거워진다는 단점을 가진다.
custom_image
방법필요한 것들만 담아서 DockerFile
을 재정의한다.
#>pwd;
hongkyu08@DESKTOP-7UHBDFH:/mnt/c/Users/minsu$ pwd
/mnt/c/Users/minsu/airflow
drwxrwxrwx 1 hongkyu08 hongkyu08 4096 Aug 16 15:07 .
drwxrwxrwx 1 hongkyu08 hongkyu08 4096 Aug 12 14:32 ..
-rwxrwxrwx 1 hongkyu08 hongkyu08 17 Aug 7 14:12 .env
drwxrwxrwx 1 hongkyu08 hongkyu08 4096 Aug 16 02:31 airflow
drwxrwxrwx 1 hongkyu08 hongkyu08 4096 Aug 7 14:12 config
drwxrwxrwx 1 hongkyu08 hongkyu08 4096 Aug 7 14:12 dags
-rwxrwxrwx 1 hongkyu08 hongkyu08 12996 Aug 16 14:14 docker-compose.yaml
-rwxrwxrwx 1 hongkyu08 hongkyu08 11953 Aug 16 02:37 docker-compose.yaml.230816
drwxrwxrwx 1 hongkyu08 hongkyu08 4096 Aug 16 19:54 logs
drwxrwxrwx 1 hongkyu08 hongkyu08 4096 Aug 7 20:50 plugins
#>cd; cd airflow
#>mkdir -p custom_image/airflow
#>cd custom_image/airflow
#>vi Dockerfile
우우.. 마침 SSD 1tb도 샀으니 다음부터는 우분투에서 깔끔하게 시작해봐야겠다. 폴더 구조가 넘 복잡하다.
그 다음 Dockerfile을 입력한다. 나는 visual Studio code에서 작업한 뒤에 붙여넣기 해주었다.
FROM apache/airflow:2.6.3
USER root
RUN apt-get update && \
apt-get install -y --no-install-recommends \
gcc \
heimdal-dev \
g++ \
libsasl2-dev && \
apt-get autoremove -yqq --purge && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
USER airflow
RUN pip install \
apache-airflow-providers-apache-hdfs \
apache-airflow-providers-apache-hive \
xmltodict
RUN pip uninstall -y argparse
여기서! gcc
와 heimdal-dev
는 apache-hdfs를 설치할 때 필요한 것들이고, g++
와 libsasl2-dev
는 apache-hive를 설치할 때 필요한 것들이다. 저기 밑에 있는 xmltodict
는 내가 하는 프로젝트에서 자꾸 xml 파싱 에러가 나서 추가한 것이다.
나중에 Custom_operator 부터 Custom_hook까지 한번에 해서 xml 데이터도 크롤링해봐야겠다.
해당 DockerFile이 있는 위치에서
#>sudo docker build -t {image_name} .
여기서 -t 태그 옵션을 주었으니 image_name은 내가 주고 싶은 대로 주면 된다.
나는 airflow_custom으로 주었다.
빌드하는데 시간이 제법 오래 걸린다. 기다려보자..
나는 빌드하는데 200초 정도 걸렸다.
#>sudo docker image ls
airflow_custom 이라는 이름으로 잘 올라왔다.
#> cd
#> vi docker-compose.yaml
수행하기 전에, 지금까지 수행했던 docker-compose.yaml을 백업을 해두겠다.
만들어진 이미지로 docker-compose.yaml를 수정한다.
드디어 connection Type을 선택할수 있게 되었다!