Aracılığıyla paylaş


Betik Eylemini kullanarak Azure HDInsight'ta Python ortamını güvenli bir şekilde yönetme

HDInsight' ın Spark kümesinde iki yerleşik Python yüklemesi vardır: Anaconda Python 2.7 ve Python 3.5. Müşterilerin dış Python paketlerini yükleme gibi Python ortamını özelleştirmesi gerekebilir. Burada, HDInsight üzerinde Apache Spark kümeleri için Python ortamlarını güvenli bir şekilde yönetmenin en iyi uygulamasını göstereceğiz.

Önkoşullar

HDInsight üzerinde bir Apache Spark kümesi. Yönergeler için bkz. Azure HDInsight'ta Apache Spark kümeleri oluşturma. HDInsight'ta bir Spark kümeniz yoksa, küme oluşturma sırasında betik eylemlerini çalıştırabilirsiniz. Özel betik eylemlerini kullanma hakkında belgelere göz atın.

HDInsight kümelerinde kullanılan açık kaynak yazılım desteği

Microsoft Azure HDInsight hizmeti, Apache Hadoop çevresinde oluşturulan açık kaynak teknolojilerin bulunduğu bir ortam kullanır. Microsoft Azure, açık kaynak teknolojiler için genel bir destek düzeyi sağlar. Daha Fazla Bilgi İçin Bakınız: Azure Desteği Sıkça Sorulan Sorular Web Sitesi. HDInsight hizmeti, yerleşik bileşenler için ek bir destek düzeyi sağlar.

HDInsight hizmetinde kullanılabilen iki tür açık kaynak bileşeni vardır:

Bileşen Açıklama
Dahili Bu bileşenler HDInsight kümelerine önceden yüklenmiştir ve kümenin temel işlevselliğini sağlar. Örneğin, Apache Hadoop YARN Resource Manager, Apache Hive sorgu dili (HiveQL) ve Mahout kitaplığı bu kategoriye aittir. Küme bileşenlerinin tam listesi , HDInsight tarafından sağlanan Apache Hadoop küme sürümlerindeki yenilikler bölümünde bulunabilir.
Özel Kümenin kullanıcısı olarak, toplulukta bulunan veya sizin tarafınızdan oluşturulan herhangi bir bileşeni iş yükünüzde yükleyebilir veya kullanabilirsiniz.

Önemli

HDInsight kümesiyle sağlanan bileşenler tam olarak desteklenir. Microsoft Desteği, bu bileşenlerle ilgili sorunları yalıtmaya ve çözmeye yardımcı olur.

Özel bileşenler, sorunu daha fazla gidermenize yardımcı olmak için ticari olarak makul bir destek alır. Microsoft desteği sorunu çözebilir veya sizden bu teknolojiye ilişkin derin uzmanlığın bulunduğu açık kaynak teknolojileri için kullanılabilir kanallarla etkileşim kurmanızı isteyebilir. Örneğin, kullanılabilecek birçok topluluk sitesi vardır: HDInsight için Microsoft Soru-Cevap soru sayfası, https://stackoverflow.com. Ayrıca Apache projelerinin üzerinde https://apache.orgproje siteleri de vardır.

Varsayılan Python yüklemesini anlama

HDInsight Spark kümelerinde Anaconda yüklüdür. Kümede Iki Python yüklemesi vardır: Anaconda Python 2.7 ve Python 3.5. Aşağıdaki tabloda Spark, Livy ve Jupyter için varsayılan Python ayarları gösterilmektedir.

Ayarlar Python 2.7 Python 3.5
Yol /usr/bin/anaconda/bin /usr/bin/anaconda/envs/py35/bin
Spark sürümü Varsayılan ayar 2,7 Yapılandırmayı 3.5 olarak değiştirebilir
Livy sürümü Varsayılan ayar 2,7 Yapılandırmayı 3.5 olarak değiştirebilir
Jupyter PySpark çekirdeği PySpark3 çekirdeği

Spark 3.1.2 sürümü için Apache PySpark çekirdeği kaldırılır ve altında /usr/bin/miniforge/envs/py38/binPySpark3 çekirdeği tarafından kullanılan yeni bir Python 3.8 ortamı yüklenir. PYSPARK_PYTHON ve PYSPARK3_PYTHON ortam değişkenleri aşağıdakilerle güncelleştirilir:

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

Dış Python paketlerini güvenli bir şekilde yükleme

HDInsight kümesi, hem Python 2.7 hem de Python 3.5 yerleşik Python ortamına bağlıdır. Bu varsayılan yerleşik ortamlara özel paketlerin doğrudan yüklenmesi beklenmeyen kitaplık sürümü değişikliklerine neden olabilir. Ve kümeyi daha fazla parçalayın. Spark uygulamalarınız için özel dış Python paketlerini güvenli bir şekilde yüklemek için adımları izleyin.

  1. conda kullanarak Python sanal ortamı oluşturun. Sanal ortam, projeleriniz için diğerlerini bölmeden yalıtılmış bir alan sağlar. Python sanal ortamını oluştururken kullanmak istediğiniz Python sürümünü belirtebilirsiniz. Python 2.7 ve 3.5 kullanmak isteseniz de sanal ortam oluşturmanız gerekir. Bu gereksinim, kümenin varsayılan ortamının kırılmadığından emin olmaktır. Python sanal ortamı oluşturmak için aşağıdaki betikle kümünüzdeki tüm düğümler üzerinde betik işlemlerini çalıştırın.

    • --prefix conda sanal ortamının yaşadığı yolu belirtir. Burada belirtilen yola göre daha fazla değiştirilmesi gereken birkaç yapılandırma vardır. Bu örnekte, kümenin zaten py35 adlı mevcut bir sanal ortamı olduğundan py35new kullanırız.
    • python= sanal ortamın Python sürümünü belirtir. Bu örnekte, kümenin yerleşik sürümüyle aynı sürüm olan 3.5 sürümünü kullanacağız. Sanal ortamı oluşturmak için diğer Python sürümlerini de kullanabilirsiniz.
    • anaconda sanal ortama Anaconda paketlerini yüklemek için anaconda olarak package_spec belirtir.
    sudo /usr/bin/anaconda/bin/conda create --prefix /usr/bin/anaconda/envs/py35new python=3.5 anaconda=4.3 --yes
    
  2. Gerekirse dış Python paketlerini oluşturulan sanal ortama yükleyin. Dış Python paketlerini yüklemek için aşağıdaki betikle tüm düğümler için kümenizde betik eylemlerini çalıştırın. Sanal ortam klasörüne dosya yazmak için burada sudo ayrıcalığına sahip olmanız gerekir.

    Paket dizininde kullanılabilir paketlerin tam listesini arayın. Diğer kaynaklardan kullanılabilir paketlerin listesini de alabilirsiniz. Örneğin conda-forge aracılığıyla kullanıma sunulan paketleri yükleyebilirsiniz.

    Kitaplığı en son sürümüyle yüklemek istiyorsanız aşağıdaki komutu kullanın:

    • Conda kanalını kullan:

      • seaborn yüklemek istediğiniz paket adıdır.
      • -n py35new yeni oluşturulan sanal ortam adını belirtin. Adı, sanal ortam oluşturma işleminize göre karşılık gelen şekilde değiştirdiğinizden emin olun.
      sudo /usr/bin/anaconda/bin/conda install seaborn -n py35new --yes
      
    • PyPi deposunu kullanın ve seaborn ile py35new ayarlarını karşılık gelecek şekilde değiştirin.

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

    Belirli bir sürüme sahip bir kitaplık yüklemek istiyorsanız aşağıdaki komutu kullanın:

    • Conda kanalını kullan:

      • numpy=1.16.1 yüklemek istediğiniz paket adı ve sürümüdür.
      • -n py35new yeni oluşturulan sanal ortam adını belirtin. Adı, sanal ortam oluşturma işleminize göre karşılık gelen şekilde değiştirdiğinizden emin olun.
      sudo /usr/bin/anaconda/bin/conda install numpy=1.16.1 -n py35new --yes
      
    • Veya PyPi deposunu kullanın, numpy==1.16.1 ve py35new sırasıyla değiştirin.

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

    Sanal ortam adını bilmiyorsanız, kümenin baş düğümüne SSH yapabilir ve tüm sanal ortamları göstermek için komutunu çalıştırabilirsiniz /usr/bin/anaconda/bin/conda info -e .

  3. Spark ve Livy yapılandırmalarını değiştirin ve oluşturulan sanal ortama işaret edin.

    1. Ambari kullanıcı arabirimini açın, Spark 2 sayfası, Yapılandırmalar sekmesine gidin.

      Ambari aracılığıyla Spark ve Livy yapılandırmasını değiştirin.

    2. Advanced livy2-env'yi genişletin, alta aşağıdaki deyimleri ekleyin. Sanal ortamı farklı bir ön ekle yüklediyseniz, yolu buna karşılık olarak değiştirin.

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

      Ambari aracılığıyla Livy yapılandırmasını değiştirin.

    3. Gelişmiş spark2-env'yi genişletin, alttaki mevcut dışarı aktarma PYSPARK_PYTHON deyimini değiştirin. Sanal ortamı farklı bir ön ekle yüklediyseniz, yolu buna karşılık olarak değiştirin.

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

      Ambari aracılığıyla Spark yapılandırmasını değiştirin.

    4. Değişiklikleri kaydedin ve etkilenen hizmetleri yeniden başlatın. Spark 2 hizmetinin yeniden başlatılması, bu değişiklikleri gerektirir. Ambari kullanıcı arabirimi gerekli bir yeniden başlatma anımsatıcısı ister, etkilenen tüm hizmetleri yeniden başlatmak için Yeniden Başlat'a tıklayın.

      Hizmetleri yeniden başlat.

    5. İşin güncelleştirilmiş Spark yapılandırmasına işaret etmesini sağlamak için Spark oturumunuza iki özellik ayarlayın: spark.yarn.appMasterEnv.PYSPARK_PYTHON ve spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON.

      Terminal veya not defteri kullanarak spark.conf.set işlevini kullanın.

      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")
      

      kullanıyorsanız livy, istek gövdesine aşağıdaki özellikleri ekleyin:

      "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. Jupyter'da yeni oluşturulan sanal ortamı kullanmak istiyorsanız. Jupyter yapılandırmalarını değiştirin ve Jupyter'ı yeniden başlatın. Jupyter'ı yeni oluşturulan sanal ortama yönlendirmek için aşağıdaki komutu kullanarak tüm başlık düğümlerinde betiği çalıştırın. Sanal ortamınız için belirttiğiniz ön ekin yolunu değiştirdiğinizden emin olun. Bu betik eylemini çalıştırdıktan sonra, bu değişikliği kullanılabilir hale getirmek için Ambari kullanıcı arabirimi aracılığıyla Jupyter hizmetini yeniden başlatın.

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

    Kodu çalıştırarak Jupyter Notebook'ta Python ortamını iki kez onaylayabilirsiniz:

    Jupyter Notebook'ta Python sürümünü denetleyin.

Sonraki adımlar