Optimalizace konfigurace clusteru pro Apache Spark
Tento článek popisuje, jak optimalizovat konfiguraci clusteru Apache Spark pro zajištění nejlepšího výkonu ve službě Azure HDInsight.
Přehled
V závislosti na úlohách clusteru Spark můžete zjistit, že jiná než výchozí konfigurace Sparku by vedlo k optimalizaci spouštění úloh Sparku. Proveďte srovnávací testování s ukázkovými úlohami a ověřte všechny konfigurace clusteru, které nejsou výchozí.
Tady jsou některé běžné parametry, které můžete upravit:
Parametr | Popis |
---|---|
--num-executors | Nastaví odpovídající počet exekutorů. |
--executor-cores | Nastaví počet jader pro každý exekutor. Obvykle byste měli mít exekutory střední velikosti, protože jiné procesy spotřebovávají část dostupné paměti. |
--executor-memory | Nastaví velikost paměti pro každý exekutor, který řídí velikost haldy v YARN. Zanechte paměť pro režii provádění. |
Vyberte správnou velikost exekutoru.
Při rozhodování o konfiguraci exekutoru vezměte v úvahu režijní náklady na uvolňování paměti Javy.
Faktory pro zmenšení velikosti exekutoru:
- Zmenšete velikost haldy pod 32 GB, abyste zachovali režii uvolňování paměti < o 10 %.
- Snižte počet jader, abyste zachovali režii uvolňování < paměti o 10 %.
Faktory pro zvětšení velikosti exekutoru:
- Snižte komunikační režii mezi exekutory.
- Snižte počet otevřených připojení mezi exekutory (N2) na větších clusterech (>100 exekutorů).
- Zvětšete velikost haldy pro úlohy náročné na paměť.
- Volitelné: Snižte režijní náklady na paměť exekutoru.
- Volitelné: Zvýšení využití a souběžnosti nadměrným odběrem procesoru
Obecně platí, že při výběru velikosti exekutoru:
- Začněte s 30 GB na exekutor a distribuujte dostupná jádra počítačů.
- Zvyšte počet jader exekutoru pro větší clustery (> 100 exekutorů).
- Velikost upravte na základě zkušebních spuštění a předchozích faktorů, jako jsou režijní náklady na uvolňování paměti.
Při spouštění souběžných dotazů zvažte následující:
- Začněte s 30 GB na exekutor a všechna jádra počítače.
- Vytvářejte více paralelních aplikací Sparku tím, že přeplatíte procesor (přibližně o 30% zlepšení latence).
- Distribuce dotazů napříč paralelními aplikacemi
- Velikost upravte na základě zkušebních spuštění a předchozích faktorů, jako jsou režijní náklady na uvolňování paměti.
Další informace o použití Ambari ke konfiguraci exekutorů najdete v tématu Nastavení Apache Sparku – Exekutory Sparku.
Sledujte výkon dotazů z hlediska odlehlých hodnot nebo jiných problémů s výkonem pomocí zobrazení časové osy. Také graf SQL, statistiky úloh atd. Informace o ladění úloh Sparku pomocí rozhraní YARN a serveru historie Sparku najdete v tématu Ladění úloh Apache Spark spuštěných v Azure HDInsight. Tipy k používání serveru YARN Timeline najdete v tématu Přístup k aplikačním protokolům Apache Hadoop YARN.
Pomalejší úlohy na některých exekutorech nebo uzlech
Někdy je jeden nebo několik exekutorů pomalejší než ostatní a provádění úkolů trvá mnohem déle. K tomuto zpomalení často dochází u větších clusterů (> 30 uzlů). V takovém případě rozdělte práci na větší počet úkolů, aby plánovač mohl kompenzovat pomalé úkoly. Máte například alespoň dvakrát tolik úkolů, kolik je počet jader exekutoru v aplikaci. Můžete také povolit spekulativní spouštění úloh pomocí conf: spark.speculation = true
příkazu .