Uruchomienie Apache Flink w Windows

Jak zainstalować Apache Flink w środowisku Windows.

Czym jest Apache Flink pewnie wiesz skoro to czytasz. Dla tych którzy tego nie wiedzą: Apache Flink to otwarta, ujednolicona platforma przetwarzania strumieniowego i przetwarzania wsadowego opracowana przez Apache Software Foundation. Rdzeniem Apache Flink jest rozproszony silnik przepływu danych strumieniowych napisany w Javie i Scali. Flink wykonuje dowolne programy przepływu danych w sposób równoległy i potokowy.

Flink do wersji 1.7.X zawierał w katalogu 'bin' plik 'start-cluster.bat' który pozwalał na uruchomienie Flink w środowisku. Nowe wersje nie zawierają tego pliku - Flink musi być uruchomiony w inny sposób.

Co jest potrzebne do uruchomienia Flink?

Java

Apache Flink

GitHub CLI (command line interface)

Instalacja Java

Zainstaluj JRE lub JDK w wersji 11. Flink powinien działać nadal z wersją 8 ale nie jest już oficjalnie wspierana przez nich. Funkcjonowanie z wersją 17 jest w opracowaniu. Utwórz zmienną JAVA_HOME w systemie.

Pobieranie Flink

Pobierając Apache Flink, wybierz "binaries" ze strony produktu a następnie plik z rozszerzeniem 'tgz' (zwykle piewszy z góry), np: 'flink-1.15.0-bin-scala_2.12.tgz'

Rozpakuj flink do docelowego katalogu np. "C:\dev\flink-1.13.6\"

Pobranie GitHub CLI

Pobierając GitHub CLI możesz poprzestać na wersji portable - nie musisz instalować tego programu na stałe. Rozpakuj program do docelowego katalogu:

Uruchomienie Apache Flink

Eksport zmiennej $FLINK_HOME

Uruchom 'git-bash.exe' z katalogu programu GitHub CLI. Jeśli klikniesz prawym przyciskiem myszy w górnej belce okna które pojawi się na ekranie, będziesz mieć dostęp do 'Options' gdzie możesz ustawić np. wielkość czcionki. Eksportuj scieżkę do katalogu Flink do zmiennej:

export FLINK_HOME=/C/dev/flink-1.13.6

Wykonanie tej komendy bez błędu spowoduje ustawienie zmiennej.

Zmień zawartość pliku $FLINK_HOME/bin/flink

Zmień opcję "log_setting" jak poniżej (zastąp ścieżkę "\\dev\\flink-1.13.6\" poniżej ścieżką ze swojej instalacji).

log_setting=(-Dlog.file="$log" -Dlog4j.configuration=file:"///C:/dev/flink-1.13.6/conf/log4j-cli.properties" -Dlog4j.configurationFile=file:"///C:/dev/flink-1.13.6/conf/log4j-cli.properties" -Dlogback.configurationFile=file:"///C:/dev/flink-1.13.6/conf/logback.xml")

Usuń INTERNAL_HADOOP_CLASSPATHS z "exec". Poniżej jak to powinno wyglądać po zmianie:

exec $JAVA_RUN $JVM_ARGS $FLINK_ENV_JAVA_OPTS "${log_setting[@]}" -classpath "`manglePathList "$CC_CLASSPATH:"`" org.apache.flink.client.cli.CliFrontend "$@"

Zmień zawartość pliku $FLINK_HOME/bin/flink-daemon.sh

Dokonaj takich samych zmian jak powyżej w tym pliku.

Nadanie nazwy dla TaskManager

Czym jest Task Manager? Menedżerowie zadań (nazywani również "workers") wykonują zadania przepływu danych oraz buforują i wymieniają strumienie danych. Zawsze musi istnieć co najmniej jeden menedżer zadań. Najmniejszą jednostką planowania zasobów w menedżerze zadań TaskManager jest "task slot". Liczba "task slot" w Menedżerze zadań wskazuje liczbę jednoczesnych zadań przetwarzania.

W najnowszej wersji Flink nazwa domyślnego task managera (i jednocześnie nazwa pliku) zawiera znak ":". Jest to niedozwolony znak w Windows. Dlatego wymuś zmianę na nazwę bez tego znaku wstawiając odpowiedni parametr w pliku "flink-conf.yaml". Mozę być ten parametr w dowolnym miejscu

taskmanager.resource-id:  tm_localhost_HarWorkingTM

Weryfikacja

Wykonaj polecenie jak poniżej by sprawdzić czy Flink może być uruchomiony (sprawdzenie wersji):

$FLINK_HOME/bin/flink --version

Jeśli wszystko było OK, zobaczysz rezultat:

$ $FLINK_HOME/bin/flink --version
Version: 1.13.6, Commit ID: b2ca390

Uruchamiamy Flink

Wykonaj komendę:

$FLINK_HOME/bin/start-cluster.sh

W oknie GitHub CLI ujrzysz rezultat podobny do tego:

Starting cluster.
Starting standalonesession daemon on host GKLP-WjKRv8Leb8.
Starting taskexecutor daemon on host GKLP-WjKRv8Leb8.

Możesz być poproszony o zaakceptowanie dostępu do Internetu - zrób to.

Dostęp do programu

Interfejs Apache Flink jest dostępny pod adresem http://localhost:8081

Możesz zmienić ten port i inne opcje w pliku konfiguracyjnym "conf/flink-conf.yaml"

Następnie sprawdź czy został uruchomiony Task Manager:

Gotowe - ciesz się Apache Flink!