Wdrażam zadanie przetwarzania danych Spark w klastrze EC2, zadanie jest małe dla klastra (16 rdzeni z łącznie 120 G RAM), największy RDD ma tylko 76k + wierszy. Ale mocno przekrzywiony w środku (wymaga to ponownego dzielenia na partycje), a każdy wiersz ma około 100k danych po serializacji. Praca zawsze utknęła w dzieleniu na partycje. Mianowicie, zadanie będzie stale się następujące błędy i ponownych prób:Jakie są prawdopodobne przyczyny org.apache.spark.shuffle.MetadataFetchFailedException: Brakuje lokalizacji wyjściowej do przetasowania?
org.apache.spark.shuffle.MetadataFetchFailedException: Missing an output location for shuffle
org.apache.spark.shuffle.FetchFailedException: Error in opening FileSegmentManagedBuffer
org.apache.spark.shuffle.FetchFailedException: java.io.FileNotFoundException: /tmp/spark-...
Próbowałem zidentyfikować problem, ale wydaje się, że zarówno w pamięci i na dysku zużycia maszyny rzucanie błędy te są poniżej 50%. Próbowałem także różnych konfiguracji, w tym:
let driver/executor memory use 60% of total memory.
let netty to priortize JVM shuffling buffer.
increase shuffling streaming buffer to 128m.
use KryoSerializer and max out all buffers
increase shuffling memoryFraction to 0.4
Ale żaden z nich nie działa. Małe zadanie zawsze wywołuje tę samą serię błędów i maksymalne ponowne próby (do 1000 razy). Jak rozwiązać ten problem w takiej sytuacji?
Wielkie dzięki, jeśli masz jakąkolwiek wskazówkę.
Wielkie dzięki! Mój problem polega na tym, że po prostu używam Spark Standalone master. Utracony executor jest rzeczywiście problemem w przypadku dużego tasowania, ponieważ każda z nich zajmuje dużo czasu, aby napisać do nietrwałej pamięci, a po jej utraceniu musi zacząć od nowa. Badam, czy częste punkty kontrolne mogą rozwiązać problem. – tribbloid
Czy uzyskałeś wgląd w to? – raam86
Przeprojektowałem mój przepływ pracy przez GC, niektóre ręcznie utrwalone RDD i zastępując inne persist() za pomocą punktu kontrolnego(), aby zwolnić więcej pamięci i miejsca. Zniknął na chwilę. Jednak biorąc pod uwagę profil zużycia pamięci/dysku, gdy zostanie on wymazany, nie powinno się w pierwszej kolejności.Będę aktualizował, gdy znów się z tym spotkam – tribbloid