Lägga till ytterligare lagringskonton i HDInsight

Lär dig hur du använder skriptåtgärder för att lägga till extra Azure Storage-konton i HDInsight. Stegen i det här dokumentet lägger till ett lagringskonto i ett befintligt HDInsight-kluster. Den här artikeln gäller för lagringskonton (inte standardkontot för klusterlagring) och inte ytterligare lagring, till exempel Azure Data Lake Storage Gen2.

Viktigt!

Informationen i det här dokumentet handlar om att lägga till ytterligare lagringskonton i ett kluster när det har skapats. Information om hur du lägger till lagringskonton när klustret skapas finns i Konfigurera kluster i HDInsight med Apache Hadoop, Apache Spark, Apache Kafka med mera.

Förutsättningar

Hur det fungerar

Under bearbetningen utför skriptet följande åtgärder:

  • Om lagringskontot redan finns i core-site.xml konfigurationen för klustret avslutas skriptet och inga ytterligare åtgärder utförs.

  • Verifierar att lagringskontot finns och kan nås med hjälp av nyckeln.

  • Krypterar nyckeln med hjälp av klustrets autentiseringsuppgifter.

  • Lägger till lagringskontot i filen core-site.xml.

  • Stoppar och startar om Tjänsterna Apache Oozie, Apache Hadoop YARN, Apache Hadoop MapReduce2 och Apache Hadoop HDFS. Genom att stoppa och starta dessa tjänster kan de använda det nya lagringskontot.

Varning

Det går inte att använda ett lagringskonto på en annan plats än HDInsight-klustret.

Lägg till lagringskonto

Använd Skriptåtgärd för att tillämpa ändringarna med följande överväganden:

Property Värde
Bash-skript-URI https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh
Nodtyper Head
Parametrar ACCOUNTNAMEACCOUNTKEY -p (valfritt)
  • ACCOUNTNAME är namnet på lagringskontot som ska läggas till i HDInsight-klustret.
  • ACCOUNTKEY är åtkomstnyckeln för ACCOUNTNAME.
  • -p är valfritt. Om det anges krypteras inte nyckeln och lagras i den core-site.xml filen som oformaterad text.

Verifiering

När du visar HDInsight-klustret i Azure-portalen väljer du posten Lagringskonton under Egenskaper visar inte lagringskonton som lagts till via den här skriptåtgärden. Azure PowerShell och Azure CLI visar inte heller det extra lagringskontot. Lagringsinformationen visas inte eftersom skriptet bara ändrar konfigurationen core-site.xml för klustret. Den här informationen används inte när du hämtar klusterinformationen med hjälp av Azure-hanterings-API:er.

För att verifiera den ytterligare lagringen använder du någon av de metoder som visas:

PowerShell

Skriptet returnerar de lagringskontonamn som är associerade med det angivna klustret. Ersätt CLUSTERNAME med det faktiska klusternamnet och kör sedan skriptet.

# 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. Från en webbläsare går du till https://CLUSTERNAME.azurehdinsight.net, där CLUSTERNAME är namnet på klustret.

  2. Navigera till HDFS>Configs>Advanced>Custom core-site.

  3. Observera de nycklar som börjar med fs.azure.account.key. Kontonamnet är en del av nyckeln enligt den här exempelbilden:

    verifiering via Apache Ambari.

Ta bort lagringskonto

  1. Från en webbläsare går du till https://CLUSTERNAME.azurehdinsight.net, där CLUSTERNAME är namnet på klustret.

  2. Navigera till HDFS>Configs>Advanced>Custom core-site.

  3. Ta bort följande nycklar:

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

När du har tagit bort dessa nycklar och sparat konfigurationen måste du starta om Oozie, Yarn, MapReduce2, HDFS och Hive en i taget.

Kända problem

Lagringsbrandvägg

Om du väljer att skydda ditt lagringskonto med begränsningar för brandväggar och virtuella nätverk i valda nätverk måste du aktivera undantaget Tillåt betrodda Microsoft usluge så att HDInsight kan komma åt ditt lagringskonto.

Det går inte att komma åt lagring när nyckeln har ändrats

Om du ändrar nyckeln för ett lagringskonto kan HDInsight inte längre komma åt lagringskontot. HDInsight använder en cachelagrad kopia av nyckeln i core-site.xml för klustret. Den cachelagrade kopian måste uppdateras för att matcha den nya nyckeln.

När du kör skriptåtgärden igen uppdateras inte nyckeln eftersom skriptet kontrollerar om det redan finns en post för lagringskontot. Om det redan finns en post gör den inga ändringar.

Så här kan du lösa problemet:

  • Se Uppdatera åtkomstnycklar för lagringskonto om hur du roterar åtkomstnycklarna.

  • Du kan också ta bort lagringskontot och sedan lägga till lagringskontot igen.

Nästa steg

Du har lärt dig hur du lägger till ytterligare lagringskonton i ett befintligt HDInsight-kluster. Mer information om skriptåtgärder finns i Anpassa Linux-baserade HDInsight-kluster med hjälp av skriptåtgärd