분류 전체보기 1191

[AWS] SQS

Simple Queue Service 해야 할 일을 나중에 처리하거나 다른 시스템이 처리할 수 있도록 하기 위한 비동기 메시징 서비스 분산 메시지 큐 서비스 메시지는 처리해야 할 업무에 대한 todo 리스트와 같다. 이때 SQS는 메시지 저장소라고 할 수 있다. 용도 SQS는 공통 생산자-소비자 문제나 생산자-소비자 간 연결에서 발생하는 문제를 해결하는 큰 규모의 호스팅 메시지 큐를 제공하기 위해 고안되었다. 일반적으로 각 애플리케이션이 가지는 coupling을 끊어주는 역할을 한다. Lambda와 EC2간 강한 결합도 Lambda와 EC2간 약한 결합도 특징 / 이점 특징 메시지 보관 기간 : 1분 ~ 14일 메시지 크기 : 1KB ~ 256KB AWS Console, CLI, SDK 등을 활용하여 서..

AWS 2022.07.31

[Airflow] lockfile.AlreadyLocked: /home/airflow/airflow/airflow-scheduler.pid is already locked

현상 에어플로우 웹 서버나 스케쥴러를 백그라운드로 실행했다. airflow scheduler -D airflow webserver --port 8081 -D 하지만 웹에서 접속이 되지 않아 확인했더니 스케쥴러의 프로세스가 존재하지 않았다. 원인 웹 서버와 스케쥴러의 에러 로그를 확인해보니 두 요소 모두 아래와 같은 FileExistsError, lockfile.AlreadyLocked가 발생하고 있었다. $ view airflow/airflow-webserver.err Traceback (most recent call last): File "/home/airflow1/venv/airflow/lib/python3.8/site-packages/lockfile/pidlockfile.py", line 77, i..

[Airflow] DAG 테스트

개요 2022.07.25 - [Airflow] DAG 생성 에서 생성한 DAG가 정상적으로 동작할지 간단히 확인해보자. 아래와 같은 방식으로 테스트를 수행하면 기본적인 에러 여부를 확인할 수 있다. 참고로 명령어는 1.10 버전 기준이다. python 실행 테스트 python 명령으로 DAG 정의 파일을 실행해본다. python dag_helloworld.py 발생한 예외가 없으면 정상적인 상태이다. 메타데이터 검사 DAG 정의 파일의 유효성을 추가로 검증해본다. DAG 인식 Airflow에서 DAG를 정상적으로 인식하는지 확인한다. airflow dags list Task 인식 Airflow에서 DAG의 Task를 정상적으로 인식하는지 확인한다. airflow list_tasks DAG_ID # 예시 ..

Apache Airflow 2022.07.29

[Python] 이모지 출력하기

이모지 인쇄 파이썬에서 이모지를 인쇄하는 방법은 유니코드, CLDR 등 여러 가지가 존재하는데, 간단히 정리해두려고 한다. 이모지 목록은 아래 URL에서 확인할 수 있다. http://unicode.org/emoji/charts/full-emoji-list.html 이모지 복사/붙여 넣기 이모지는 텍스트와 같이 취급할 수 있기 때문에 복사하여 붙여 넣을 수 있을 뿐만 아니라 print 함수로 출력할 수도 있다. print('👩‍🍼') Unicode 모든 이모지에는 Unicode와 CLDR 이름이 정해져 있기 때문에, unicode나 CLDR 이름을 알면 이모지를 출력할 수 있다. 방법 1. 먼저 이모지 목록에서 원하는 이모지의 Unicode(U+1F63F)를 확인한다. 2. Unicode의 +문자를 0으..

Python 2022.07.28

[Ubuntu 20.04] Hostname 설정

Hostname 재부팅 시 서버의 Hostname이 다른 값으로 변경되는 일이 있어 명령어 또는 설정 파일을 통해 hostname 설정 방법을 정리해둔다. Hostname 확인 1. hostname 시스템의 호스트명을 보여주거나 설정한다. hostname 2. hostnamectl 시스템 호스트명을 제어한다. hostnamectl 출력 결과의 Static hostname은 /etc/hostname 파일에 설정이 저장되며 사용자에 의해 설정될 수 있다. 3. /etc/hostname 설정 파일에서 hostname을 읽어 들일 수도 있다. cat /etc/hostname Hostname 설정 1. hostname 명령 재부팅 전까지만 유지된다. hostname # 예시 hostname devOps-EC2-t..

Linux 2022.07.27

[Pip] pip를 통해 설치한 패키지 전부 삭제(초기화)

