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가 없다. 설치를 해줘야 할 것 같다.

HiveCliHookHiveMetastoreHookHiveServer2Hook크게 이렇게 구성되어 있다.
✏️ 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을 선택할수 있게 되었다!