Próbuję pobrać jakieś dane z HDFS. Używam do tego procesora listHDFS i fetchHDFS.
Kiedy zatrzymałem procesor fetchHDFS, było wiele aktywnych wątków nawet po zatrzymaniu procesora. Aby zabić te wątki, użyłem opcji „zakończ”.
Chciałem tylko poznać działanie opcji zakończenia.
- Czy wdzięcznie zamyka wszystkie połączenia z FS?
- Ponieważ wszystkie wątki są zabijane, czy stracę dane, które zostały przez nie zużyte?
- Czy zalecana jest opcja zakończenia tylko wtedy, gdy wątki są zablokowane lub przepływ przechodzi w stan zamrożony?
1 odpowiedź
Kiedy zatrzymasz procesor, mówi on frameworkowi NiFi, aby nie planował/wykonywał już procesora, ale mogą już być wykonywane wątki, które muszą dokończyć to, co robiły. Zwykle te wątki powinny się zakończyć i zobaczysz, że aktywne wątki znikają, ale czasami wątek jest blokowany (zwykle podczas próby nawiązania połączenia sieciowego gdzieś bez ustawionego odpowiedniego limitu czasu) i ten wątek może nigdy się nie zakończyć i dlatego musi zostać zakończony .
Opcjatermin spowoduje przerwanie wątku, a następnie poddanie go kwarantannie, co spowoduje usunięcie go z puli w celu dalszego wykonania. Wątek może wtedy zakończyć pracę w tle lub jeśli nie zareaguje na przerwanie i zostanie zablokowany, może utknąć w tle do następnego restartu NiFi.
W przypadku FetchHDFS, zakładając, że pomyślnie pobierał dane, najprawdopodobniej znajdował się w trakcie odczytu pliku z HDFS i potrzebował tylko kilku minut na ukończenie i nie powinien wymagać zakończenia. Jeśli nigdy nie pobierał danych i utknął podczas łączenia się z HDFS, użyjesz zakończenia.
Podobne pytania
Nowe pytania
hadoop
Hadoop to projekt open source Apache, który zapewnia oprogramowanie do niezawodnego i skalowalnego przetwarzania rozproszonego. Rdzeń składa się z rozproszonego systemu plików (HDFS) i menedżera zasobów (YARN). Różne inne projekty open source, takie jak Apache Hive, używają Apache Hadoop jako warstwy trwałości.