Azure HDInsight'ta betik eylemleriyle ilgili sorunları giderme

Bu makalede, Azure HDInsight kümeleriyle etkileşim kurarken karşılaşılan sorunlara yönelik sorun giderme adımları ve olası çözümler açıklanmaktadır.

Günlükleri görüntüleme

Betik eylemleri tarafından günlüğe kaydedilen bilgileri görüntülemek için Apache Ambari web kullanıcı arabirimini kullanabilirsiniz. Betik küme oluşturma sırasında başarısız olursa günlükler varsayılan küme depolama hesabındadır. Bu bölümde, bu seçeneklerin her ikisi de kullanılarak günlüklerin nasıl alındığı hakkında bilgi sağlanır.

Apache Ambari web kullanıcı arabirimi

  1. Bir web tarayıcısından adresine gidin https://CLUSTERNAME.azurehdinsight.net; burada CLUSTERNAME kümenizin adıdır.

  2. Sayfanın üst kısmındaki çubuktan ops girişini seçin. Liste, Ambari aracılığıyla kümede yapılan geçerli ve önceki işlemleri görüntüler.

    Ambari web UI bar with ops selected.

  3. İşlemler sütununda run_customscriptaction olan girişleri bulun. Bu girdiler, betik eylemleri çalıştırıldığında oluşturulur.

    Apache Ambari script action operations.

    STDOUT ve STDERR çıkışını görüntülemek için run\customscriptaction girişini seçin ve bağlantılarda detaya gidin. Bu çıkış, betik çalıştırıldığında oluşturulur ve yararlı bilgilere sahip olabilir.

Varsayılan depolama hesabı

Bir betik hatası nedeniyle küme oluşturma işlemi başarısız olursa günlükler küme depolama hesabında tutulur.

  • Depolama günlüklerine adresinden \STORAGE_ACCOUNT_NAME\DEFAULT_CONTAINER_NAME\custom-scriptaction-logs\CLUSTER_NAME\DATEulaşabilirsiniz.

    Script action logs.

    Bu dizin altında günlükler baş düğüm, çalışan düğümü ve zookeeper düğümü için ayrı ayrı düzenlenir. Aşağıdaki örneklere bakın:

    • Baş düğüm: <ACTIVE-HEADNODE-NAME>.cloudapp.net

    • Çalışan düğümü: <ACTIVE-WORKERNODE-NAME>.cloudapp.net

    • Zookeeper düğümü: <ACTIVE-ZOOKEEPERNODE-NAME>.cloudapp.net

  • İlgili konağın tüm stdout ve stderr'ı depolama hesabına yüklenir. Her betik eylemi için bir çıkış*.txt ve errors-*.txt vardır. output-*.txt dosyası, konakta çalıştırılan betiğin URI'sine ilişkin bilgileri içerir. Aşağıdaki metin, bu bilgilere bir örnektir:

    'Start downloading script locally: ', u'https://hdiconfigactions.blob.core.windows.net/linuxrconfigactionv01/r-installer-v01.sh'
    
  • Aynı ada sahip bir betik eylem kümesini tekrar tekrar oluşturmanız mümkündür. Bu durumda, ilgili günlükleri TARİh klasör adına göre ayırt edebilirsiniz. Örneğin, farklı tarihlerde oluşturulan mycluster adlı kümenin klasör yapısı aşağıdaki günlük girişlerine benzer şekilde görünür:

    \STORAGE_ACCOUNT_NAME\DEFAULT_CONTAINER_NAME\custom-scriptaction-logs\mycluster\2015-10-04 \STORAGE_ACCOUNT_NAME\DEFAULT_CONTAINER_NAME\custom-scriptaction-logs\mycluster\2015-10-05

  • Aynı gün aynı ada sahip bir betik eylem kümesi oluşturursanız, ilgili günlük dosyalarını tanımlamak için benzersiz ön eki kullanabilirsiniz.

  • Gece yarısı saat 12:00'ye yakın bir küme oluşturursanız günlük dosyalarının iki güne yayılması mümkündür. Bu durumda, aynı küme için iki farklı tarih klasörü görürsünüz.

  • Günlük dosyalarının varsayılan kapsayıcıya yüklenmesi, özellikle büyük kümeler için beş dakikaya kadar sürebilir. Bu nedenle günlüklere erişmek istiyorsanız, bir betik eylemi başarısız olursa kümeyi hemen silmemeniz gerekir.

Ambari watchdog

Linux tabanlı HDInsight kümenizde Hdinsightwatchdog olan Ambari watchdog'un parolasını değiştirmeyin. Parola değişikliği, HDInsight kümesinde yeni betik eylemleri çalıştırma özelliğini bozar.

BlobService adı içeri aktarılamıyor

Belirtiler. Betik eylemi başarısız oluyor. Ambari'de işlemi görüntülediğinizde aşağıdaki hataya benzer bir metin görüntülenir:

Traceback (most recent call list):
  File "/var/lib/ambari-agent/cache/custom_actions/scripts/run_customscriptaction.py", line 21, in <module>
    from azure.storage.blob import BlobService
ImportError: cannot import name BlobService

Neden. HDInsight kümesine dahil olan Python Azure Depolama istemcisini yükselttiyseniz bu hata oluşur. HDInsight, Azure Depolama istemcisi 0.20.0'ı bekler.

Çözüm. Bu hatayı çözmek için kullanarak sshher küme düğümüne el ile bağlanın. Doğru depolama istemcisi sürümünü yeniden yüklemek için aşağıdaki komutu çalıştırın:

sudo pip install azure-storage==0.20.0

SSH ile kümeye bağlanma hakkında bilgi için bkz. SSH kullanarak HDInsight'a (Apache Hadoop) Bağlan.

Geçmiş, küme oluşturma sırasında kullanılan betikleri göstermiyor

Kümeniz 15 Mart 2016'da oluşturulduysa betik eylem geçmişinde bir girdi göremeyebilirsiniz. Kümeyi yeniden boyutlandırmak betiklerin betik eylem geçmişinde görünmesine neden olur.

İki istisna mevcuttur:

  • Kümeniz 1 Eylül 2015'e kadar oluşturulmuştur. Bu tarih, betik eylemlerinin tanıtıldığı tarihtir. Bu tarihten önce oluşturulan herhangi bir küme, küme oluşturma için betik eylemlerini kullanamadı.

  • Küme oluşturma sırasında birden çok betik eylemi kullandınız. Ya da birden çok betik için aynı adı veya aynı adı, aynı URI'yi ama birden çok betik için farklı parametreleri kullandınız. Bu gibi durumlarda aşağıdaki hatayı alırsınız:

    No new script actions can be run on this cluster because of conflicting script names in existing scripts. Script names provided at cluster creation must be all unique. Existing scripts are run on resize.
    

Sonraki adımlar

Sorununuzu görmediyseniz veya sorununuzu çözemiyorsanız daha fazla destek için aşağıdaki kanallardan birini ziyaret edin:

  • Azure Topluluk Desteği aracılığıyla Azure uzmanlarından yanıt alın.

  • @AzureSupport ile Bağlan - müşteri deneyimini geliştirmeye yönelik resmi Microsoft Azure hesabı. Azure topluluğunun doğru kaynaklara Bağlan: yanıtlar, destek ve uzmanlar.

  • Daha fazla yardıma ihtiyacınız varsa Azure portalından bir destek isteği gönderebilirsiniz. Menü çubuğundan Destek'i seçin veya Yardım + destek hub'ını açın. Daha ayrıntılı bilgi için bkz. Azure desteği isteği oluşturma. Abonelik Yönetimi’ne ve faturalandırma desteğine erişim Microsoft Azure aboneliğinize dahildir, Teknik Destek ise herhangi bir Azure Destek Planı üzerinden sağlanır.