섹션8: 더 많은 Provider 확인 & Connection Type 추가하기

류홍규·2023년 8월 17일
0

airflow

목록 보기
16/18
post-thumbnail

1. Providers 더 보기

  • airflow의 AdminProviders는 현재 설치되어 있는 Providers 패키지를 말한다.
  • 따라서, 설치가능한 Providers 더 보기는 아래를 참조한다.
    Providers_목록보기!

Provider packages 란?

아파치 airflow2는 모듈 방식으로 제공되어지는데, task들을 작성하는데 있어, airflow의 핵심은 core scheduler 기능을 제공해주는데 있다.

  • provider 라는 이름의 추가 패키지를 활용하면 airflow의 확장성을 높일 수 있다.

빅데이터 분석에 자주 쓰이는 Spark, Sqoop, Flink, Kafka 등을 연결할 수 있다.
Tableau도 확인할 수 있었는데, 내가 가지고 있는 건 Tableau DeskTop 버전이다. ㅜㅜ... Tableau Prep(Mac version)도 안된다. 해당 Providers와 연결하려면 Tableau Server여야 한다.


  • HDFS에 대해서 살펴보기
    apache-airflow-providers-apache-hdfs documentation에서 python api를 클릭해보자.
    HDFSProviers도큐멘테이션

  • hooks -> submodule로 hdfs가 있다.

hooks_hdfs 도큐멘테이션

HDFSHook 클래스로 Hook 객체 만들려면?

파라미터로 hdfs_conn_id가 필수적으로 필요하다. 즉, airflow 상에 hdfs_connection이 등록되어야 한다는 말이다.

오잉? 그런데, Admin탭에 hdfs가 없다. 설치를 해줘야 할 것 같다.


  • hooks -> submodule로 hive로 들어간다.
    • HiveCliHook
    • HiveMetastoreHook
    • HiveServer2Hook

크게 이렇게 구성되어 있다.

✏️ HiveCliHook

2. Connection Type 추가하기

(1) Provider 검색, py 라이브러리 설치 목록 확인하기

  • 그런데, airflow는 Docker container 상에 위치하기 때문에 고민을 해 봐야한다.
비교이미지 ExtendCustom 이미지 생성
간단히 생성 가능OX
빌드 시간짧음상대적으로 긺
크기 최적화된 이미지XO(약 20% 정도 사이즈 감소)
폐쇄망에서 구성 가능XO

(2) Aiflow 이미지 Extend 방법 확인

docker-stack/build.html

  • Extend 방법


해당 방법은 무거워진다는 단점을 가지고 있다. Docker를 쓰는 이유는 가상화 컨테이너로써, 가볍게 사용하기 위한 목적이 있는데, Extend방법은 pip install 할 대상들이 많아지면 많아질수록, 무거워진다는 단점을 가진다.


  • custom_image 방법

필요한 것들만 담아서 DockerFile을 재정의한다.


(3) 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

여기서! gccheimdal-dev는 apache-hdfs를 설치할 때 필요한 것들이고, g++libsasl2-dev는 apache-hive를 설치할 때 필요한 것들이다. 저기 밑에 있는 xmltodict는 내가 하는 프로젝트에서 자꾸 xml 파싱 에러가 나서 추가한 것이다.

나중에 Custom_operator 부터 Custom_hook까지 한번에 해서 xml 데이터도 크롤링해봐야겠다.

(4) Docker이미지 생성하기

해당 DockerFile이 있는 위치에서
#>sudo docker build -t {image_name} .
여기서 -t 태그 옵션을 주었으니 image_name은 내가 주고 싶은 대로 주면 된다.
나는 airflow_custom으로 주었다.

빌드하는데 시간이 제법 오래 걸린다. 기다려보자..

나는 빌드하는데 200초 정도 걸렸다.

(5) Docker 이미지 확인

#>sudo docker image ls

airflow_custom 이라는 이름으로 잘 올라왔다.

(6) 컨테이너를 올리기 위해 docker-compose.yaml 수정하기

#> cd
#> vi docker-compose.yaml
수행하기 전에, 지금까지 수행했던 docker-compose.yaml을 백업을 해두겠다.

만들어진 이미지로 docker-compose.yaml를 수정한다.

(7) docker compose 재 시작

(8) 이제, admin에서 provider가 설치되었는지 확인해보자.

드디어 connection Type을 선택할수 있게 되었다!

profile
공대생의 코딩 정복기

0개의 댓글