Partager via


Gérer les clusters Apache Hadoop dans HDInsight à l'aide du Kit de développement logiciel (SDK) .NET

Découvrez comment gérer des clusters Azure HDInsight à l’aide du Kit de développement logiciel (SDK) HDInsight.NET.

Prérequis

Avant de commencer cet article, vous devez disposer des éléments suivants :

  • Un compte Azure avec un abonnement actif. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Se connecter à Azure HDInsight

Les packages NuGet suivants doivent être installés :

Install-Package Microsoft.Rest.ClientRuntime.Azure.Authentication -Pre
Install-Package Microsoft.Azure.Management.ResourceManager -Pre
Install-Package Microsoft.Azure.Management.HDInsight

L’exemple de code suivant montre comment vous connecter à Azure avant que vous puissiez gérer les clusters HDInsight dans votre abonnement Azure.

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");
        }
    }
}

Vous voyez une invite lorsque vous exécutez ce programme. Si vous ne voulez pas que l’invite s’affiche, consultez Créer des applications .NET HDInsight d’authentification non interactive.

Lister les clusters

L’extrait de code suivant répertorie les clusters et certaines propriétés :

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);
}

Suppression des clusters

Pour supprimer un cluster de façon synchrone ou asynchrone, utilisez l’extrait de code suivant :

_hdiManagementClient.Clusters.Delete("<Resource Group Name>", "<Cluster Name>");
_hdiManagementClient.Clusters.DeleteAsync("<Resource Group Name>", "<Cluster Name>");

Mise à l’échelle des clusters

Utilisez la fonctionnalité de mise à l’échelle du cluster pour modifier le nombre de nœuds Worker utilisés par un cluster qui s’exécute dans HDInsight sans avoir à recréer le cluster.

Remarque

Seuls les clusters ayant la version 3.1.3 de HDInsight ou une version ultérieure sont pris en charge. Si vous n’êtes pas sûr de la version de votre cluster, consultez la page Propriétés. Pour plus d’informations, voir Énumération et affichage des clusters.

Effet de la modification du nombre de nœuds de données pour chaque type de cluster pris en charge par HDInsight :

  • Apache Hadoop : vous pouvez augmenter de façon continue le nombre de nœuds worker dans un cluster Hadoop exécuté sans affecter aucune tâche en attente ou en cours. Vous pouvez également envoyer de nouveaux travaux pendant que l’opération est en cours. Les défaillances dans l'opération de mise à l'échelle sont correctement gérées de sorte que le cluster reste toujours fonctionnel.

    Lorsqu’un cluster Hadoop est diminué par la réduction du nombre de nœuds de données, certains services du cluster sont redémarrés. Toutes les tâches en cours ou en attente échouent lors de la réalisation de l'opération de mise à l'échelle. Une fois l’opération terminée, vous pouvez soumettre à nouveau les travaux.

  • Apache HBase : vous pouvez ajouter ou supprimer des nœuds en continu à votre cluster HBase pendant son exécution. Les serveurs régionaux sont équilibrés automatiquement quelques minutes après la fin de l’opération de mise à l’échelle. Toutefois, vous pouvez équilibrer manuellement les serveurs régionaux. Connectez-vous au nœud principal d’un cluster et exécutez les commandes suivantes à partir d’une fenêtre d’invite de commandes :

    >pushd %HBASE_HOME%\bin
    >hbase shell
    >balancer
    

Mettre à jour les informations d’identification de l’utilisateur HTTP

La procédure de mise à jour est la même que celle que vous utilisez pour accorder ou révoquer l’accès HTTP. Si le cluster a reçu l’accès HTTP, vous devez d’abord le révoquer. Vous pouvez ensuite accorder l’accès avec les nouvelles informations d’identification de l’utilisateur HTTP.

Trouvez le compte de stockage par défaut

L’extrait de code suivant montre comment obtenir le nom de compte de stockage par défaut et la clé pour un cluster.

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]));
}

Soumettre les travaux

Découvrez comment envoyer des travaux pour les produits suivants :

Charger des données dans Stockage Blob Azure

Pour charger des données, consultez Charger des données dans HDInsight.