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 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
- Klaster Hadoop w usłudze HDInsight. Zobacz Wprowadzenie do usługi HDInsight w systemie Linux.
- Nazwa i klucz konta magazynu. Zobacz Zarządzanie kluczami dostępu do konta magazynu.
- Jeśli używasz programu PowerShell, potrzebujesz modułu AZ. Zobacz Omówienie programu Azure PowerShell.
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 | ACCOUNTNAME ACCOUNTKEY -p (opcjonalnie) |
ACCOUNTNAME
to nazwa konta magazynu, które ma zostać dodane do klastra usługi HDInsight.ACCOUNTKEY
to klucz dostępu dla elementuACCOUNTNAME
.- 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
W przeglądarce internetowej przejdź do
https://CLUSTERNAME.azurehdinsight.net
lokalizacji , gdzieCLUSTERNAME
jest nazwą klastra.Przejdź do obszaru HdFS>Configs>Advanced Custom>Core-site.
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:
Usuwanie konta magazynu
W przeglądarce internetowej przejdź do
https://CLUSTERNAME.azurehdinsight.net
lokalizacji , gdzieCLUSTERNAME
jest nazwą klastra.Przejdź do obszaru HdFS>Configs>Advanced Custom>Core-site.
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