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:
--------------- --- pic-2:
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
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
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. –