Python-környezet biztonságos kezelése az Azure HDInsightban szkriptműveletekkel
A HDInsight két beépített Python-telepítéssel rendelkezik a Spark-fürtben: ezek az Anaconda Python 2.7 és a Python 3.5. Előfordulhat, hogy az ügyfeleknek testre kell szabni a Python-környezetet, például külső Python-csomagokat kell telepíteni. Itt bemutatjuk az Apache Spark-fürtök Python-környezeteinek biztonságos kezelésére vonatkozó ajánlott eljárásokat a HDInsighton.
Előfeltételek
Apache Spark-fürt megléte a HDInsightban. További útmutatásért lásd: Apache Spark-fürt létrehozása az Azure HDInsightban. Ha még nem rendelkezik Spark-fürttel a HDInsighton, szkriptműveleteket futtathat a fürt létrehozása során. Tekintse meg az egyéni szkriptműveletek használatáról szóló dokumentációt.
HDInsight-fürtökön használt nyílt forráskódú szoftverek támogatása
A Microsoft Azure HDInsight szolgáltatás az Apache Hadoop körül létrehozott nyílt forráskódú technológiák környezetét használja. A Microsoft Azure általános támogatást nyújt a nyílt forráskódú technológiákhoz. További információkért tekintse meg az Azure támogatási gyik webhelyét. A HDInsight szolgáltatás további szintű támogatást nyújt a beépített összetevőkhöz.
A HDInsight szolgáltatásban kétféle nyílt forráskódú összetevő érhető el:
Összetevő | Leírás |
---|---|
Beépítve | Ezek az összetevők előre telepítve vannak a HDInsight-fürtökön, és biztosítják a fürt alapvető funkcióit. Ebbe a kategóriába tartozik például az Apache Hadoop YARN Resource Manager, az Apache Hive lekérdezési nyelv (HiveQL) és a Mahout-kódtár. A fürtösszetevők teljes listája elérhető a HDInsight által biztosított Apache Hadoop-fürtverziók újdonságai között. |
Egyéni | Ön, mint a fürt felhasználója, telepítheti vagy használhatja a számítási feladatban a közösségben elérhető vagy Ön által létrehozott összetevőket. |
Fontos
A HDInsight-fürthöz biztosított összetevők teljes mértékben támogatottak. Microsoft ügyfélszolgálata segít elkülöníteni és megoldani az összetevőkkel kapcsolatos problémákat.
Az egyéni összetevők kereskedelmi szempontból ésszerű támogatást kapnak a probléma további megoldásához. Előfordulhat, hogy a Microsoft ügyfélszolgálata meg tudja oldani a problémát, vagy arra kérhetik Önt, hogy vegye fel a kapcsolatot az nyílt forráskód technológiák elérhető csatornáival, ahol a technológia terén mély szakértelem található. Például számos közösségi webhely használható, például: Microsoft Q&A kérdésoldal a HDInsighthoz, https://stackoverflow.com
. Az Apache-projektekben projektwebhelyek https://apache.org
is találhatók.
A Python alapértelmezett telepítésének ismertetése
A HDInsight Spark-fürtöken telepítve van az Anaconda. A fürtben két Python-telepítés található, az Anaconda Python 2.7 és a Python 3.5. Az alábbi táblázat a Spark, Livy és Jupyter alapértelmezett Python-beállításait mutatja be.
Beállítás | Python 2.7 | Python 3.5 |
---|---|---|
Elérési út | /usr/bin/anaconda/bin | /usr/bin/anaconda/envs/py35/bin |
Szikra változat | Alapértelmezett beállítás: 2.7 | A konfiguráció 3.5-ösre módosítható |
Livy-verzió | Alapértelmezett beállítás: 2.7 | A konfiguráció 3.5-ösre módosítható |
Jupyter | PySpark kernel | PySpark3 kernel |
A Spark 3.1.2-es verziójához az Apache PySpark kernel el lesz távolítva, és egy új Python 3.8-környezet van telepítve a PySpark3 kernel által használt alatt /usr/bin/miniforge/envs/py38/bin
. A PYSPARK_PYTHON
környezeti és PYSPARK3_PYTHON
a környezeti változók a következőkkel frissülnek:
export PYSPARK_PYTHON=${PYSPARK_PYTHON:-/usr/bin/miniforge/envs/py38/bin/python}
export PYSPARK3_PYTHON=${PYSPARK_PYTHON:-/usr/bin/miniforge/envs/py38/bin/python}
Külső Python-csomagok biztonságos telepítése
A HDInsight-fürt a beépített Python-környezettől függ, mind a Python 2.7-ről, mind a Python 3.5-ről. Az egyéni csomagok közvetlen telepítése ezekben az alapértelmezett beépített környezetekben váratlan kódtár-verzióváltozásokat okozhat. És bontsa tovább a fürtöt. Ha egyéni külső Python-csomagokat szeretne biztonságosan telepíteni a Spark-alkalmazásokhoz, kövesse a lépéseket.
Python virtuális környezet létrehozása a Conda használatával. A virtuális környezet izolált helyet biztosít a projektek számára anélkül, hogy másokat is feltörnél. A Python virtuális környezet létrehozásakor megadhatja a használni kívánt Python-verziót. Még mindig létre kell hoznia virtuális környezetet, annak ellenére, hogy a Python 2.7-et és a 3.5-öt szeretné használni. Ennek a követelménynek az a célja, hogy a fürt alapértelmezett környezete ne legyen hibás. Szkriptműveleteket futtathat a fürtön az összes csomóponton a következő szkripttel egy Python virtuális környezet létrehozásához.
--prefix
egy elérési utat határoz meg, ahol egy conda virtuális környezet él. Több konfigurációt is módosítani kell az itt megadott elérési út alapján. Ebben a példában a py35new nevet használjuk, mivel a fürt már rendelkezik egy py35 nevű virtuális környezettel.python=
A virtuális környezet Python-verzióját adja meg. Ebben a példában a 3.5-ös verziót használjuk, ugyanazzal a verzióval, mint az egyikben beépített fürt. A virtuális környezet létrehozásához más Python-verziókat is használhat.anaconda
A package_spec anacondaként adja meg az Anaconda-csomagok virtuális környezetben való telepítéséhez.
sudo /usr/bin/anaconda/bin/conda create --prefix /usr/bin/anaconda/envs/py35new python=3.5 anaconda=4.3 --yes
Ha szükséges, telepítse a külső Python-csomagokat a létrehozott virtuális környezetben. Futtassa a szkriptműveleteket a fürtön az összes csomóponton a következő szkripttel a külső Python-csomagok telepítéséhez. Itt sudo jogosultsággal kell rendelkeznie, hogy fájlokat írjon a virtuális környezet mappájába.
Keresse meg a csomagindexben az elérhető csomagok teljes listáját. Az elérhető csomagok listáját más forrásokból is lekérheti. Telepítheti például a conda-forge-on keresztül elérhetővé tett csomagokat.
Ha a legújabb verziójú kódtárat szeretne telepíteni, használja a következő parancsot:
Conda-csatorna használata:
seaborn
a telepíteni kívánt csomagnév.-n py35new
adja meg az imént létrehozott virtuális környezet nevét. Ügyeljen arra, hogy a virtuális környezet létrehozása alapján ennek megfelelően módosítsa a nevet.
sudo /usr/bin/anaconda/bin/conda install seaborn -n py35new --yes
Vagy használja a PyPi-adattárat, módosítsa
seaborn
éspy35new
ennek megfelelően:sudo /usr/bin/anaconda/envs/py35new/bin/pip install seaborn
Ha egy adott verziójú tárat szeretne telepíteni, használja a következő parancsot:
Conda-csatorna használata:
numpy=1.16.1
A telepíteni kívánt csomag neve és verziója.-n py35new
adja meg az imént létrehozott virtuális környezet nevét. Ügyeljen arra, hogy a virtuális környezet létrehozása alapján ennek megfelelően módosítsa a nevet.
sudo /usr/bin/anaconda/bin/conda install numpy=1.16.1 -n py35new --yes
Vagy használja a PyPi-adattárat, módosítsa
numpy==1.16.1
éspy35new
ennek megfelelően:sudo /usr/bin/anaconda/envs/py35new/bin/pip install numpy==1.16.1
Ha nem ismeri a virtuális környezet nevét, az SSH-t a fürt fő csomópontjához irányíthatja, és futtathatja
/usr/bin/anaconda/bin/conda info -e
az összes virtuális környezet megjelenítéséhez.Módosítsa a Spark és Livy konfigurációit, és mutasson a létrehozott virtuális környezetre.
Nyissa meg az Ambari felhasználói felületét, lépjen a Spark 2 lap Konfigurációk lapjára.
Bontsa ki az Advanced livy2-env elemet, alul adja hozzá a következő utasításokat. Ha a virtuális környezetet egy másik előtaggal telepítette, módosítsa az elérési utat ennek megfelelően.
export PYSPARK_PYTHON=/usr/bin/anaconda/envs/py35new/bin/python export PYSPARK_DRIVER_PYTHON=/usr/bin/anaconda/envs/py35new/bin/python
Bontsa ki a Speciális spark2-env elemet, és cserélje le alul a meglévő exportálási PYSPARK_PYTHON utasítást. Ha a virtuális környezetet egy másik előtaggal telepítette, módosítsa az elérési utat ennek megfelelően.
export PYSPARK_PYTHON=${PYSPARK_PYTHON:-/usr/bin/anaconda/envs/py35new/bin/python}
Mentse a módosításokat, és indítsa újra az érintett szolgáltatásokat. Ezek a módosítások a Spark 2 szolgáltatás újraindítását igénylik. Az Ambari felhasználói felülete kérni fogja a szükséges újraindítási emlékeztetőt, majd kattintson az Újraindítás gombra az összes érintett szolgáltatás újraindításához.
Állítson be két tulajdonságot a Spark-munkamenetre, hogy a feladat a frissített Spark-konfigurációra mutatjon:
spark.yarn.appMasterEnv.PYSPARK_PYTHON
ésspark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON
.A terminál vagy jegyzetfüzet használatával használja a függvényt
spark.conf.set
.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")
Ha használja
livy
, adja hozzá a következő tulajdonságokat a kérelem törzséhez:"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" }
Ha az új létrehozott virtuális környezetet szeretné használni a Jupyteren. Módosítsa a Jupyter konfigurációit, és indítsa újra a Jupytert. Futtassa a szkriptműveleteket az összes fejléccsomóponton az alábbi utasítással, amely a Jupytert az új létrehozott virtuális környezetre mutatja. Mindenképpen módosítsa a virtuális környezethez megadott előtag elérési útját. A szkriptművelet futtatása után indítsa újra a Jupyter szolgáltatást az Ambari felhasználói felületén keresztül a módosítás elérhetővé tétele érdekében.
sudo sed -i '/python3_executable_path/c\ \"python3_executable_path\" : \"/usr/bin/anaconda/envs/py35new/bin/python3\"' /home/spark/.sparkmagic/config.json
A Kód futtatásával duplán megerősítheti a Python-környezetet a Jupyter Notebookban: