7

Mój klaster Spark ma 1 master i 3 pracowników (na 4 oddzielnych maszynach, każda maszyna z 1 rdzeniem), a inne ustawienia są takie, jak na poniższym rysunku, gdzie spark.cores.max jest ustawiony na , oraz spark.executor.cores również (w pic-1)dlaczego Spark nie dystrybuuje zadań do wszystkich executorów, ale do jednego egzekutora?

Ale kiedy przesłać swoją pracę do klastra Spark, Spark z internetowej UI widzę tylko jeden wykonawca jest używany (zgodnie z używana pamięć i RDD bloki w pi c-2), ale nie dla wszystkich executorów. W tym przypadku szybkość przetwarzania jest znacznie wolniejsza niż się spodziewałem.

Ponieważ ustawiłem maksymalne rdzenie na 3, czy nie wszystkie executory powinny być użyte do tej pracy?

Jak skonfigurować Sparka do dystrybucji bieżącego zadania do wszystkich executorów, zamiast tylko jednego executora wykonującego bieżące zadanie?

Wielkie dzięki.

------------------ PIC 1: spark settings

--------------- --- pic-2: enter image description here

Odpowiedz

2

Mówiłeś, że są uruchomione dwa odbiorniki, jakie odbiorniki są one (Kafka, HDFS, Twitter ??)

Która wersja iskra używasz?

Z mojego doświadczenia wynika, że ​​jeśli używasz dowolnego Odbiornika innego niż odbiornik plików, to zajmie on 1 rdzeń na stałe. Więc kiedy mówisz, że masz 2 odbiorniki, to 2 rdzenie będą trwale używane do odbierania danych, więc pozostanie ci tylko 1 rdzeń, który wykonuje pracę.

Proszę również zamieścić zrzut ekranu Spark Master Hompage. Zrzut ekranu strony Job's Streaming.

+0

dla rodzaju Odbiorników, nie jestem pewien, po prostu używając domyślnego po pobraniu pakietu Spark 1.3. To powinien być Kafka. – keypoint

+0

Przesyłam strumień z AWS Kinesis do Sparka, przypuszczam, że ten odbiornik odpowiada odłamkom Kinesis, ponieważ mam 2 odłamki dla mojego strumienia Kinesis. – keypoint

+1

Czy możesz opublikować migawkę strony głównej strumienia Spark. dokumenty "Podczas lokalnego uruchamiania programu Spark Streaming nie używaj" lokalnego "lub" lokalnego [1] "jako głównego adresu URL, ponieważ jeden z nich oznacza, że ​​tylko jeden wątek będzie używany do lokalnego uruchamiania zadań. DStream oparty na odbiorniku (np. Gniazda, Kafka, Flume itp.), Następnie pojedynczy wątek będzie używany do uruchomienia odbiornika, nie pozostawiając żadnego wątku do przetwarzania odebranych danych.Dlatego, gdy działa lokalnie, zawsze używaj "local [n ] "Jako główny adres URL, gdzie n> liczba odbiorników do uruchomienia" Powyższe dotyczy również klastra. –

0

W strumieniu iskier przesyłanych jest tylko 1 odbiornik, aby uzyskać dane ze źródła wejściowego do RDD.

Ponowne utworzenie danych po pierwszej transformacji może zwiększyć równoległość.

+0

Witam Mam 2 uruchomione odbiorniki. Czy mógłbyś podać przykład dzielenia na partycje? – keypoint