Skip to content

Instantly share code, notes, and snippets.

@cheerupdi
cheerupdi / 12. Clustering 운영.md
Last active November 14, 2023 00:15
12. Clustering 운영

Clustering Management

본 내용의 서론부분은 공식문서를 번역하여 제공하는 글임 https://nifi.apache.org/docs.html

★by SDI

Zero -Master Clustering

나이파이는 Zero-Master 클러스터링 패러다임을 채용합니다. 클러스터의 각 노드는 데이터에서 동일한 작업을 수행하지만 각각 다른 데이터 집합에서 작동합니다. 노드들 중 하나는 Zookeeper에 의해 Cluster Coordinator로 자동으로 선출됩니다. 클러스터안에 있는 모든 노드들은 이 코디네이터 노드로 heartbeat/status 정보를 보내게 될 것입니다. 그리고 이 코디네이터 노드는 heartbeat/status 정보가 일정시간을 초과하여 넘어오지 않는 노드들의 연결을 해지할 책임을 가지게 됩니다. 추가적으로 새로운 노드가 클러스터에 합류하게 될 때, 새로운 노드는 가장 최근에 업데이트된 플로우를 얻기 위하여 우선 최근에 선출된 코디네이터 노드를 찾아 연결해야만 합니다. 코디네이터 노드가 노드가 합류하도록 결정을 내린다면 최근의 플로우가 그 노드로 보내지게 되며 그 노드는 클러스터에 합류할 수 있게 됩니다.

@cheerupdi
cheerupdi / 5. NiFi Componenet & Terminology.md
Last active May 12, 2021 07:58
5. NiFi Componenet & Terminology

NiFi Component & Terminology

그냥 공식문서 번역한 글 ★by SDI

DataFlow Manager: 데이터플로우 매니저(DFM)은 나이파이 데이터플로우의 컴포넌트를 추가, 삭제, 수정할수 있는 권한을 가진 유저를 말합니다.

FlowFile: 플로우파일은 나이파이의 데이터 조각으로 표현될 수 있습니다. 플로우파일은 두개의 컴포넌트로 이루어져 있는데 FlowFile Attributes와 FlowFile Content 이 그것들입니다. Content는 FlowFile에 의해 표현되는 데이터이며 Attribute는 데이터에 대하여 맥락이나 정보를 제공하는 특성값이라고 할 수 있습니다. Attribute는 Key-Value 쌍으로 이루어져 있습니다. 모든 플로우 파일들은 기본적으로 다음과 같은 Standard Attribute들을 가지고 있습니다.

  • uuid: 보편적으로 플로우파일들이 구별되는 식별값입니다.
@cheerupdi
cheerupdi / 11. Pre&Post Processors.md
Created June 5, 2019 02:39
11. Pre&Post Processors

Pre&Post Processors

KDN-Minerva 프로젝트에서 전처리 및 후처리는 효율성과 검증성을 고려하여 Pandas를 사용하여 개발하였습니다. 모든 프로세서는 Argument를 받아 동작하여 -h 옵션을 입력하여 상세 도움말을 보는게 가능합니다. 모든 전후처리 프로세서는 CSV파일을 기반으로 동작함을 전제합니다. JSON, Avro 등 다른 형식의 파일들은 전혀 호환되지 않음을 명심하세요.

Discretization(이산화)

개요

이산화의 의미는 도메인별로 다른 의미로 쓰이지만 여기서는 데이터마이닝 관점에서의 이산화(연속형 변수를 범주형으로 변화)를 기술합니다. 이산화 방법은 여러가지가 있지만 여기서는 심플하게 Equal-width 이산화 방법을 사용합니다.

실행 결과

  • Input Data
@cheerupdi
cheerupdi / 10. NiFi Controller Serivce.md
Last active September 5, 2021 07:28
10. NiFi Controller Serivce

NiFi Controller Service

각각의 목적이 다르기 때문에 프로퍼티는 제각각이나 같은 접속정보를 사용하는 PutSQL 프로세서를 여러개 사용한다고 해야한다고 가정해봅시다. 접속정보를 제외한 프로퍼티가 다르기 때문에 복사-붙여넣기로 대처하기도 상당히 난감한 상황입니다. 비슷한 프로세서들을 구성하는데에 있어 같은 접속정보를 여러번이나 입력해야 하는 수고를 거친다면 굉장히 소모적인 작업이 될 것입니다. 이러한 상황에 우아하게 대처하기 위해 NiFi 에서는 Controller Service를 제공합니다. 간단히 말해서 필요한 접속정보가 입력된 ConnectionPool 인스턴스를 생성하면 그 인스턴스가 허용되는 범위 내에서 인스턴스를 항상 가져다 쓸 수 있습니다. 이러한 역할이 Controller Service입니다. 주로 데이터베이스에 접속하기 위한 DBCP(Database Connection Pool) 혹은 인증과정을 거쳐야 하는 SSLContext 혹은 CSV파일을 변환할때 사용하는 CSVReader 등이 대표적인 Controller Service들중 하나입니다. NiFi에서는 1.9버전 기준으로 67개의 내장 Controller Service가 제공이 되며 사용자의 필요에 따라 새로운 Cuntroller Service를 개발하여 적용하고 사용할 수도 있습니다. Controller Service의 커스터마이징은 다음 공식문서 https://nifi.apache.org/docs/nifi-docs/html/developer-guide.html#controller-services 를 참조하십시오.