개요 python 환경에 pip를 이용해 패키지를 여럿 설치했다. 근데 좀 잘못 설치한 것 같다……. 그래서 pip를 이용해 설치한 패키지를 전부 삭제하고 싶다. 다만 의존 패키지도 함께 설치되었기 때문에 삭제할 패키지가 많은 상태이다. 113개의 패키지를 한꺼번에 삭제하는 방법을 정리해둔다. 방법 1. 설치한 패키지 목록(requirements.txt) 추출 pip freeze > requirements.txt pip freeze 명령은 '패키지 이름=버전' 형식으로 설치한 패키지 목록을 출력해준다. 그 출력 결과를 requirements.txt로 저장한다. 2. requirements.txt 상의 패키지 삭제 pip uninstall -r -y # -r : --requirement. 지정한 requi..

Python 2022.07.26

[Airflow] DAG 생성

DAG Airflow의 핵심 개념으로, 여러 Task와 각 Task가 어떻게 실행되어야 하는지를 정의하는 종속성과 관계로 구성된다. DAG는 사진의 Task a, b, c, d를 정의하고 실행 순서, 그리고 의존성 등을 지정한다. 또한 DAG가 얼마나 자주 실행되어야 하는지를 지정해야 한다. Airflow의 Python 스크립트는 이러한 DAG의 구조를 코드로 지정하는 설정 파일이다. DAG 정의 파일은 실제 데이터 처리를 수행하지 않으며, 단순히 DAG 객체만을 정의한다. 이 글에서는 DAG 정의 방법을 정리해둔다. DAG 관리 디렉터리 생성 Airflow는 DAG를 관리하는 디렉터리를 지정하여 관리한다. 해당 설정은 airflow.cfg에서 설정할 수 있다. 해당 경로에 맞게 Airflow 홈 디렉터..

Apache Airflow 2022.07.25

[Apache Airflow] 디렉터리 구조

디렉터리 구조 Airflow를 설치하면 Airflow 홈 디렉터리에 아래와 같은 기본 파일이 생성된다. 1.10과 2.3 모두 존재하는 공통 파일부터 서로 존재하지 않는 파일 모두 간단히 정리한다. airflow.cfg Airflow 설정 파일 Airflow DAG 경로, 로그 수준 등 실행에 필요한 정보를 저장한다. airflow.db SQLite DB file 어떤 DAG가 존재하고 어떤 태스크로 구성되는지, 어떤 태스크가 실행 중이고 실행 가능한 상태인지 등의 메타데이터가 저장되는 데이터베이스 파일 logs Airflow의 로그 디렉터리 다만 웹 서버나 스케쥴러를 백그라운드로 실행했을 때는 airflow 홈 디렉터리에 바로 로그가 쌓이는 것 같다. unittest.cfg (1.10 버전) 실제 ai..

Apache Airflow 2022.07.24

[Apache Airflow] 설치 / 실행 (버전 1.10)

Apache Airflow 설치 2022.07.22 - [Apache Airflow] 설치/실행 (2. 3 버전) 에서 2.3 버전 설치 / 실행 방법을 정리했는데, 생각해보니 1 버전이 필요할 것 같다. 따라서 1버전 설치 / 실행 방법도 정리한다. 방법 자체가 크게 달라지진 않는다. 테스트 목적이므로 마찬가지로 단일 로컬 서버에 설치해보고자 한다. 사용한 OS는 Ubuntu 20.04 arm64이며, Python 버전은 3.8이다. 또한 Apache Airflow 1.10.15 버전을 설치할 것이다. 로컬에서 설치 Airflow 공식 사이트의 로컬에서 Airflow 설치 문서를 따른다. Airflow 설치에는 Python 3이 필요하고, pip를 통한 설치를 지원하고 있다. 1. (선택) python..

Apache Airflow 2022.07.23

[Apache Airflow] 설치 / 실행 (버전 2.3)

Apache Airflow 설치 2022.07.18 - Apache Airflow란? 에서 Apache Airflow에 대해서 정리해보았으므로, 이 글에서는 설치 방법을 정리한다. 테스트 목적이므로 단일 로컬 서버에 설치해보고자 한다. 사용한 OS는 Ubuntu 20.04 arm64이며, Python 버전은 3.8이다. 또한 Apache Airflow 2.3 버전을 설치할 것이다. 로컬에서 설치 Airflow 공식 사이트의 로컬에서 Airflow 설치 문서를 따른다. Airflow 설치에는 Python 3이 필요하고, pip를 통한 설치를 지원하고 있다. 1. (선택) python 가상 환경 생성 기존 python 환경에 영향이 없도록 별도의 가상 환경을 생성하여 사용할 것이다. 이 부분은 선택 사항이다..

Apache Airflow 2022.07.22