Sdílet prostřednictvím


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 úloze clusteru Spark můžete určit, že ne výchozí konfigurace Sparku by mohla vést k optimalizovanějšímu spuštění úlohy Sparku. Proveďte testování srovnávacích testů 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í některé dostupné paměti.
--executor-memory Nastaví velikost paměti pro každého vykonavatele, který řídí velikost haldy na YARN. Vyhraďte paměť pro režii při provádění.

Vyberte správnou velikost exekutoru.

Při rozhodování o konfiguraci exekutoru zvažte režii garbage collection (GC) v Javě.

  • Faktory pro zmenšení velikosti exekutoru:

    1. Snižte velikost haldy pod 32 GB, abyste udrželi režii GC < 10 %.
    2. Snižte počet jader, abyste udrželi režii GC méně než 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) ve větších clusterech (>100 exekutorů).
    3. Zvětšete velikost haldy tak, aby vyhovovala úkolům náročným na paměť.
    4. Volitelné: Snížit paměťovou režii na proces výkonového agenta.
    5. Volitelné: Zvýšení využití a souběžnosti prostřednictvím přetížení CPU.

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. Upravte velikost na základě zkušebních spuštění i na předchozích faktorech, jako jsou režijní náklady na GC.

Při spouštění souběžných dotazů mějte na paměti:

  1. Začněte s 30 GB na vykonavatele a všemi dostupnými jádry počítače.
  2. Vytváření více paralelních aplikací Sparku prostřednictvím nadměrného odběru procesoru (přibližně 30% zlepšení latence)
  3. Distribuce dotazů napříč paralelními aplikacemi
  4. Upravte velikost na základě zkušebních spuštění a předchozích faktorů, jako jsou režijní náklady spojené s GC.

Další informace o použití Ambari ke konfiguraci exekutorů najdete v tématu Nastavení Apache Sparku – Exekutory Sparku.

Monitorujte výkon dotazů na odlehlé hodnoty nebo jiné problémy s výkonem pomocí zobrazení časového průběhu. Také graf SQL, statistiky úloh atd. Informace o ladění úloh Sparku pomocí YARN a serveru Historie Sparku najdete v tématu Ladění úloh Apache Spark spuštěných ve službě Azure HDInsight. Tipy pro použití serveru časové osy YARN najdete v tématu Přístup k protokolům aplikací Apache Hadoop YARN.

Úlohy se provádějí pomaleji 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 této zpomalení často dochází u větších clusterů (> 30 uzlů). V tomto případě rozdělte práci na větší počet úkolů, aby plánovač mohl kompenzovat pomalé úkoly. Například mít alespoň dvakrát tolik úkolů jako počet jader exekutoru v aplikaci. Můžete také povolit spekulativní provádění úkolů pomocí conf: spark.speculation = true.

Další kroky