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
- Ett Hadoop-kluster i HDInsight. Se Komma igång med HDInsight i Linux.
- Lagringskontots namn och nyckel. Se Hantera åtkomstnycklar för lagringskonto.
- Om du använder PowerShell behöver du AZ-modulen. Se Översikt över Azure PowerShell.
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 | ACCOUNTNAME ACCOUNTKEY -p (valfritt) |
ACCOUNTNAME
är namnet på lagringskontot som ska läggas till i HDInsight-klustret.ACCOUNTKEY
är åtkomstnyckeln förACCOUNTNAME
.-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
Från en webbläsare går du till
https://CLUSTERNAME.azurehdinsight.net
, därCLUSTERNAME
är namnet på klustret.Navigera till HDFS>Configs>Advanced>Custom core-site.
Observera de nycklar som börjar med
fs.azure.account.key
. Kontonamnet är en del av nyckeln enligt den här exempelbilden:
Ta bort lagringskonto
Från en webbläsare går du till
https://CLUSTERNAME.azurehdinsight.net
, därCLUSTERNAME
är namnet på klustret.Navigera till HDFS>Configs>Advanced>Custom core-site.
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