일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- NoSQL
- Service
- jupyter
- yarn
- hadoop
- docker
- ambari
- Scala
- slack
- Namenode
- python
- MapReduce
- airflow
- re
- HBase
- Example DAG
- HIVE
- execution_date
- Kafka
- LDAP
- Lambda architecture
- HDP
- HDFS
- 람다 아키텍처
- 정규표현식
- slack app
- SlackWebhookOperator
- java
- 빅데이터
- Windows
- Today
- Total
IT 삽질기
이번 글에서는 Python List 요소를 이용해 모든 경우의 수를 구하는 방법에 대해서 알아보자. 조합을 구하기 위해서는 itertools 에 있는 combinations를 사용하면 되는데 사용법은 매우 간단하다. itertools 먼저 itertools에 대해서 간단히 알아보도록 하자. itertools에 대해 공식 문서에서는 Functions creating iterators for efficient looping(효율적인 루핑을 위한 이터레이터를 만드는 함수) 라고 소개한다. 이번 글에서 알아볼 조합을 만드는 combinations 외에 순열을 만드는 함수 등 다양한 함수를 제공한다. 자세한 사항은 공식문서를 참고하기 바란다. https://docs.python.org/ko/3/library/it..
이번 글에서는 Airflow의 execution_date에 대해서 이해해보도록 하자. execution_date에 대한 설명을 하기에 앞서 Airflow는 batch schedulering을 위한 tool이라는 것을 기억하자. execution_date란 ? 먼저 execution_date에 대한 정의를 내려보자. airflow에서의 execution_date는 dag가 실행되어야 하는 기대값이라고 생각할 수 있을 것 같다. 한 가지 예를 들어 살펴보자. 매일 자정 전날에 발생했던 log들을 HDFS로 이관하는 작업이 있다고 가정해보자. 자정이 지나 오늘의 날짜는 2021-09-26일인데 이관되어야 하는 log들의 날짜는 2021-09-25일이 된다. 이런 경우 사용자는 하루 전 날짜의 데이터를 가지고 ..
이번 글에서는 Airflow Xcom에 대해서 알아보도록 하자. Airflow Version : 2.1.3에서 테스트를 진행했다. Xcom이란 Xcom은 DAG 내의 task 사이에서 데이터를 전달하기 위해서 사용되는데, CeleryExecutor를 예로 들면, 각 task들이 각기 다른 Worker에서 실행될 수 있으며, Xcom은 이러한 경우 task간 데이터 전달을 가능하게 한다. Variables와 마찬가지로 key-value의 형식으로 사용되지만, Variables과는 달리 Xcom은 DAG내에서만 공유할 수 있는 변수라는 점이다. Xcom을 이용해 데이터를 전달하는 경우 DataFrame이나 많은 양의 데이터를 전달하는 것은 지원하지 않으며, 소량의 데이터만 전달하는 것을 권장한다. Xcom을..
이번 글에서는 Airflow 설치 시 기본적으로 생성되는 Example DAG를 제거하는 방법에 대해서 알아보도록 하자. Example DAG Example DAG란 Airflow를 설치하고 실행시키면 기본적으로 DAG에 등록되어 있는 DAG 항목들을 말하며, Airflow의 기능들에 대해 알아볼 때는 사용하기 좋지만, 실 운영환경에서는 운영 DAG와 섞여 혼란을 유발할 수 있다. airflow.cfg 파일에서 기본값으로 설정된 내용 때문에 example DAG들이 보이게 되며, 해당 설정값을 변경하면 더 이상 보이지 않게 된다. 먼저 설정값을 알아보도록 하자. airflow.cfg 파일에 load_examples가 True로 되어 있는 것을 확인할 수 있다. 일단 이 설정값을 False로 변경해보자. ..
이번 글에서는 Airflow에서 SlackOperator을 사용하는 방법에 대해서 알아보도록 하자. 이 글에서는 Slack App은 이미 생성되어 있다고 가정하며, Slack App을 생성하는 방법은 이전 글을 참고하기 바란다. 2021.09.11 - [개발] - Slack App 만들어 메세지 보내기 Airflow Slack provider 설치하기 Airflow 2.x 버전을 사용하는 경우 slack provider을 설치해야 하며, 관련 정보는 Airflow 공식 문서에서 얻을 수 있다. https://airflow.apache.org/docs/apache-airflow-providers-slack/stable/index.html 아래의 명령어를 이용해 slack provider을 설치한다. pip..
이번 글에서는 Slack App을 만들어 메세지를 보내(일반적으로 Webhook)는 방법에 대해서 알아보자. Slack App 만들기 먼저 Slack App을 만들어보자. Slack App는 아래의 링크에서 만들 수 있으며, 링크에 접근해 Create an App을 클릭한다. https://api.slack.com/apps Slack에서 App를 만드는데 2가지 방법을 제공하지만 여기서는 From scratch를 이용해 만든다. App Name과 App을 사용할 workspace를 선택한 후 Create App을 누르면 App이 생성된다. App을 생성하고 나면 App의 기능을 선택할 수 있는데, 여기서는 외부의 메세지를 Slack에 게시할 것이기 때문에 Incoming Webhooks를 사용한다. In..
이번 글에서는 CentOS에서 Airflow webserver, scheduler을 서비스로 등록하여 사용하는 방법을 알아보도록 하자. Serviced 관련 내용은 지난 글을 참고하기 바란다. 이번 글에서도 지난 글과 마찬가지로 CentOS에서 동작하는 서비스에 대해서 설명한다. 2021.05.17 - [개발] - CentOS 7 serviced 등록 및 실행 Airflow Serviced 등록하기 Serviced에 등록하기 위한 파일은 Airflow의 공식 github에서 확인이 가능하다. https://github.com/apache/airflow/tree/main/scripts/systemd 이 글에서는 webserver를 service로 등록하는 방법에 대해서만 이야기하며 scheduler이나 w..
이번 글에서는 GC(Garbage Collection)에 대해서 알아보도록 하자. GC란? GC란 메모리 관리 기법중 하나로 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능으로 어떤 변수도 가리키지 않게 된 영역을 의미한다. 예를 들어 살펴보도록 하자. public class Person { private String name; public Person(String name){ this.name = name; } } Person a = new Person("Anna"); a = null; a = new Person("Elsa"); 위와 같은 코드가 있을 때 최초에 생성했던 Anna는 프로그램이 실행되며 결국 아무도 참조하지 않는 영역이 되는데 이를 가비지라고 하며 이렇게..