Sdílet prostřednictvím


Zabezpečená správa prostředí Pythonu v Azure HDInsightu s využitím akce skriptu

HDInsight v clusteru Spark nabízí dvě integrované instalace Pythonu: Anaconda Python 2.7 a Python 3.5. Zákazníci můžou potřebovat přizpůsobit prostředí Pythonu, jako je instalace externích balíčků Pythonu. Tady si ukážeme osvědčený postup bezpečné správy prostředí Pythonu pro clustery Apache Spark ve službě HDInsight.

Požadavky

Cluster Apache Spark ve službě HDInsight. Pokyny najdete v tématu Vytváření clusterů Apache Spark ve službě Azure HDInsight. Pokud ještě nemáte cluster Spark ve službě HDInsight, můžete během vytváření clusteru spustit akce skriptů. Projděte si dokumentaci, jak používat akce vlastních skriptů.

Podpora opensourcového softwaru používaného v clusterech HDInsight

Služba Microsoft Azure HDInsight používá prostředí opensourcových technologií vytvořených kolem Apache Hadoopu. Microsoft Azure poskytuje obecnou úroveň podpory opensourcových technologií. Další informace najdete na webu Nejčastější dotazy k podpoře Azure. Služba HDInsight poskytuje další úroveň podpory integrovaných komponent.

Ve službě HDInsight jsou k dispozici dva typy opensourcových komponent:

Komponenta Popis
Integrovaný Tyto komponenty jsou předinstalované v clusterech HDInsight a poskytují základní funkce clusteru. Například Apache Hadoop YARN Resource Manager, dotazovací jazyk Apache Hive (HiveQL) a knihovna Mahout patří do této kategorie. Úplný seznam komponent clusteru je k dispozici v novinkách ve verzích clusteru Apache Hadoop poskytovaných službou HDInsight.
Vlastní Jako uživatel clusteru můžete nainstalovat nebo použít jakoukoli komponentu dostupnou v komunitě nebo vytvořenou vámi.

Důležité

Plně se podporují komponenty poskytované clusterem HDInsight. podpora Microsoftu pomáhá izolovat a řešit problémy související s těmito komponentami.

Vlastní komponenty obdrží komerčně rozumnou podporu, která vám pomůže s dalším řešením tohoto problému. Podpora Microsoftu může problém vyřešit nebo vás může požádat, abyste se zapojili do dostupných kanálů pro opensourcové technologie, kde najdete podrobné znalosti dané technologie. Například existuje mnoho webů komunity, které lze použít, například: Stránka otázek Microsoft Q&A pro HDInsight, https://stackoverflow.com. Projekty Apache mají také weby projektů na https://apache.org.

Vysvětlení výchozí instalace Pythonu

Clustery HDInsight Spark mají nainstalovaný Anaconda. V clusteru jsou dvě instalace Pythonu, Anaconda Python 2.7 a Python 3.5. Následující tabulka ukazuje výchozí nastavení Pythonu pro Spark, Livy a Jupyter.

Nastavení Python 2.7 Python 3.5
Cesta /usr/bin/anaconda/bin /usr/bin/anaconda/envs/py35/bin
Verze Sparku Výchozí hodnota nastavená na 2.7 Může změnit konfiguraci na verzi 3.5.
Verze Livy Výchozí hodnota nastavená na 2.7 Může změnit konfiguraci na verzi 3.5.
Jupyter Jádro PySpark Jádro PySpark3

Pro verzi Spark 3.1.2 se odebere jádro Apache PySpark a pod kterým se nainstaluje /usr/bin/miniforge/envs/py38/binnové prostředí Pythonu 3.8, které používá jádro PySpark3. Proměnné PYSPARK_PYTHON prostředí a PYSPARK3_PYTHON proměnné prostředí se aktualizují následujícím kódem:

export PYSPARK_PYTHON=${PYSPARK_PYTHON:-/usr/bin/miniforge/envs/py38/bin/python}
export PYSPARK3_PYTHON=${PYSPARK_PYTHON:-/usr/bin/miniforge/envs/py38/bin/python}

Bezpečná instalace externích balíčků Pythonu

