Povolení výpisů paměti haldy pro služby Apache Hadoop ve službě HDInsight založené na Linuxu

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

Služby

Výpisy 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

Pro procesy mapování a redukce spuštěné službou HDInsight můžete také povolit výpisy hald.

Principy konfigurace výpisu haldy

Výpisy paměti haldy jsou povolené předáváním možností (někdy označovaných jako opts nebo parameters) do 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žitý ke spuštění služby tak, aby tyto možnosti předával.

V každém skriptu je export pro *_OPTS, který obsahuje možnosti předané virtuálnímu počítači JVM. Například ve skriptu hadoop-env.sh obsahuje řádek, který začíná možnostmi export HADOOP_NAMENODE_OPTS= služby 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 běží v podřízeného kontejneru a existují dvě položky, které obsahují možnosti JVM. Obě obsažené 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 replikování mezi uzly 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á. Ve výchozím nastavení je tato možnost zakázána.

Upozornění

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

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

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

-XX:HeapDumpPath=/path

Použití -XX:HeapDumpPath=/tmp například způsobí uložení výpisů paměti v adresáři /tmp.

Skripty

Můžete také aktivovat skript, když dojde k chybě OutOfMemoryError . Například aktivace oznámení, abyste věděli, že došlo k chybě. Pomocí následující možnosti můžete aktivovat skript pro outOfMemoryError:

-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 spouš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 na https://CLUSTERNAME.azurehdinsight.netmísto, kde CLUSTERNAME je název 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 Filtr... zadejte výslovný souhlas. Zobrazí se jenom 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 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 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 požadovaný restartovat.

    restart required icon and restart button

  6. Vyberte každou službu, která potřebuje restartování, a pomocí tlačítka Akce službyzapněte režim údržby. Režim údržby brání 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, pomocí tlačítka Restartovat službu restartujte vše, co se projeví.

    Apache Ambari Restart All Affected entry

    Poznámka

    Položky tlačítka Restartovat se můžou lišit u jiných služeb.

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