밑에는 예제가 되는 Controller Service를 만드는 과정을 보겠습니다.

★by SDI

DBCPConnectionPool

  1. Flow화면에서 오른쪽 마우스를 클릭하여 팝업메뉴를 열고 Configure을 클릭합시다.
@cheerupdi
cheerupdi / 3. NiFi Cluster & Secured 구성.md
Last active May 12, 2021 07:59
3. NiFi Cluster & Secured 구성

NiFi Cluster & Secured 구성

본 내용은 NiFi에 클러스터와 HTTPS를 사용하여 기동하는 방법을 알아보겠습니다. NiFi에 대해서 완벽한 이해는 되지 않아 조금은 불필요할 수 있는 부분도 있을 수 있습니다. ★by SDI

Prerequisite

  • Servers: node01(192.168.101.54), node02(192.168.101.55), node03(192.168.101.49)
  • OS: CentOS 7
  • NIFI 1.9

Configuration

@cheerupdi
cheerupdi / 9. NiFi HDFS to MariaDB.md
Last active October 1, 2021 06:35
9. NiFi HDFS to MariaDB

NiFi HDFS to MariaDB Flow

HDFS에서 가져온 파일들을 후처리하여 MariaDB로 삽입하는 플로우를 다룹니다. 8. NiFi Kafka to HDFS 와 흐름이 계속되는 매뉴얼입니다. ★by SDI

Overview

HDFS에서 데이터를 가져와 Python 스크립트를 동작시켜 후처리 된 CSV 형식의 데이터를 MariaDB에 넣는 과정이 주입니다. 중간에 CSV -> JSON 그리고 JSON -> SQL 으로 변환시키는 작업이 있습니다. CSV -> SQL이 아닌 두번의 과정을 거쳐 변환하는 이유는 NiFi의 기본 프로세서들 중에 CSV -> SQL 프로세서가 제공되지 않기 때문입니다. 필요에 따라 공식문서를 참조하여 직접 프로세서를 개발하여 사용할 수 있지만 이 플로우에서는 최대한 NiFi에서 주어진 기본 기능을 이용하여 플로우를 구축하고자 하였습니다. ConvertRecord에서 우측(GenFileName)으로 향하는 커넥션은 데이터검정을 위한 커넥션이며 이전 문서에서 상세히 다루고 있으므로 본 문서에서는 다루지 않도록 합니다.

overview

  • GetHDFS
@cheerupdi
cheerupdi / 8. NiFi Kafka to HDFS.md
Last active May 12, 2021 07:59
8. NiFi Kafka to HDFS

NiFi Kafka to HDFS Flow

Kafka로 받은 레코드셋을 전처리를 적용하여 HDFS로 로드하는 플로우를 살펴보겠습니다. 이 플로우는 두개의 구성으로 나눠져 있습니다. 처음은 Message를 Produce 하는 구성으로 되어 있고 두번째는 Message를 Consume하는 구성입니다. 맥락상 Produce가 나올 이유는 없지만 Consume을 하기위한 메세지 생성을 위해 임의로 넣은 구성입니다. Kafka의 Configuration에 보이는 생소한 용어들은 Kafka의 공식문서를 참조하십시오. ★by SDI

Overview

overview

@cheerupdi
cheerupdi / 7. NiFi CSV to MongoDB.md
Last active May 12, 2021 07:59
7. NiFi CSV to MongoDB

NiFi CSV to MongoDB Flow

SFTP를 통해 CSV파일을 가져와 MongoDB로 로드하는 플로우를 살펴보겠습니다. ★by SDI

Overview

구성된 Flow의 모습입니다. SFTP로 데이터를 받아 JSON으로 파일을 생성하여 MongoDB로 로드하는 과정을 나타냅니다. CSV형태의 파일과 변환된 JSON 파일은 중간결과로 HDFS에 저장합니다. 각 프로세서의 작업이 성공적으로 수행 할 경우는 success 커넥션으로 Flowfile이 전달되게 되며 HDFS로 결과가 로드되게 되며 실패했을 경우에는 failure 커넥션으로 Flowfile이 전달되어 로그를 남기는 구성입니다.

@cheerupdi
cheerupdi / 6. NiFi RDB to HDFS.md
Last active May 12, 2021 08:00
6. NiFi RDB to HDFS

NiFi MariaDB to HDFS Flow

MariaDB에서 HDFS로 로드하는 플로우를 살펴보겠습니다. ★by SDI

Overview

구성된 Flow의 모습입니다. 데이터베이스에서 데이터를 받아 CSV로 파일을 생성하여 HDFS로 로드하는 과정을 나타냅니다. 각 프로세서의 작업이 성공적으로 수행 할 경우는 success 커넥션으로 Flowfile이 전달되게 되며 HDFS로 결과가 로드되게 되며 실패했을 경우에는 failure 커넥션으로 Flowfile이 전달되어 로그를 남기는 구성입니다.

overview

@cheerupdi
cheerupdi / 도커 3.Installation.md
Created May 31, 2019 04:41
도커 3.Installation

Docker

도커 설치(Linux)

Uninstall old versions

과거의 도커 버전은 docker 혹은 docker-engine으로 불립니다. 혹시나 설치되어있다면 해당하는 디펜던시까지 싹다 삭제하세요.

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \