Povolení výpisů paměti haldy pro služby Apache Hadoop ve službě HDInsight se systémem Linux

Výpisy paměti haldy obsahují snímek paměti aplikace, včetně hodnot proměnných v době vytvoření výpisu. Jsou proto užitečné při diagnostice problémů, ke kterým dochází za běhu.

Služby

Výpisy paměti haldy můžete povolit pro následující služby:

  • Apache hcatalog – tempelton
  • Apache Hive – hiveserver2, metastore, derbyserver
  • mapreduce – jobhistoryserver
  • Apache yarn – resourcemanager, nodemanager, timelineserver
  • Apache hdfs – datový uzel, sekundární uzelname, uzel namenode

Můžete také povolit výpisy paměti haldy pro procesy mapování a redukce spuštěné službou HDInsight.

Principy konfigurace výpisu paměti haldy

Výpisy paměti haldy jsou povolené předáváním možností (někdy označovaných jako opts nebo parameters) prostředí JVM při spuštění služby. U většiny služeb Apache Hadoop můžete upravit skript prostředí používaný ke spuštění služby a předat tyto možnosti.

V každém skriptu je export pro *_OPTS, který obsahuje možnosti předané prostředí JVM. Například ve skriptu hadoop-env.sh obsahuje řádek, který začíná možnostmi export HADOOP_NAMENODE_OPTS= pro službu NameNode.

Procesy mapování a redukce se mírně liší, protože tyto operace jsou podřízeným procesem služby MapReduce. Každý proces mapování nebo redukce se spustí v podřízeného kontejneru a existují dvě položky, které obsahují možnosti JVM. Obě obsaženy v mapred-site.xml:

  • mapreduce.admin.map.child.java.opts
  • mapreduce.admin.reduce.child.java.opts

Poznámka:

K úpravě skriptů i nastavení mapred-site.xml doporučujeme použít Apache Ambari , protože Ambari zpracovává změny v různých uzlech v clusteru. Konkrétní kroky najdete v části Použití Apache Ambari .

Povolení výpisů paměti haldy

Následující možnost povolí výpisy paměti haldy, když dojde k chybě OutOfMemoryError:

-XX:+HeapDumpOnOutOfMemoryError

Označuje + , že je tato možnost povolená. Výchozí hodnota je zakázaná.

Upozorňující

Ve výchozím nastavení nejsou pro služby Hadoop ve službě HDInsight povolené výpisy paměti, protože soubory s výpisem paměti můžou být velké. Pokud je povolíte pro řešení potíží, nezapomeňte je po reprodukci problému zakázat a shromáždit soubory s výpisem paměti.

Umístění výpisu paměti

Výchozím umístěním souboru výpisu paměti je aktuální pracovní adresář. Umístění souboru můžete řídit pomocí následující možnosti:

-XX:HeapDumpPath=/path

Například použití -XX:HeapDumpPath=/tmp způsobí, že výpisy paměti budou uloženy v adresáři /tmp.

Skripty

Skript můžete také aktivovat, když dojde k chybě OutOfMemoryError . Například aktivací oznámení, abyste věděli, že k chybě došlo. K aktivaci skriptu pro OutOfMemoryError použijte následující možnost:

-XX:OnOutOfMemoryError=/path/to/script

Poznámka:

Vzhledem k tomu, že Apache Hadoop je distribuovaný systém, musí být všechny použité skripty umístěny na všech uzlech v clusteru, na kterém služba běží.

Skript musí být také v umístění, které je přístupné účtem, který služba spouští, a musí poskytovat oprávnění ke spuštění. Můžete například chtít ukládat skripty /usr/local/bin a používat chmod go+rx /usr/local/bin/filename.sh je k udělení oprávnění ke čtení a spuštění.

Použití Apache Ambari

Pokud chcete upravit konfiguraci služby, postupujte následovně:

  1. Ve webovém prohlížeči přejděte do https://CLUSTERNAME.azurehdinsight.netumístění , kde CLUSTERNAME je název vašeho clusteru.

  2. V seznamu vlevo vyberte oblast služby, kterou chcete upravit. Například HDFS. V oblasti uprostřed vyberte kartu Konfigurace .

    Image of Ambari web with HDFS Configs tab selected.

  3. Pomocí položky Filtrovat... zadejte opts. Zobrazí se pouze položky obsahující tento text.

    Apache Ambari config filtered list.

  4. Vyhledejte položku *_OPTS pro službu, pro kterou chcete povolit výpisy paměti haldy, a přidejte možnosti, které chcete povolit. Na následujícím obrázku jsem přidal -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/ (a) položku HADOOP_NAMENODE_OPTS :

    Apache Ambari hadoop-namenode-opts.

    Poznámka:

    Při povolování výpisů paměti haldy pro podřízený proces mapování nebo redukce vyhledejte pole s názvem mapreduce.admin.map.child.java.opts a mapreduce.admin.reduce.child.java.opts.

    Pomocí tlačítka Uložit uložte změny. Můžete zadat krátkou poznámku popisující změny.

  5. Po použití změn se vedle jedné nebo více služeb zobrazí ikona Restartovat povinné .

    restart required icon and restart button.

  6. Vyberte každou službu, která vyžaduje restartování, a pomocí tlačítka Akce služby zapněte režim údržby. Režim údržby zabraňuje vygenerování výstrah ze služby při restartování.

    Turn on hdi maintenance mode menu.

  7. Jakmile povolíte režim údržby, použijte tlačítko Restartovat , aby služba restartovala všechny efekty.

    Apache Ambari Restart All Affected entry.

    Poznámka:

    Položky tlačítka Restartovat se můžou lišit pro jiné služby.

  8. Po restartování služeb pomocí tlačítka Akce služby vypněte režim údržby. Tento Ambari obnoví monitorování výstrah pro službu.