본문 바로가기

OpenSource

(32)
[Nifi] Custom Processor 생성 및 테스트 nifi에 커스텀 프로세서를 등록할 일이 생겼는데, 커스텀 프로세서를 빌드한 후 테스트 하기가 까다로워 도커를 이용하여 로컬에 환경을 구축하고 간단하게 테스트 하는 방법을 적용해 보았다. 1. 프로젝트 생성 아래는 maven이 설치 된 환경에서 진행했으며, maven이 설치되지 않았다면 Installing Apache Maven 을 참고하여 maven을 설치하고 진행하도록 하자. $ mvn archetype:generate ## 아래와 같이 Choose a number .. 라고 나오면 nifi를 입력하여 nifi archetype을 검색하자. Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 1..
[Kafka] 파티션 Skew, Leader Skew 그리고 Reassign Partition kafka-manager에서 카프카를 운영하다보면 Skewed 혹은 Leader Skewed가 true가 된 것을 종종 볼수 있다. 그럼 Skew는 무엇일까? Skew는 카프카 토픽의 파티션들이 각 브로커 서버에 균등하게 나눠지는것이 아니라, 한쪽으로 치우친 현상으로 Skew라고 한다. 또한 각 파티션들의 리플리케이션에 의해 Leader Partition/Follower Partition 으로 나누는데, Leader Partition이 각 브로커에 균등하게 분산되지 않은것을 Leader Skew 라고 한다. 위 그림은 kafka broker : 3, partition: 3, replication factor: 2 일때 이상적으로 분산된 상태이다. 이 상태에서 일부 브로커서버를 재시작 하게 되면 파티션 들..
[Airflow] SparkSubmitOperator를 이용한 spark Job Submit Airflow에서는 다양한 Operator를 지원하는데 그 중 Spark을 실행하기 위한 SparkSubmitOperator 라는 것이 존재한다. 이번에는 SparkSubmitOperator를 이용하여 spark application을 동작시켜보도록 하겠다. 사전작업 SparkSubmitOperator는 내부적으로 spark binary인 spark-submit 을 호출하는 방식으로 spark을 실행하고 있다. 그러므로 Apache spark 에서 각자의 환경에 알맞은 spark을 각 airflow worker에 다운로드 한후 다운로드 경로를 $SPARK_HOME을 환경변수로 등록하고 $SPARK_HOME/bin 을 path에 추가한다. 또한 필자는 yarn에 spark job을 동작시킬것임으로 HADO..
[Airflow] macOS catalina에서 hostname does not match this instance's hostname 에러 처리 얼마전 macOS Catalina버전으로 업그레이드 되면서 로컬에서 airflow가 정상적으로 동작하지 않는 문제가 생겼다. The recorded hostname [1m1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa[0m does not match this instance's hostname [1m1.0.0.127.in-addr.arpa 위의 에러 메세지를 기준으로 airflow 코드를 들여다 보기로 했다. ## airflow/jobs/local_task_job.py def heartbeat_callback(self, session=None): """Self destruct task if state has been..
[Airflow] Scheduler SPOF(Single Point Of Failure) 제거하기 위의 그림은 celery executor를 이용한 여러대의 워커로 구성한 아키텍쳐이다. 이중 scheduler는 DB에서 스케줄 정보를 가져와 redis의 pub/sub을 이용하여 worker들에게 잡을 할당하는데, 이때 scheduler는 단일고장점(Single Point Of Failure-SPOF) 이 된다. 따라서 Downtime이 없는 airflow를 구성하려면 SPOF를 제거하는것이 중요한데 airflow 자체적으로 해결할수 있는 방법은 아직 존재하지 않는다. 'master 서버에 scheduler를 두개 실행해놓으면 되지 않을까' 라는 생각을 해보지만, 이렇게 scheduler를 여러개 실행하면 동일한 DAG가 실행시킨 scheduler 갯수만큼 실행된다. 이를 해결하기 위한 ..
[Airflow] 커버로스 설정&Hive 연결 airflow를 이용하여 kerberos 인증이 적용된 데이터소스(ex - hadoop)에 접근하려면 커버로스 설정을 airflow에 적용해야 한다. 아래의 예제는 kerberos 인증이 적용된 hive에 접근하는 방법을 작성해 보고자 한다. 1. 커버로스 설정 커버로스 연동은 id/pw를 통해서 연동할 수도 있지만, 아래의 설정은 keytab 파일을 가지고 설정하는 방법을 다룬다. $ cd $AIRFLOW_HOME $ sudo yum install thrift_sasl cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5 cyrus-sasl-plain $ pip3 install apache-airflow[hive]==1.10.9 ## apache-airflow[ker..
[Airflow] Cluster Installation 설치 환경 CentOS 7.7 airflow 1.10.5 airflow는 단일 서버에서 설치하는 방법외에 python celery모듈을 이용하여 webserver와 worker서버를 분리 할수 있다. 아래는 webserver 1대와 worker서버 2대에 설치하는방법이며, 이때 Celery를 이용하여 multiple worker를 설정하려면 추가적으로 Redis 또는 RabbitMQ, Mysql 서버를 추가적으로 필요로 한다. 보통의 구성으로는 web server: airflow webserver, airflow scheduler, mysql, redis 설치 worker server : airflow worker 와 같은 식으로 설치한다. airflow 모듈 airflow는 역할에 따라 몇가지 모듈이 ..
[Azkaban] Installation 준비 1. OpenJDK 설치 $ sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel $ readlink /etc/alternatives/java ##java 위치 확인 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.x86_64/jre/bin/java ## 위 경로중 jre까지의 경로로 JAVA_HOME 환경변수를 잡아준다. $ echo 'export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.x86_64/jre"' >> ~/.bash_profile $ echo 'export PATH=$PATH:$JAVA_HOME/bin:' ..