NiFi 사용
    • PDF

    NiFi 사용

    • PDF

    Article Summary

    NiFi는 Dataflow 엔진으로서, 서로 다른 시스템 간의 데이터를 처리하고 배포하는 사용이 용이한 안정적인 시스템입니다. NiFi는 데이터를 수집 및 처리한 후 적재하기 위한 ETL 도구의 일종으로, 분산환경에서 대량의 데이터를 수집 및 처리하며 FBP개념을 구현하여 만든 오픈소스입니다.
    NiFi는 실시간 처리에 매우 적합하며, 데이터 유실 없이 데이터 전송이 가능하다는 장점이 있습니다.

    NiFi 구성 요소

    NiFi를 구성하는 컴포넌트는 크게 네 가지로 FlowFile, Processor, Connector, Controller이며, 각 요소별 설명은 다음과 같습니다.
    chadoop-nifi-1-1_ko

    • FlowFile: NiFi가 인식하는 데이터의 단위
      • Content : 데이터 자체를 의미
      • Attribute : 데이터와 관련된 정보를 키/값 쌍으로 표현한 것
    • Processor: FlowFile을 수집, 변형, 저장하는 기능
      • 데이터 처리를 완료한 이후에 새로운 FlowFile을 생성 가능
      • Processor는 여러 개가 병렬로 동작 가능
    • Connector: Processor와 Processor를 연결하고 FlowFile을 전달하는 기능
      • FlowFile의 Queue를 의미
      • 우선순위 및 backpressure를 설정해 부하를 조절
    • Flow Controller: 각 프로세스를 연결하며, 그 사이에 오가는 FlowFile을 관리

    NiFi 사용

    Local File을 HDFS로 옮기는 Data Flow를 작성하는 방법을 설명합니다. 로컬 디렉터리에 생성한 파일이 NiFi Data Flow를 통해 HDFS로 이동하는 전체 순서와 순서별 설명은 아래와 같습니다.

    1. GetFile 프로세서 생성
    2. 로컬 파일 생성
    3. HDFS 프로세서 생성
    4. 프로세서 연결
    5. 실행 및 결과 확인
    6. 문제해결

    1. GetFile 프로세서 생성

    NiFi에서 GetFile 프로세서를 생성하는 방법은 다음과 같습니다.

    1. 로컬 환경의 /tmp 디렉터리에서 아래와 같이 nifi-test 디렉터리를 생성해 주십시오.
    mkdir /tmp/nifi-test
    chown nifi /tmp/nifi-test
    
    1. NiFi Web GUI의 컴포넌트 툴바에서 프로세서를 드래그하여 캔버스 위로 이동해 주십시오.
      chadoop-nifi-1-2-3_ko
    2. NiFi Web GUI에서 GetFile 프로세서를 생성한 후 설정해 주십시오.
      chadoop-nifi-1-2-4_ko
    3. GetFile 프로세서를 우클릭한 후 [Configure] 버튼을 클릭해 주십시오.
    4. [PROPERTIES] 탭을 클릭해 주십시오.
    5. Input Directory 항목에 nifi-test 디렉터리 위치를 입력한 후 [APPLY] 버튼을 클릭해 주십시오.
      chadoop-nifi-1-2_ko

    2. 로컬 파일 생성

    로컬 환경에서 임의의 파일을 생성하는 방법은 다음과 같습니다. 아래와 같이 vi를 이용해 test1.txt 파일을 생성해 주십시오.

    [irteamsu@dev-nch271-ncl nifi-test]$ vi test1.txt
    

    3. HDFS 프로세서 생성

    NiFi에서 HDFS 프로세서를 생성하는 방법은 다음과 같습니다.

    1. 아래와 같이 로컬 환경에 있는 데이터를 저장할 HDFS 디렉터리를 생성해 주십시오.
    sudo -u hdfs hdfs dfs -mkdir -p /user/nifi
    sudo -u hdfs hdfs dfs -chown nifi /user/nifi
    
    1. NiFi Web GUI에서 PutHDFS 프로세서를 NiFi GUI를 통해 캔버스 위에 생성해 주십시오.
    2. PutHDFS 프로세서를 우클릭한 후 [Configure] 버튼을 클릭해 주십시오.
    3. [PROPERTIES] 탭을 클릭한 후 아래와 같이 프로퍼티를 작성해 주십시오.
    • Hadoop Configuration Resources : /etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml
    • Directory : /user/nifi
    1. [RELATIONSHIPS] 탭을 클릭한 후 failuresuccessterminate에 모두 체크해 주십시오.
      chadoop-nifi-3

    4. 프로세서 연결

    NiFi에서 GetFile 프로세서와 PutHDFS 프로세서를 연결하는 방법은 다음과 같습니다.

    1. NiFi Web GUI에서 GetFile 프로세서에 마우스 커서를 올린 후, 연결 아이콘을 드래그하여 PutHDFS 프로세서에 연결해 주십시오.
    2. 완성된 Data Flow는 아래와 같습니다.

    chadoop-nifi-1-3_ko

    5. 실행 및 결과 확인

    NiFi에서 Data Flow를 실행하고 로컬 환경에서 실행 결과를 확인하는 방법은 다음과 같습니다.

    1. NiFi Web GUI에 접속해 주십시오.
    2. GetFile 프로세서에 커서를 두고 마우스 오른쪽 버튼을 클릭한 후, [Start] 버튼을 클릭해 주십시오.
    3. PutHDFS 프로세서에 커서를 두고 마우스 오른쪽 버튼을 클릭한 후, [Start] 버튼을 클릭해 주십시오.
    4. /tmp/nifi-test 디렉터리를 확인하려면 로컬 환경에서 아래와 같이 입력해 주십시오.
      [irteamsu@dev-nch271-ncl nifi-test]$ pwd
       /tmp/nifi-test
      [irteamsu@dev-nch271-ncl nifi-test]$ ls
      
      • NiFi Data Flow를 통해 로컬 환경의 파일이 HDFS로 이동되어 /tmp/nifi-test 디렉터리에 파일이 존재하지 않습니다.
    5. HDFS로 이동된 파일을 확인하려면 로컬 환경에서 아래와 같이 입력해 주십시오.
      [irteamsu@dev-nch271-ncl nifi-test]$ sudo -u hdfs hdfs dfs -ls /user/nifi
      Found 1 items
      -rw-r--r--   2 nifi hdfs          4 2023-08-29 17:33 /user/nifi/test1.txt
      [irteamsu@dev-nch271-ncl nifi-test]$ sudo -u hdfs hdfs dfs -cat /user/nifi/test1.txt   
      
      • NiFi Data Flow를 통해 로컬 환경의 파일이 HDFS로 이동되었습니다.
    참고

    로컬 환경의 /tmp/nifi-test 디렉터리 내부에 파일이 생성되면 해당 파일은 자동으로 HDFS로 이동되며, 로컬 환경의 파일은 제거됩니다.

    6. 문제 해결

    Data Flow에 문제가 생겼을 때 Data Provenance를 확인하여 문제를 해결할 수 있습니다. Data Provenance를 확인하는 방법은 다음과 같습니다.

    1. NiFi Web GUI에서 확인할 프로세서에 커서를 두고 마우스 오른쪽 버튼을 클릭해 주십시오.
    2. View data provenance 버튼을 클릭해 주십시오.
    3. 아래와 같이 Data Provenance 정보를 확인할 수 있습니다.
      chadoop-nifi-1-4_ko

    chadoop-nifi-1-5_ko


    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.