Ruční škálování clusterů Azure HDInsight

HDInsight poskytuje flexibilitu s možnostmi horizontálního navýšení a snížení kapacity počtu pracovních uzlů v clusterech. Tato pružnost umožňuje zmenšit cluster po hodinách nebo na víkendech. A rozbalíte je během špičkových obchodních požadavků.

Škálovat cluster před pravidelným zpracováním dávek, aby cluster měl dostatečné prostředky. Po dokončení zpracování a využití se rozroste a zmenšuje cluster HDInsight dolů na méně pracovních uzlů.

Cluster můžete škálovat ručně pomocí jedné z metod popsaných níže. Možnosti automatického škálování můžete použít také k automatickému horizontálnímu navýšení kapacity směrem nahoru a dolů v reakci na určité metriky.

Poznámka

Podporují se jenom clustery se službou HDInsight verze 3.1.3 nebo vyšší. Pokud si nejste jistí, jakou verzi clusteru máte, můžete na stránce vlastností zkontrolovat.

Nástroje pro škálování clusterů

Microsoft poskytuje následující nástroje pro škálování clusterů:

Nástroj Popis
Modul Az PowerShellu Set-AzHDInsightClusterSize -ClusterName CLUSTERNAME -TargetInstanceCount NEWSIZE
Modul AzureRM PowerShellu Set-AzureRmHDInsightClusterSize -ClusterName CLUSTERNAME -TargetInstanceCount NEWSIZE
Azure CLI az hdinsight resize --resource-group RESOURCEGROUP --name CLUSTERNAME --workernode-count NEWSIZE
Azure Classic CLI azure hdinsight cluster resize CLUSTERNAME NEWSIZE
Azure Portal Otevřete podokno cluster HDInsight, v nabídce vlevo vyberte Velikost clusteru a pak v podokně velikost clusteru zadejte počet pracovních uzlů a vyberte Uložit.

Možnost clusteru Azure Portal Scale

Pomocí kterékoli z těchto metod můžete škálovat cluster HDInsight během několika minut nahoru nebo dolů.

Důležité

  • Rozhraní příkazového řádku Azure Classic je zastaralé a mělo by se používat jenom s modelem nasazení Classic. Pro všechna ostatní nasazení použijte rozhraní příkazového řádku Azure.
  • Modul PowerShell AzureRM je zastaralý. Pokud je to možné, použijte prosím modul AZ Module .

Dopad operací škálování

Když přidáte uzly do spuštěného clusteru HDInsight (horizontální navýšení kapacity), úlohy nebudou ovlivněny. Nové úlohy lze bezpečně odeslat, když je spuštěn proces škálování. Pokud dojde k selhání operace škálování, při selhání zůstane cluster ve funkčním stavu.

Pokud odeberete uzly (horizontální snížení kapacity), nevyřízené nebo spuštěné úlohy selžou po dokončení operace škálování. Příčinou této chyby je to, že některé služby se restartují během procesu škálování. Cluster může být zablokovaný v bezpečném režimu během operace ručního škálování.

