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:

    1. Zmenšete velikost haldy pod 32 GB, abyste zachovali režii uvolňování paměti < o 10 %.
    2. Snižte počet jader, abyste zachovali režii uvolňování < paměti o 10 %.
  • Faktory pro zvětšení velikosti exekutoru:

    1. Snižte komunikační režii mezi exekutory.
    2. Snižte počet otevřených připojení mezi exekutory (N2) na větších clusterech (>100 exekutorů).
    3. Zvětšete velikost haldy pro úlohy náročné na paměť.
    4. Volitelné: Snižte režijní náklady na paměť exekutoru.
    5. Volitelné: Zvýšení využití a souběžnosti nadměrným odběrem procesoru

Obecně platí, že při výběru velikosti exekutoru:

  1. Začněte s 30 GB na exekutor a distribuujte dostupná jádra počítačů.
  2. Zvyšte počet jader exekutoru pro větší clustery (> 100 exekutorů).
  3. 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í:

  1. Začněte s 30 GB na exekutor a všechna jádra počítače.
  2. Vytvářejte více paralelních aplikací Sparku tím, že přeplatíte procesor (přibližně o 30% zlepšení latence).
  3. Distribuce dotazů napříč paralelními aplikacemi
  4. 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 = truepříkazu .

Další kroky