Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hier erhalten Sie Informationen zum Verwalten von Azure HDInsight-Clustern mithilfe des HDInsight .NET-SDK.
Voraussetzungen
Bevor Sie mit diesem Artikel beginnen können, benötigen Sie Folgendes:
- Ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Verbinden mit Azure HDInsight
Sie benötigen die folgenden NuGet-Pakete:
Install-Package Microsoft.Rest.ClientRuntime.Azure.Authentication -Pre
Install-Package Microsoft.Azure.Management.ResourceManager -Pre
Install-Package Microsoft.Azure.Management.HDInsight
Das folgende Codebeispiel veranschaulicht, wie Sie eine Verbindung mit Azure herstellen, bevor Sie HDInsight-Cluster unter Ihrem Azure-Abonnement verwalten können.
using System;
using Microsoft.Azure;
using Microsoft.Azure.Management.HDInsight;
using Microsoft.Azure.Management.HDInsight.Models;
using Microsoft.Azure.Management.ResourceManager;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.Rest;
using Microsoft.Rest.Azure.Authentication;
namespace HDInsightManagement
{
class Program
{
private static HDInsightManagementClient _hdiManagementClient;
// Replace with your Azure Active Directory tenant ID if necessary.
private const string TenantId = UserTokenProvider.CommonTenantId;
private const string SubscriptionId = "<Your Azure Subscription ID>";
// This is the GUID for the PowerShell client. Used for interactive logins in this example.
private const string ClientId = "1950a258-227b-4e31-a9cf-717495945fc2";
static void Main(string[] args)
{
// Authenticate and get a token
var authToken = Authenticate(TenantId, ClientId, SubscriptionId);
// Flag subscription for HDInsight, if it isn't already.
EnableHDInsight(authToken);
// Get an HDInsight management client
_hdiManagementClient = new HDInsightManagementClient(authToken);
// insert code here
System.Console.WriteLine("Press ENTER to continue");
System.Console.ReadLine();
}
/// <summary>
/// Authenticate to an Azure subscription and retrieve an authentication token
/// </summary>
static TokenCloudCredentials Authenticate(string TenantId, string ClientId, string SubscriptionId)
{
var authContext = new AuthenticationContext("https://login.microsoftonline.com/" + TenantId);
var tokenAuthResult = authContext.AcquireToken("https://management.core.windows.net/",
ClientId,
new Uri("urn:ietf:wg:oauth:2.0:oob"),
PromptBehavior.Always,
UserIdentifier.AnyUser);
return new TokenCloudCredentials(SubscriptionId, tokenAuthResult.AccessToken);
}
/// <summary>
/// Marks your subscription as one that can use HDInsight, if it has not already been marked as such.
/// </summary>
/// <remarks>This is essentially a one-time action; if you have already done something with HDInsight
/// on your subscription, then this isn't needed at all and will do nothing.</remarks>
/// <param name="authToken">An authentication token for your Azure subscription</param>
static void EnableHDInsight(TokenCloudCredentials authToken)
{
// Create a client for the Resource manager and set the subscription ID
var resourceManagementClient = new ResourceManagementClient(new TokenCredentials(authToken.Token));
resourceManagementClient.SubscriptionId = SubscriptionId;
// Register the HDInsight provider
var rpResult = resourceManagementClient.Providers.Register("Microsoft.HDInsight");
}
}
}
Sie sehen eine Eingabeaufforderung, wenn Sie dieses Programm ausführen. Wenn Sie diese Eingabeaufforderung nicht sehen möchten, finden Sie weitere Informationen unter Erstellen von .NET HDInsight-Anwendungen ohne interaktive Authentifizierung.
Cluster auflisten
Im folgenden Codeausschnitt sind Cluster und einige Eigenschaften aufgeführt:
var results = _hdiManagementClient.Clusters.List();
foreach (var name in results.Clusters) {
Console.WriteLine("Cluster Name: " + name.Name);
Console.WriteLine("\t Cluster type: " + name.Properties.ClusterDefinition.ClusterType);
Console.WriteLine("\t Cluster location: " + name.Location);
Console.WriteLine("\t Cluster version: " + name.Properties.ClusterVersion);
}
Löschen von Clustern
Verwenden Sie den folgenden Codeausschnitt, um einen Cluster synchron oder asynchron zu löschen:
_hdiManagementClient.Clusters.Delete("<Resource Group Name>", "<Cluster Name>");
_hdiManagementClient.Clusters.DeleteAsync("<Resource Group Name>", "<Cluster Name>");
Skalieren von Clustern
Verwenden Sie die Clusterskalierung, um die Anzahl der von einem in Azure HDInsight ausgeführten Cluster verwendeten Workerknoten zu ändern, ohne den Cluster neu erstellen zu müssen.
Hinweis
Es werden nur Cluster mit HDInsight-Versionen ab 3.1.3 unterstützt. Überprüfen Sie ggf. auf der Seite Eigenschaften die Version Ihres Clusters. Weitere Informationen finden Sie unter Cluster auflisten und anzeigen.
Auswirkungen der Änderung der Anzahl von Datenknoten für die von HDInsight unterstützten Clustertypen:
Apache Hadoop: Sie können die Anzahl der Workerknoten in einem laufenden Hadoop-Cluster problemlos erhöhen, ohne dass ausstehende oder laufende Aufträge davon betroffen sind. Sie können auch während des Vorgangs neue Aufträge einreichen. Fehler bei einer Skalierung werden ordnungsgemäß behandelt, sodass der Cluster immer in einem funktionsfähigen Zustand verbleibt.
Wenn ein Hadoop-Cluster durch Verringern der Anzahl der Datenknoten zentral herunterskaliert wird, werden einige der Dienste im Cluster neu gestartet. Bei Abschluss des Skalierungsvorgangs schlagen alle laufenden und anstehenden Aufträge fehl. Sie können die Aufträge nach Abschluss der Operation erneut einreichen.
Apache HBase: Sie können Knoten problemlos Ihrem HBase-Cluster während der Ausführung hinzufügen oder aus diesem entfernen. Regionale Server werden innerhalb weniger Minuten nach Abschluss des Skalierungsvorgangs automatisch ausgeglichen. Sie können die regionalen Server auch manuell ausgleichen. Melden Sie sich am Hauptknoten eines Clusters an und führen Sie die folgenden Befehle in einem Befehlszeilenfenster aus:
>pushd %HBASE_HOME%\bin >hbase shell >balancer
Aktualisieren von HTTP-Anmeldeinformationen
Das Aktualisierungsverfahren ist dasselbe wie das, das Sie verwenden, um den HTTP-Zugriff zu gewähren oder zu widerrufen. Wenn dem Cluster der HTTP-Zugriff gewährt wurde, müssen Sie ihn zunächst widerrufen. Sie können anschließend den Zugriff mit den neuen HTTP-Anmeldeinformationen gewähren.
Suchen des Standardspeicherkontos
Der folgende Codeausschnitt zeigt, wie der Name und der Schlüssel des Standard-Speicherkontos für einen Cluster abgerufen werden.
var results = _hdiManagementClient.Clusters.GetClusterConfigurations(<Resource Group Name>, <Cluster Name>, "core-site");
foreach (var key in results.Configuration.Keys)
{
Console.WriteLine(String.Format("{0} => {1}", key, results.Configuration[key]));
}
Übermitteln von Aufträgen
Erfahren Sie, wie Sie Aufträge für die folgenden Produkte übermitteln können:
- MapReduce: Ausführen von MapReduce-Beispielen in HDInsight
- Apache Hive: Ausführen von Apache Hive-Abfragen mit dem .NET-SDK
- Apache Sqoop: Verwenden von Apache Sqoop mit HDInsight
- Apache Oozie: Verwenden Sie Apache Oozie mit Hadoop, um einen Workflow in HDInsight zu definieren und auszuführen
Hochladen von Daten in Azure Blob Storage
Anweisungen hierzu finden Sie unter Hochladen von Daten in HDInsight.