Dopad změny počtu datových uzlů se liší pro každý typ clusteru podporovaný službou HDInsight:

  • Apache Hadoop

    Můžete plynule zvýšit počet pracovních uzlů v běžícím clusteru Hadoop, aniž by to ovlivnilo žádné úlohy. Nové úlohy je možné odeslat i v průběhu operace. Chyby v operaci škálování jsou řádně zpracovávány. Cluster je vždy ponechán ve funkčním stavu.

    Pokud je cluster Hadoop škálované dolů a méně datovými uzly, jsou některé služby restartovány. Toto chování způsobí, že všechny spuštěné a nedokončené úlohy selžou při dokončení operace škálování. Po dokončení operace ale můžete úlohy znovu odeslat.

  • Apache HBase

    Bez problémů můžete přidat nebo odebrat uzly do clusteru HBA v době, kdy je spuštěný. Regionální servery se automaticky vyrovnávají během několika minut od dokončení operace škálování. Regionální servery ale můžete vyrovnávat ručně. Přihlaste se ke clusteru hlavnímu uzlu a spusťte následující příkazy:

    pushd %HBASE_HOME%\bin
    hbase shell
    balancer
    

    Další informace o použití prostředí HBA najdete v tématu Začínáme s příkladem Apache HBA v HDInsight.

  • Apache Storm

    Můžete hladce přidávat nebo odebírat datové uzly, když je spuštěná. Po úspěšném dokončení operace škálování ale budete muset topologii znovu vyvážit. Nové vyrovnávání umožňuje, aby topologie znovu nastavila Nastavení paralelismu na základě nového počtu uzlů v clusteru. Chcete-li znovu vyrovnávat spuštěné topologie, použijte jednu z následujících možností:

    • Webové uživatelské rozhraní pro vyplavení

      Pomocí následujícího postupu můžete znovu vyvážit topologii pomocí uživatelského rozhraní.

      1. Otevřete https://CLUSTERNAME.azurehdinsight.net/stormui ve webovém prohlížeči, kde CLUSTERNAME je název vašeho clusteru s více podsítěmi. Po zobrazení výzvy zadejte název správce clusteru HDInsight (správce) a heslo, které jste zadali při vytváření clusteru.

      2. Vyberte topologii, kterou chcete znovu vyvážit, a pak vyberte tlačítko pro vyvážení . Zadejte zpoždění před provedením operace obnovení rovnováhy.

        Rebilance škálování ve službě HDInsight

    • Nástroj rozhraní příkazového řádku (CLI)

      Připojení k serveru a pomocí následujícího příkazu znovu vyvážit topologii topologie:

      storm rebalance TOPOLOGYNAME
      

      Můžete také zadat parametry pro přepsání pomocného parametru paralelismus původně poskytnuté topologie. Například kód níže překonfiguruje mytopology topologii na 5 pracovních procesů, 3 vykonavatele pro komponentu Blue-Spout a 10 prováděcích modulů pro komponentu žlutého šroubu.

      ## Reconfigure the topology "mytopology" to use 5 worker processes,
      ## the spout "blue-spout" to use 3 executors, and
      ## the bolt "yellow-bolt" to use 10 executors
      $ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10
      
  • Kafka

    Po operaci škálování byste měli znovu vyrovnávat repliky oddílů. Další informace najdete v článku o vysoké dostupnosti dat s Apache Kafka v dokumentu HDInsight .

  • Apache Hive LLAP

    Po škálování na N pracovní uzly bude HDInsight automaticky nastavit následující konfigurace a restartovat podregistr.

    • Maximální počet souběžných dotazů: hive.server2.tez.sessions.per.default.queue = min(N, 32)
    • Počet uzlů používaných LLAP podregistru: num_llap_nodes = N
    • Počet uzlů pro spuštění démona LLAP podregistru: num_llap_nodes_for_llap_daemons = N

Jak bezpečně škálovat cluster

Horizontální navýšení kapacity clusteru se spuštěnými úlohami

Aby se předešlo tomu, že spuštěné úlohy selžou během operace horizontálního škálování, můžete vyzkoušet tři věci:

  1. Před škálováním clusteru počkejte na dokončení úloh.
  2. Ručně ukončete úlohy.
  3. Znovu odešle úlohy po uzavření operace škálování.

Chcete-li zobrazit seznam probíhajících a spuštěných úloh, můžete použít uživatelské rozhraní příz správce prostředků následujícím postupem:

  1. Z Azure Portalvyberte svůj cluster. Cluster se otevře na nové stránce portálu.

  2. V hlavním zobrazení přejděte na řídicí panely clusteru > Ambari domů. Zadejte přihlašovací údaje clusteru.

  3. V uživatelském rozhraní Ambari vyberte možnost příze v seznamu služeb v nabídce na levé straně.

  4. Na stránce PŘÍZe vyberte možnost Rychlé odkazy a najeďte myší na aktivní hlavní uzel a pak vyberte Správce prostředků uživatelské rozhraní.

    Rychlé odkazy na Apache Ambari Správce prostředků uživatelské rozhraní

