본문 바로가기

[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 일때 이상적으로 분산된 상태이다. 이 상태에서 일부 브로커서버를 재시작 하게 되면 파티션 들..
[Kudu] Encoding & Compression Kudu에서는 컬럼의 인코딩과 압축을 통해 저장 데이터의 사이즈를 줄여, 디스크 공간을 효율적으로 사용할 수 있도록 하고 있다. 1. 인코딩 인코딩은 테이블 생성 시 컬럼의 정의로 지정할 수 있다. -- query with impala CREATE TABLE various_encodings ( id BIGINT PRIMARY KEY, c1 BIGINT ENCODING PLAIN_ENCODING, c2 BIGINT ENCODING AUTO_ENCODING, c3 TINYINT ENCODING BIT_SHUFFLE, c4 DOUBLE ENCODING BIT_SHUFFLE, c5 BOOLEAN ENCODING RLE, c6 STRING ENCODING DICT_ENCODING, c7 STRING ENCODIN..
[Kafka Manager] 설치하기 yahoo에서 만든 kafka-manager를 이용하면 카프카 운영을 위한 다양한 일들을 Web UI기반으로 처리할 수 있다. 설치 ## https://github.com/yahoo/kafka-manager/releases 에서 원하는 버전을 확인하고 -b 파라미터로 버전을 넘겨준다. ## 실제 실행파일은 해당 소스를 빌드한 후 생성이 됨으로 아래의 git clone은 아무 위치에서 실행해도 상관없다. $ git clone -b 2.0.0.2 https://github.com/yahoo/kafka-manager.git $ cd kafka-manager ## 아래의 명령어로 빌드를 하면 target/universal 하위에 zip파일로 빌드파일이 생성된다. $ ./sbt clean dist $ mv ./t..
[Kudu] Source 를 이용한 설치 kudu를 설치하는 방법은 cloudera repository를 이용하여 설치하는 방법이 있고, source build를 통해 설치하는 방법이 있는데, cloudera 버전은 라이센스 관련 이슈가 있어서, 사용에 문제가 없는 source build 버전을 통해 설치해보려고 한다. 설치환경 CentOS 7.6 1. 필수 라이브러리 설치 $ sudo yum install -y autoconf automake cyrus-sasl-devel cyrus-sasl-gssapi \ cyrus-sasl-plain flex gcc gcc-c++ gdb git java-1.8.0-openjdk-devel \ krb5-server krb5-workstation libtool make openssl-devel patch \ ..
[Kudu] Write And Compaction 본 포스팅은 아래의 출처의 정보들을 조합하여 나름의 구성을 진행하였다. 잘못 이해하고 있거나, 문제가 있는 부분이 있을수 있음을 사전에 명시하고 시작하도록 하겠다. 출처 및 참고자료 Apache Kudu Read & Write Paths Apache Kudu: Technical Deep Dive Getting Started with Kudu 1. 태블릿 탐색 Kudu에서 데이터를 읽기 전 가장 먼저 해야할 일은 찾고자 하는 데이터가 어떤 태블릿 서버의 어떤 태블릿에 들어가있는지를 찾는 것이다. 위의 이미지에서 잘 표현되어있듯, 가장 먼저 클라이언트는 Master Leader에게 bar 테이블의 key='foo'를 요청한다. 이후 마스터 테이블은 Metadata를 찾아 해당 데이터가 있는 태블릿 정보를 돌..
[Kudu] Kudu Architecture Apache Kudu 는 Columnar Storage로서, 실시간/대용량 데이터 분석이 가능한 저장 엔진이다. 여기에 Impala, Spark를 이용하여 쉽고 빠른 데이터 분석이 가능한 특징이 있다. 1. Kudu의 장점 OLAP성 작업의 빠른 처리 MapReduce, Spark 및 기타 Hadoop 에코 시스템 컴포넌트들과의 통합 Apache Impala와의 강력한 통합으로 Apache Parquet와 함께 HDFS를 사용하는 것보다 좋은 대안이 될수 있다. 강력하지만 유연한 일관성 모델을 통해 엄격한 직렬화 가능 일관성 옵션을 포함하여 요청별로 일관성 요구 사항을 선택할 수 있다. 순차적 및 랜덤 워크로드를 동시에 실행하기위한 강력한 성능. 관리가 쉬움 높은 가용성. 태블릿 서버와 마스터 서버는 R..
[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..