ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Apache Nifi] RPG(Remote Processor Group)를 이용하여 모듈처럼 파이프 라인 관리하기, or site to site 구성하기
    데이터 엔지니어링/Nifi 2022. 6. 17. 10:48
    반응형

    RPG(Remote Processor Group)이란?

    Remote은 원격을 의미하며 원격에 있는 Processor Group을 조작 할 수 있다는 것입니다. site to site 다른 서버에 flowfile을 보내서 사용도 가능하며, localhost를 연결하여 flowfile을 보낼 수도 있습니다. 그래서 이를 응용하여 이용할 수도 있는데, 예를 들어 nifi를 구성하다 보면 하나의 특정 기능을 하는 processor group으로 만들어 사용하는 경우가 많은데, 서비스가 커지면서 이 processor group을 연결하는 Connector가 많아지면 너무 복잡하게 processor group을 실행하는 것 처럼 보일 수 있어 너무 어지럽고 플로우 파악도 잘 안되는 경우가 있어 remote processor group으로 설정하여 모듈처럼 작성하는 경우가 있습니다.

    실습 - RPG를 이용하여 flowfile 보내고 받아보기

    완성 이미지 - 왼쪽은 중복 사용가능하게 만든 processor group, 오른쪽은 기본적으로 만든 RPG input flowfile, output flowfile

     

     

    실습 순서

    • processor group 만들기
    • remote input, output port 만들기
    • remote processor group 만들기
    • remote input, output port에 connector 만들기
    • 실행하여 flowfile 테스트 하기

    processor group 만들기

    위 사진에 test remote processor group을 들어가면 아래와 같이 구성 하였습니다. 아래 내용은 완성 본이니 참고 하시면 좋을 것같고, 순서대로 만들어 보겠습니다.

     

    remote input, output port 만들기

    먼저, input port와 output port를 구성해 보면 아래와 같이 Receive From을 remote connections 변경을 하고 이름을 기입하면 위에 사진 처럼 만들어 진다. Executepythonscript라는 processor는 그냥 아무거나 구성해서 flowfile을 지나가게 만들어 보면 됩니다. 저는 그냥 pythonscript를 실행하는 executeStreamCommand를 작성한거고 remote의 개념을 설정하는 글이니 넘어가겠습니다. 다른 포스팅을 확인해주세요.

     

    remote processor group 만들기

    완성 이미지

    메뉴바에서 아래의 remote process group을 끌어다가 생성하기

    그럼 아래와 같은 내용이 나오는데 URLs는 https://localhost:8443/nifi로 구성하면 해당 컴퓨터(host)에 접근한다는 의미 입니다. transport protocol은 http로 변경해 주면 http통신이 가능해지니 설정을 변경해 줍니다.

    그리고 remote processor group을 마우스 오른쪽 클릭 아래와 같은 팝업창이 나옵니다. Enable transmission을 눌러 실행 시켜 주시면 해당 site와 연결이 되며,

    그럼 아래의 그림 왼쪽에 파란색으로 변경이 되면서 연결이 됫다고 표시가 되며, 오류가 나면 오른쪽에 빨간색으로 오류 표시를 해줍니다.

    이런게 하면 remote processor group은 구성이 완료 된것입니다.

     

    remote input, output port에 connector 만들기

    실습을 위해 저는 generateFlowfile 프로세서를 만들었고, 이겁을 끌어다가 RPG에 연결했습니다. 그럼 아래와같이 팝업창이 뜨는 것을 볼 수 있습니다. 오른쪽에 RPG에 들어가는 것이면 아까 만들었던 port가 나오게 됩니다. 여려개를 만들었다면 여러개가 나오니 해당 port를 선택해 주면 됩니다.

    output port도 마찬가지로 나오는 것을 끌어다가 connector를 연결해주면 왼쪽 아까 만들었다 output port가 나오게 됩니다. 마찬가지로 연결해주면 connector구성은 끝이 납니다.

    실행하여 flowfile 테스트 하기

    자 그럼 실행 해 보도록 하겠습니다. generateFlowFile을 한번 실행 보면 Que가 하나 들어와있는것을 볼수가 있습니다.이를 remote processor group에서 받을려면 해당 processor group에 들어가 input port를 실행시켜 주면 됩니다.

    아래는 아까 구성했던 해당 processor group 입니다. remote input을 마우스 오른쪽 클릭해서 start를 눌러주면 Queue에 flowfile이 들어와 있는 것을 볼 수 있습니다. 여러번 실행하면 여러개의 Queue가 들어오는 것이니 숫자는 신경 안써도 되고 들어오는 것에 초점을 맞춰 주면 됩니다.

    그리고 executePythonScript를 한번 실행해주면 아래와 같이 하나의 queue가 나간 것을 볼수 있고, 여기서 output port를 마우스 오른쪽 클릭하여 실행 시켜주면

    아래의 그림처럼 remote output으로 queue가 나간것을 볼 수 있습니다.

    그리고 remote processor group에 하나의 output port 가 나온것을 볼수 있을 것입니다.

     

    마치며

    remote flowfile에 sent received를 확인하여 몇개가 전달되고 전달 받았는지 확인 할 수 있습니다. 이렇게 RPG를 이용하여 데이터 파이프라인이 너무 커져서 너무 복잡하게 connector가 구성된경우 모듈로 변경하여 관리가 가능하며, 다른 site에 연결하여 flowfile을 보내는 법을 알아보고 구성해 보았습니다. 연습해보시고 활용하시면 좋을 것 같습니다.

    반응형

    댓글

Designed by Tistory.