K uživatelskému rozhraní Správce prostředků můžete přistupovat přímo pomocí https://<HDInsightClusterName>.azurehdinsight.net/yarnui/hn/cluster .

Zobrazí se seznam úloh spolu s jejich aktuálním stavem. Na snímku obrazovky je aktuálně spuštěná jedna úloha:

Správce prostředků aplikace uživatelského rozhraní

Pokud chcete tuto spuštěnou aplikaci odstranit ručně, spusťte v prostředí SSH následující příkaz:

yarn application -kill <application_id>

Příklad:

yarn application -kill "application_1499348398273_0003"

Zablokování v bezpečném režimu

Při horizontálním navýšení kapacity clusteru používá HDInsight rozhraní pro správu Apache Ambari a nejdřív vyřadí další pracovní uzly. Uzly replikují své bloky HDFS do jiných online pracovních uzlů. Služba HDInsight pak cluster bezpečně škáluje. HDFS přejde do bezpečného režimu během operace škálování. HDFS by se mělo vycházet po dokončení škálování. V některých případech se ale hdfs během operace škálování zasekne v bezpečném režimu kvůli pod replikaci bloku souborů.

Ve výchozím nastavení je systém HDFS nakonfigurován s nastavením 1, které určuje, kolik kopií jednotlivých bloků dfs.replication souborů je k dispozici. Každá kopie bloku souborů je uložená v jiném uzlu clusteru.

Pokud není k dispozici očekávaný počet blokových kopií, systém HDFS vstoupí do bezpečného režimu a Ambari vygeneruje výstrahy. HDFS může pro operaci škálování vstoupit do bezpečného režimu. Pokud se nezjme požadovaný počet uzlů pro replikaci, cluster se může zasekne v bezpečném režimu.

Příklady chyb při zapnuté bezpečném režimu

org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /tmp/hive/hive/819c215c-6d87-4311-97c8-4f0b9d2adcf0. Name node is in safe mode.
org.apache.http.conn.HttpHostConnectException: Connect to active-headnode-name.servername.internal.cloudapp.net:10001 [active-headnode-name.servername. internal.cloudapp.net/1.1.1.1] failed: Connection refused

Můžete zkontrolovat protokoly názvu uzlu ze složky v blízkosti času, kdy se cluster škáloval, a podívat se, kdy byl v /var/log/hadoop/hdfs/ nouzovém režimu. Soubory protokolu mají název Hadoop-hdfs-namenode-<active-headnode-name>.* .

Hlavní příčinou bylo, že Hive při spouštění dotazů závisí na dočasných souborech v HDFS. Když HDFS vstoupí do bezpečného režimu, Hive nemůže spouštět dotazy, protože do HDFS nemůže zapisovat. Dočasné soubory v HDFS jsou umístěné na místní jednotce připojené k jednotlivým virtuálním uzlům pracovního uzlu. Soubory se replikují mezi ostatními pracovními uzly minimálně na třech replikách.

Jak zabránit zablokování služby HDInsight v bezpečném režimu

Existuje několik způsobů, jak službě HDInsight zabránit v bezpečném režimu:

  • Před horizontálním navýšením kapacity služby HDInsight zastavte všechny úlohy Hive. Případně můžete proces škálování naplánovat, abyste zabránili konfliktu se spouštěním úloh Hive.
  • Před horizontálním navýšením kapacity ručně vyčistěte soubory pomocného adresáře tmp Hive v HDFS.
  • Škálování služby HDInsight pouze na tři pracovní uzly, minimálně. Vyhněte se tak nízké úrovni jako u jednoho pracovního uzlu.
  • Spuštěním příkazu v případě potřeby ponechte bezpečný režim.

Tyto možnosti jsou popsány v následujících částech.

Zastavení všech úloh Hive

Před horizontálním navýšením kapacity na jeden pracovní uzel zastavte všechny úlohy Hive. Pokud je vaše úloha naplánovaná, po dokončení práce Hive proveďte škálování dolů.

