본문 바로가기

전체 글

(147)
[Git] Initial Commit 되돌리기 새로운 git 레포지토리에 기분좋게 Initial Commit을 잘못 푸시 해버리고.. "아.." 이렇게 다시 당황하지 않도록 메모 평소 잘못된 커밋같은 경우에는 되돌리려고 revert나 git reset --hard 후, git push -f를 하려고 하지만 Initial Commit은 이전으로 reset을 할 수가 없다. 개인적으로 만든 레포면 레포 삭제 후 다시 만드는것도 하나의.. 방법이지만 그룹으로 쓰고, 인원들 초대까지 다 해놨는데 이걸 다시.. 또? 만들고 추가하기에는 이래저래 귀찮(민폐) 그래서 찾은 방법은 아래 방법 1. --orphan 옵션을 사용해서 새로운 고아 브랜치를 만들고 해당 브랜치로 checkout 2. Initial Commit을 잘못한 main 브랜치 삭제 3. 현재 브랜..
[Airflow] catchup, depends_on_past, wait_for_downstream airflow 스케줄러는 DAG File을 실행하기 위해서 DagRun 객체로 인스턴스화 시킨다. catchup catchup default는 True이다. catchup이 True이면 이전 execute date DAG 까지 다 실행한다. False일 경우 가장 최근의 execute date DAG만 실행한다. 예시로 말하자면, catchup이 True일 경우 test_dag 이라는 DAG File을 “0 0 * * *” 스케쥴 작업을 등록했다고 하자. test_dag은 매일 0시 0분에 작업이 실행될 것이다. test_dag을 등록한 날짜가 2022-01-01 02시라 했을 때, test_dag이 첫번째로 실행되는 시간은 2022-01-02 00시 00분 이다. (execute date) 그다음 두번..
[Airflow] Airflow 학습(3) DAG = Data PipeLine Operator = Task DAG을 하나 만들어보자. 먼저 DAG을 생성하기 위해 필요한 선언 부분이다. (이부분은 공통(common) py로 관리하면 좋을듯?) from datetime import datetime, timedelta from airflow import DAG default_args= { "owner": "airflow", #작업 생성자 "email_on_failure": False, #작업 실패시 알림을 받을 이메일 "email_on_retry": False, #작업 재시도시 알림을 받을 이메일 "email": "admin@localhost.com", "retries": 1, #작업 실패시 재시도 횟수 "retry_delay": timedelta(..
[Kafka] 카프카 컨슈머 그룹 삭제하기 회사에서 다른 파트의 동료로 부터 “Kafka 컨슈머 그룹을 삭제하고 싶어요.”라는 요청이 왔었다. 카프카 컨슈머 그룹 삭제? 그거 그냥 해당 그룹에 속한 컨슈머 커넥션이 계속 없으면 알아서 없어지는거 아닌가?라고 알고있었지만, 확실하게 답해주기 위해서 정보를 찾아봤다. 찾아본 결과는 이렇다. 1. server.properties에 offsets.retention.minutes 속성을 통해 오프셋 초기화 주기를 설정한다. default는 7분이라고 한다. 즉, 컨슈머 그룹에 해당하는 컨슈머가 일정 기간동안 컨슈밍을 하지 않으면 해당 컨슈머 그룹의 오프셋이 0으로 초기화 된다는 것이다. https://cwiki.apache.org/confluence/display/KAFKA/KIP-186%3A+Increa..
[Airflow] Airflow 학습 (2) Airflow는 그럼 어떻게 설치하나? 아래 docker-compose.yml를 참고하자. https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml Airflow를 Docker로 실행하고, 웹 서버를 접속해보면 다음과 같은 화면을 볼 수 있다. Pause/Unpause DAG: 비활성/활성 버튼이다. DAG: DAG 이름이다. Owner: DAG 파일을 만든 소유자이다. 생성자 추적시 사용된다. Runs: DAG 파일의 실행 상태를 나타낸다. (Success, Running, Failed) Schedule: DAG 파일의 실행 주기이다. Last Run: DAG 파일이 가장 최근으로 동작한 시간이다. Recent Tasks: 현재..
[Airflow] Airflow 학습 (1) Airflow를 왜 사용하는가? 이처럼 데이터를 목적에 맞게 활용하기 위해서는 수집 → 처리 → 저장 절차를 거칠 것이다. 처리는 데이터가 수집이 되어야 가능하고, 저장은 저장할 처리된 데이터가 있어야 가능하다. 만약 여기서 데이터 수집에서 문제가 발생한다면? 처리 → 저장 과정은 진행되지 못 할 것이다. 단순히 하나의 데이터 파이프라인이라면, 장애를 파악하기 비교적 편할 것이다. 하지만 하나의 파이프라인이 아닌, x개의 데이터 파이프라인이 존재한다면? 데이터 파이프라인 개수가 많을 수록 장애 확인 및 처리에 시간이 많이 소요 될 것이다. Airflow를 활용한다면, 데이터 파이프라인이 많더라도, 데이터 파이프라인을 시각적 관리, 모니터링, 스케쥴링, 데이터 파이프라인 설정 등을 관리하기 편이하다. 그럼..
[Postgresql] pg_dumpall 활용 경험 Postgresql DB가 동작중이던 서버가 날아감에 따라...gk.. (replica고 뭐고 딱 DB 하나 떠있었음...) 예전에 백업된 데이터를 다시 import 해야하는 상황이였다. 다행히도 pg_dumpall로 백업해놓은 dump file이 있었다. 이 dump file을 다시 적용했던 경험을 작성하려한다. 환경은 실 서비스에 적용하기 이전에 테스트 용으로 띄워서 테스트했다. (Docker Container) 1. Python Django REST Framework를 사용한 API 서버 2. Postgresql DB Postgresql 서버가 통채로 날아가는 경우를 경험하는건 처음이고, pg_dumpall로 export된 DB 백업 파일을 Import하는 것도 처음이였다. 백업을 진행하기 이전에 ..
[Hadoop]Docker Base 하둡 설치기 (2) [Hadoop]Docker Base 하둡 설치기 (1) 하둡 완벽가이드를 읽다보니, 실제로 구축해보고 직접 보고 싶다는 마음이 생겼다. 로컬에서 간단하게 구성하고 어느 환경에서든 구동할 수 있도록 Docker를 기반으로 구축해보았다. 먼저 결론부 kangprog.tistory.com 이전에 start-all.sh를 실행하지 않고, /bin/hdfs를 통해 각 노드 실행하는 걸로 만들었었다. 흠....... 다시 처음부터 갈아 엎었다. 이유는... 1. HA를 구성하려고 하다보니 각 노드를 실행시키는 것보다는 마스터 노드에서 일괄적으로 실행시키는게 편리했고, 2. NN, DN 폴더구조를 가지고 각 hdfs-site.xml을 관리 하려고 했는데, RM, HIVE 등등 늘어나면서, 만드는 내가 햇갈렸다. 그래..