Głównie specjalizuję się w budowaniu procesów ETL odpowiedzialnych za integracje różnych źródeł danych za pomocą Apache NiFi.
  • Budowa prostego i automatycznego przepływu danych

Instalacja i konfiguracja środowiska Apache MiNiFi

Apache MiNiFi jest uzupełnieniem środowiska NiFi, które ma za zadanie gromadzenie danych u źródła ich powstania. Charakteryzuje się małym rozmiarem oraz niskim zużyciem zasobów, przez co doskonale sprawdza się we wdrożeniach na urządzeniach z małą ilością zasobów np. Raspberry Pi. W MiNiFi można konstruować proste przepływy danych, które mogą posłużyć do np. przechwytywania danych z czujników źródłowych, systemów lub serwerów i przesłaniu ich do instancji NiFi za pomocą protokołu Site-to-Site.

W przedstawionym przykładzie do instalacji Apache MiNiFi wykorzystam Raspberry Pi w wersji 3 z zainstalowanym systemem Oracle Linux.

Aktualizacja systemu

Instalację przeprowadzamy na uprzednio zaktualizowanym systemie operacyjnym

sudo dnf update -y 

Instalacja pakietu Java

Do działania MiNiFi wymagany jest zainstalowany pakiet Java OpenJDK 8 lub 11.

sudo dnf install java-1.8.0-openjdk java-1.8.0-openjdk-devel

Konfiguracja Apache NiFi

Połączenie Site-toSite

Do połączenia Site-to-Site wykorzystam NiFi, który uruchomiony jest bez SSL, spowodowane jest to tym, że, aby działała komunikacja SSL między NiFi, a MiNiFi potrzebne są certyfikaty ze wspólnego urzędu certyfikacji. Jak to zrobić zostało opisane w artykule Urząd certyfikacji dla środowiska Apache NiFi oraz Bezpieczna komunikacja pomiędzy NiFi, Registry oraz MiNiFi. Instancję NiFi, należy skonfigurować tak, aby umożliwić połączenie Site-to-Site z MiNiFi, w tym celu trzeba edytować plik nifi.properties

# Site to Site properties
nifi.remote.input.host=<nazwa_hosta>
nifi.remote.input.secure=false # w przypadku SSL należy zmienić wartość na true
nifi.remote.input.socket.port=10000
nifi.remote.input.http.enabled=true
nifi.remote.input.http.transaction.ttl=30 sec
nifi.remote.contents.cache.expiration=30 secs

Przejdźmy do zbudowania przepływu danych w NiFi, który umożliwi połączenie Site-to-Site. W tym celu, z górnego menu należy wybrać Input Port oraz Output Port i przeciągnąć na Canvas. W kolejnym kroku z listy procesorów wybieramy GenerateFlowFile i łączymy z Output Portem, ustawiamy jego właściwości tak, aby generował flowfile co 10 sekund. Input Port, polecam połączyć z Funnelem.

Ustawienia procesora GenerateFlowFile
Przepływ umożliwiający połączenie Site-to-Site z NiFi

Budowa przepływu danych dla MiNiFi

W kolejnym etapie tworzymy Process Group o nazwie MiNiFi, a w nim z menu wybieramy Remote Process Group i konfigurujemy jak poniżej.

Ustawienia Remote Process Group

Dodałem również procesor UpdateAttribute, który zaktualizuje atrybut o nazwie “isWorks”, aby przetestować połączenie z MiNiFi.

Ustawienia procesora UpdateAttribute

Przepływ danych dla MiNiFi prezentuje się następująco.

Przepływ danych dla MiNiFi

Następnie, należy zaznaczyć wszystkie elementy, przytrzymując lewy Shift i prawym przyciskiem myszy zapisać jako szablon.

Zaznaczanie szablonu
Tworzenie szablonu

Tak przygotowany szablon, należy pobrać z NiFi Templates, który znajduje się w hamburger menu, będzie on potrzebny do dalszych kroków.

Instalacja Apache MiNiFi

Do instalacji użyje MiNiFi w wersji 1.15.3, zatem należy pobrać i rozpakować odpowiednią wersję za pomocą poleceń.

sudo wget https://archive.apache.org/dist/nifi/1.15.3/minifi-1.15.3-bin.tar.gz
sudo tar vzxf minifi-1.15.3-bin.tar.gz
sudo ln -s /opt/minifi-1.15.3 /opt/minifi

Dodaj service, który pozwoli poprzez komendę systemctl uruchomić MiNiFi.

sudo bin/minifi.sh install

Z racji tego, że MiNiFi wymaga konwersji wcześniej przygotowanego flow z postaci.xml do .yml, wymagany jest MiNiFi Toolkit.

sudo wget https://archive.apache.org/dist/nifi/1.15.3/minifi-toolkit-1.15.3-bin.tar.gz
sudo tar vzxf minifi-toolkit-1.15.3-bin.tar.gz
sudo ln -s /opt/minifi-toolkit-1.15.3 /opt/minifi-toolkit

Wcześniej pobrany szablon, należy przesłać na urządzenie z MiNiFi do katalogu /opt/minifi-toolkit, a następnie przekonwertować do postaci.yml, następującym poleceniem.

sudo bash bin/config.sh transform MiNiFi.xml config.yml

W pliku config.yml, należy edytować dwie wartości key oraz algorithm w Sensitive Props, można je skopiować z konfiguracji NiFi.

Sensitive Props:
key: plEIDJtwFvs+DJWoxUWlu4e2f80PRMLb
algorithm: NIFI_PBKDF2_AES_GCM_256

Poprawnie przekonwertowany szablon, należy przenieść do katalogu /opt/minifi/conf i uruchomić MiNiFi za pomocą komendy systemctl.

sudo mv /opt/minifi-toolkit/config.yml /opt/minifi/conf
sudo systemctl daemon-reload
sudo systemctl start nifi-registry
sudo systemctl enable nifi-registry

Przepływ można przetestować uruchamiając GenerateFlowFile, który został dodany na głównym widoku w Apache NiFi. Wygenerowany flowfile zostanie przesłany do MiNiFi, a następnie wróci do NiFi z dodatkowym atrybutem itWorks

Atrybut itWorks, który został dodany poprzez MiNiFi
Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *