Udostępnij za pośrednictwem


Dodawanie dodatkowych kont magazynu do usługi HDInsight

Dowiedz się, jak używać akcji skryptu do dodawania dodatkowych kont usługi Azure Storage do usługi HDInsight. Kroki opisane w tym dokumencie umożliwiają dodanie konta magazynu do istniejącego klastra usługi HDInsight. Ten artykuł dotyczy kont magazynu (a nie domyślnego konta magazynu klastra), a nie dodatkowego magazynu, takiego jak Azure Data Lake Storage Gen1 i Azure Data Lake Storage Gen2.

Ważne

Informacje przedstawione w tym dokumencie dotyczą dodawania dodatkowych kont magazynu do klastra po jego utworzeniu. Aby uzyskać informacje na temat dodawania kont magazynu podczas tworzenia klastra, zobacz Konfigurowanie klastrów w usłudze HDInsight przy użyciu usług Apache Hadoop, Apache Spark, Apache Kafka i nie tylko.

Wymagania wstępne

Jak to działa

Podczas przetwarzania skrypt wykonuje następujące akcje:

  • Jeśli konto magazynu już istnieje w konfiguracji core-site.xml klastra, skrypt zakończy działanie i nie zostaną wykonane żadne dalsze akcje.

  • Sprawdza, czy konto magazynu istnieje i czy można uzyskać do tego dostępu przy użyciu klucza.

  • Szyfruje klucz przy użyciu poświadczeń klastra.

  • Dodaje konto magazynu do pliku core-site.xml.

  • Zatrzymuje i uruchamia ponownie usługi Apache Oozie, Apache Hadoop YARN, Apache Hadoop MapReduce2 i Apache Hadoop HDFS. Zatrzymywanie i uruchamianie tych usług umożliwia korzystanie z nowego konta magazynu.

Ostrzeżenie

Używanie konta magazynu w innej lokalizacji niż klaster usługi HDInsight nie jest obsługiwane.

Dodaj konto magazynu

Użyj akcji skryptu, aby zastosować zmiany z następującymi zagadnieniami:

Właściwości Wartość
Identyfikator URI skryptu powłoki Bash https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh
Typy węzłów Head
Parametry ACCOUNTNAMEACCOUNTKEY -p (opcjonalnie)
  • ACCOUNTNAME to nazwa konta magazynu, które ma zostać dodane do klastra usługi HDInsight.
  • ACCOUNTKEY to klucz dostępu dla elementu ACCOUNTNAME.
  • Element -p jest opcjonalny. Jeśli zostanie określony, klucz nie jest zaszyfrowany i jest przechowywany w pliku core-site.xml jako zwykły tekst.

Weryfikacja

Po wyświetleniu klastra usługi HDInsight w witrynie Azure Portal wybierz wpis Konta magazynu w obszarze Właściwości nie wyświetla kont magazynu dodanych za pomocą tej akcji skryptu. Program Azure PowerShell i interfejs wiersza polecenia platformy Azure nie wyświetlają również dodatkowego konta magazynu. Informacje o magazynie nie są wyświetlane, ponieważ skrypt modyfikuje tylko konfigurację core-site.xml klastra. Te informacje nie są używane podczas pobierania informacji o klastrze przy użyciu interfejsów API zarządzania platformy Azure.

Aby sprawdzić, czy dodatkowy magazyn jest używany przy użyciu jednej z pokazanych metod:

PowerShell

Skrypt zwraca nazwy konta magazynu skojarzone z danym klastrem. Zastąp CLUSTERNAME ciąg rzeczywistą nazwą klastra, a następnie uruchom skrypt.

# Update values
$clusterName = "CLUSTERNAME"

$creds = Get-Credential -UserName "admin" -Message "Enter the cluster login credentials"

$clusterName = $clusterName.ToLower();

# getting service_config_version
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName`?fields=Clusters/desired_service_config_versions/HDFS" `
    -Credential $creds -UseBasicParsing
$respObj = ConvertFrom-Json $resp.Content

$configVersion=$respObj.Clusters.desired_service_config_versions.HDFS.service_config_version

$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations/service_config_versions?service_name=HDFS&service_config_version=$configVersion" `
    -Credential $creds
$respObj = ConvertFrom-Json $resp.Content

# extract account names
$value = ($respObj.items.configurations | Where type -EQ "core-site").properties | Get-Member -membertype properties | Where Name -Like "fs.azure.account.key.*"
foreach ($name in $value ) { $name.Name.Split(".")[4]}

Apache Ambari

  1. W przeglądarce internetowej przejdź do https://CLUSTERNAME.azurehdinsight.netlokalizacji , gdzie CLUSTERNAME jest nazwą klastra.

  2. Przejdź do obszaru HdFS>Configs>Advanced Custom>Core-site.

  3. Zwróć uwagę na klucze rozpoczynające się od fs.azure.account.key. Nazwa konta jest częścią klucza, jak pokazano na poniższym przykładowym obrazie:

    weryfikacja za pośrednictwem narzędzia Apache Ambari.

Usuwanie konta magazynu

  1. W przeglądarce internetowej przejdź do https://CLUSTERNAME.azurehdinsight.netlokalizacji , gdzie CLUSTERNAME jest nazwą klastra.

  2. Przejdź do obszaru HdFS>Configs>Advanced Custom>Core-site.

  3. Usuń następujące klucze:

    • fs.azure.account.key.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net
    • fs.azure.account.keyprovider.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net

Po usunięciu tych kluczy i zapisaniu konfiguracji należy ponownie uruchomić usługę Oozie, Yarn, MapReduce2, HDFS i Hive jeden po drugim.

Znane problemy

Zapora magazynu

Jeśli zdecydujesz się zabezpieczyć konto magazynu za pomocą ograniczeń Zapory i sieci wirtualne w wybranych sieciach, pamiętaj, aby włączyć wyjątek Zezwalaj na zaufane usługi firmy Microsoft, aby usługa HDInsight mogła uzyskać dostęp do konta magazynu.

Nie można uzyskać dostępu do magazynu po zmianie klucza

Jeśli zmienisz klucz konta magazynu, usługa HDInsight nie będzie już mogła uzyskać dostępu do konta magazynu. Usługa HDInsight używa buforowanej kopii klucza w core-site.xml dla klastra. Ta buforowana kopia musi zostać zaktualizowana, aby odpowiadała nowemu kluczowi.

Ponowne uruchomienie akcji skryptu nie powoduje zaktualizowania klucza, ponieważ skrypt sprawdza, czy wpis dla konta magazynu już istnieje. Jeśli wpis już istnieje, nie wprowadza żadnych zmian.

Aby obejść ten problem:

  • Zobacz Aktualizowanie kluczy dostępu do konta magazynu, aby dowiedzieć się, jak obracać klucze dostępu.

  • Możesz również usunąć konto magazynu, a następnie dodać konto magazynu.

Następne kroki

Wiesz już, jak dodać dodatkowe konta magazynu do istniejącego klastra usługi HDInsight. Aby uzyskać więcej informacji na temat akcji skryptu, zobacz Dostosowywanie klastrów usługi HDInsight opartych na systemie Linux przy użyciu akcji skryptu