Ошибка авторизации HDInsight через Microsoft Powershell

#powershell #azure #azure-hdinsight

#powershell #azure #azure-hdinsight

Вопрос:

Столкнулся со странной проблемой при подключении HDInsight к моим кластерам. Код, который я использую для подключения:

 $clustername=<"clustername">
Use-AzureHDInsightCluster -Name $clusterName 
  

Вчера я вводил этот код через Powershell, и он не возвращал никакого сообщения об ошибке или каких-либо выходных данных. Это будет просто выполняться непрерывно. Я подумал, что это проблема с моей системой, поэтому сегодня я создал виртуальную машину (под управлением Windows 8) и снова ввел код. Это сработало около десяти раз, затем начала повторяться та же проблема, которая произошла вчера. Но сегодня после работы в течение десяти минут я получил это сообщение об ошибке:

 USe-AzureHDInsightCluster : Request failed after (41) attempts over a period of      (00:10:57.3107100) with code: Unauthorized
Content:<Error xmlns="http://schemas.microsoft.com/windowsazure" 
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Code>AuthenticationFailed</Code>          <Message>A security token 
validation error occured for the received JWT token.</Message></Error>
At line:1 char:1
  USe-AzureHDInsightCluster -Name $clusterName
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  CategoryInfo          : NotSpecified: (:) [Use-AzureHDInsightCluster], HttpLayerException
  FullyQualifiedErrorId : Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.Library.WebRequest.HttpLayerException,Microsoft.WindowsAzure.Management.HDInsight.Cmdlet.PSCmdlets.UseAzureHDInsightClusterCmdlet
  

Я все еще подключен к своей учетной записи Azure, и обе приведенные ниже команды возвращают соответствующие учетные записи, которые я использую:

 Get-AzureAccount
Get-AzureSubscription
  

Я перезапустил свою виртуальную машину (которая также предоставила мне новый IP-адрес), и я по-прежнему получал то же сообщение об ошибке. Все остальные команды работают хорошо (т. Е. ‘Get-AzureStorageBlob’), но любой связанный с HDInsight сбой (например, Get-AzureHdinsightcluster). Очевидно, что с HDInsight что-то не так, однако я в замешательстве, потому что команды работали раньше. Между тем, как я запускал

 Use-AzureHDInsightCluster successfully 
  

и в то время, когда произошел сбой, я несколько раз запускал следующий код:

 Invoke-Hive -File "wasb://<container>@<storage account>/blob"
  

Которая также выдала мне эту ошибку:

 Invoke-Hive : Request failed with code:InternalServerError
Content:{"error":"org.apache.hadoop.fs.azure.AzureException: Unable to access container  <container> in account 
<storage account> using anonymous credentials, and no credentials found for them  in the  configuration."}
At line:1 char:1
  Invoke-Hive -File "wasb://<container>@<storage account>/<blob>"
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  CategoryInfo          : NotSpecified: (:) [Invoke-AzureHDInsightHiveJob], HttpLayerException
  FullyQualifiedErrorId :    Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.Library.WebRequest.HttpLayerException,Microsoft.WindowsAzure.Management.HDInsight.Cmdlet.PSCmdlets.InvokeHiveCmdlet
  

В течение этого времени я пытался предоставить свои учетные данные несколькими различными способами как с помощью команды Invoke-Hive, так и с помощью команды Use-AzureHDInsightCluster. Меня меньше беспокоит эта ошибка, но я включил ее на случай, если она имеет отношение к проблеме HDInsight.

Буду признателен за любую помощь, поскольку я исчерпал все свои текущие идеи.

Ответ №1:

Настройка моего сертификата в Powershell исправила эту ошибку. Обратитесь к этому веб-сайту для получения шагов, необходимых для доступа к вашему сертификату: http://blogs.msdn.com/b/bigdatasupport/archive/2013/11/21/getting-started-with-hdinsight-powershell-tools-and-sdk.aspx

Из документации, которую я прочитал в Azure, казалось, что настройка сертификата не требуется, если подписка уже была настроена и к ней был получен доступ. Это было верно для всех служб, которые я использовал, кроме HDInsight. Однако для использования HDInsight с Powershell, я полагаю, требуется сертификат.