Cluster HDInsight závisí na integrovaném prostředí Pythonu, a to jak v Pythonu 2.7, tak v Pythonu 3.5. Přímá instalace vlastních balíčků v těchto výchozích integrovaných prostředích může způsobit neočekávané změny verze knihovny. A cluster dále přerušte. Pokud chcete bezpečně nainstalovat vlastní externí balíčky Pythonu pro aplikace Spark, postupujte podle kroků.

  1. Vytvořte virtuální prostředí Pythonu pomocí conda. Virtuální prostředí poskytuje izolovaný prostor pro vaše projekty bez narušení ostatních. Při vytváření virtuálního prostředí Pythonu můžete zadat verzi Pythonu, kterou chcete použít. Stále potřebujete vytvořit virtuální prostředí, i když chcete použít Python 2.7 a 3.5. Tento požadavek spočívá v tom, že výchozí prostředí clusteru se nerušilo. Spuštěním akcí skriptů v clusteru pro všechny uzly s následujícím skriptem vytvořte virtuální prostředí Pythonu.

    • --prefix určuje cestu, kde se nachází virtuální prostředí Conda. Existuje několik konfigurací, které je potřeba dále změnit na základě zde zadané cesty. V tomto příkladu použijeme py35new, protože cluster už má existující virtuální prostředí s názvem py35.
    • python= určuje verzi Pythonu pro virtuální prostředí. V tomto příkladu používáme verzi 3.5, stejnou verzi jako cluster integrovaný v jednom. K vytvoření virtuálního prostředí můžete použít také jiné verze Pythonu.
    • anaconda určuje package_spec jako anaconda k instalaci balíčků Anaconda ve virtuálním prostředí.
    sudo /usr/bin/anaconda/bin/conda create --prefix /usr/bin/anaconda/envs/py35new python=3.5 anaconda=4.3 --yes
    
  2. V případě potřeby nainstalujte do vytvořeného virtuálního prostředí externí balíčky Pythonu. Spuštěním akcí skriptů v clusteru pro všechny uzly s následujícím skriptem nainstalujte externí balíčky Pythonu. Abyste mohli zapisovat soubory do složky virtuálního prostředí, musíte mít oprávnění sudo.

    V indexu balíčku vyhledejte úplný seznam dostupných balíčků. Můžete také získat seznam dostupných balíčků z jiných zdrojů. Balíčky, které jsou dostupné například prostřednictvím conda-forge, můžete nainstalovat.

    Pokud chcete nainstalovat knihovnu s nejnovější verzí, použijte následující příkaz:

    • Použití kanálu Conda:

      • seaborn je název balíčku, který chcete nainstalovat.
      • -n py35new zadejte název virtuálního prostředí, který se právě vytvoří. Nezapomeňte název odpovídajícím způsobem změnit na základě vytvoření vašeho virtuálního prostředí.
      sudo /usr/bin/anaconda/bin/conda install seaborn -n py35new --yes
      
    • Nebo použijte úložiště PyPi, změňte seaborn a py35new odpovídajícím způsobem:

      sudo /usr/bin/anaconda/envs/py35new/bin/pip install seaborn
      

    Pokud chcete nainstalovat knihovnu s konkrétní verzí, použijte následující příkaz:

    • Použití kanálu Conda:

      • numpy=1.16.1 je název balíčku a verze, kterou chcete nainstalovat.
      • -n py35new zadejte název virtuálního prostředí, který se právě vytvoří. Nezapomeňte název odpovídajícím způsobem změnit na základě vytvoření vašeho virtuálního prostředí.
      sudo /usr/bin/anaconda/bin/conda install numpy=1.16.1 -n py35new --yes
      
    • Nebo použijte úložiště PyPi, změňte numpy==1.16.1 a py35new odpovídajícím způsobem:

      sudo /usr/bin/anaconda/envs/py35new/bin/pip install numpy==1.16.1
      

    Pokud název virtuálního prostředí neznáte, můžete SSH přejít k hlavnímu uzlu clusteru a spustit /usr/bin/anaconda/bin/conda info -e , aby se zobrazila všechna virtuální prostředí.

  3. Změňte konfigurace Sparku a Livy a přejděte na vytvořené virtuální prostředí.

    1. Otevřete uživatelské rozhraní Ambari, přejděte na stránku Spark 2, kartu Konfigurace.

      Change Spark and Livy config through Ambari.

    2. Rozbalte rozšířené livy2-env, přidejte následující příkazy v dolní části. Pokud jste nainstalovali virtuální prostředí s jinou předponou, změňte cestu odpovídajícím způsobem.

      export PYSPARK_PYTHON=/usr/bin/anaconda/envs/py35new/bin/python
      export PYSPARK_DRIVER_PYTHON=/usr/bin/anaconda/envs/py35new/bin/python
      

      Change Livy config through Ambari.

    3. Rozbalte rozšíření Advanced spark2-env, nahraďte existující příkaz exportu PYSPARK_PYTHON dole. Pokud jste nainstalovali virtuální prostředí s jinou předponou, změňte cestu odpovídajícím způsobem.

      export PYSPARK_PYTHON=${PYSPARK_PYTHON:-/usr/bin/anaconda/envs/py35new/bin/python}
      

      Change Spark config through Ambari.

    4. Uložte změny a restartujte ovlivněné služby. Tyto změny vyžadují restartování služby Spark 2. Uživatelské rozhraní Ambari zobrazí výzvu k požadovanému připomenutí restartování, kliknutím na Restartovat restartujte všechny ovlivněné služby.

      Restart services.

    5. Nastavte dvě vlastnosti relace Sparku, abyste zajistili, že úloha odkazuje na aktualizovanou konfiguraci Sparku: spark.yarn.appMasterEnv.PYSPARK_PYTHON a spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON.

      Pomocí terminálu nebo poznámkového bloku použijte spark.conf.set funkci.

      spark.conf.set("spark.yarn.appMasterEnv.PYSPARK_PYTHON", "/usr/bin/anaconda/envs/py35/bin/python")
      spark.conf.set("spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON", "/usr/bin/anaconda/envs/py35/bin/python")
      

      Pokud používáte livy, přidejte do textu požadavku následující vlastnosti:

      "conf" : {
      "spark.yarn.appMasterEnv.PYSPARK_PYTHON":"/usr/bin/anaconda/envs/py35/bin/python",
      "spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON":"/usr/bin/anaconda/envs/py35/bin/python"
      }
      
  4. Pokud chcete použít nové vytvořené virtuální prostředí v Jupyteru. Změňte konfigurace Jupyteru a restartujte Jupyter. Spuštění akcí skriptu na všech uzlech hlaviček s následujícím příkazem ukazující Jupyter na nové vytvořené virtuální prostředí. Nezapomeňte upravit cestu k předponě, kterou jste zadali pro vaše virtuální prostředí. Po spuštění této akce skriptu restartujte službu Jupyter prostřednictvím uživatelského rozhraní Ambari, aby byla tato změna dostupná.

    sudo sed -i '/python3_executable_path/c\ \"python3_executable_path\" : \"/usr/bin/anaconda/envs/py35new/bin/python3\"' /home/spark/.sparkmagic/config.json
    

    Spuštěním kódu můžete dvakrát potvrdit prostředí Pythonu v Poznámkovém bloku Jupyter:

    Check Python version in Jupyter Notebook.

Další kroky