Zastavení úloh Hive před škálováním pomáhá minimalizovat počet pomocné soubory ve složce tmp (pokud jsou k nějaké).

Ruční vyčištění pomocné soubory Hivu

Pokud Hive opustil dočasné soubory, můžete tyto soubory před horizontálním navýšením kapacity ručně vyčistit, abyste se vyhnuli bezpečnému režimu.

  1. Zkontrolujte umístění, které se používá pro dočasné soubory Hive, pomocí vlastnosti hive.exec.scratchdir konfigurace. Tento parametr je nastavený v rámci /etc/hive/conf/hive-site.xml :

    <property>
        <name>hive.exec.scratchdir</name>
        <value>hdfs://mycluster/tmp/hive</value>
    </property>
    
  2. Zastavte služby Hive a ujistěte se, že jsou dokončeny všechny dotazy a úlohy.

  3. Vyjádrte obsah výše uvedeného pomocného adresáře, abyste hdfs://mycluster/tmp/hive/ zjistili, jestli obsahuje nějaké soubory:

    hadoop fs -ls -R hdfs://mycluster/tmp/hive/hive
    

    Tady je ukázkový výstup, když soubory existují:

    sshuser@scalin:~$ hadoop fs -ls -R hdfs://mycluster/tmp/hive/hive
    drwx------   - hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c
    drwx------   - hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/_tmp_space.db
    -rw-r--r--   3 hive hdfs         27 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/inuse.info
    -rw-r--r--   3 hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/inuse.lck
    drwx------   - hive hdfs          0 2017-07-06 20:30 hdfs://mycluster/tmp/hive/hive/c108f1c2-453e-400f-ac3e-e3a9b0d22699
    -rw-r--r--   3 hive hdfs         26 2017-07-06 20:30 hdfs://mycluster/tmp/hive/hive/c108f1c2-453e-400f-ac3e-e3a9b0d22699/inuse.info
    
  4. Pokud víte, že Hive s těmito soubory skončil, můžete je odebrat. Zkontrolujte, že Hive nemá spuštěné žádné dotazy, a to tak, že se na stránce uživatelského Resource Manager Yarn.

    Příklad příkazového řádku pro odebrání souborů z HDFS:

    hadoop fs -rm -r -skipTrash hdfs://mycluster/tmp/hive/
    

Škálování SLUŽBY HDInsight na tři nebo více pracovních uzlů

Pokud se vaše clustery při škálování na méně než tři pracovní uzly často zablokují v bezpečném režimu, zachov si alespoň tři pracovní uzly.

Mít tři pracovní uzly je nákladnější než škálování na pouze jeden pracovní uzel. Tato akce ale zabrání zablokování clusteru v bezpečném režimu.

Škálování služby HDInsight na jeden pracovní uzel

I když dojde ke škálování clusteru na jeden uzel, pracovní uzel 0 bude i nadále přetrvat. Pracovní uzel 0 se nikdy nemůže vyřazen z provozu.

Spuštěním příkazu opouštěte bezpečný režim.

Poslední možností je spustit příkaz Pro bezpečný režim. Pokud hdfs kvůli pod replikaci souboru Hive v nouzovém režimu, spusťte následující příkaz, abyste bezpečný režim opustili:

hdfs dfsadmin -D 'fs.default.name=hdfs://mycluster/' -safemode leave

Horizontální navýšení velikosti clusteru Apache HBase

Oblastní servery se automaticky vyvažují během několika minut od dokončení operace škálování. Pokud chcete servery oblastí vyvážit ručně, proveďte následující kroky:

  1. Připojení ke clusteru HDInsight pomocí SSH. Další informace najdete v tématu Použití SSH se službou HDInsight.

  2. Spusťte prostředí HBase:

    hbase shell
    
  3. Pomocí následujícího příkazu ručně vyvažte servery oblastí:

    balancer
    

Další kroky

Konkrétní informace o škálování clusteru HDInsight najdete v těchto tématu: