Aracılığıyla paylaş


.NET SDK'sını kullanarak HDInsight'ta Apache Hadoop kümelerini yönetme

HDInsight.NET SDK'sını kullanarak Azure HDInsight kümelerini yönetmeyi öğrenin.

Önkoşullar

Bu makaleye başlamadan önce şunlara sahip olmanız gerekir:

  • Etkin aboneliği olan bir Azure hesabı. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Azure HDInsight'a bağlanma

Aşağıdaki NuGet paketlerine ihtiyacınız vardır:

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

Aşağıdaki kod örneği, Azure aboneliğiniz altında HDInsight kümelerini yönetmeden önce Azure'a nasıl bağlanabileceğinizi gösterir.

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

Bu programı çalıştırdığınızda bir istem görürsünüz. İstemi görmek istemiyorsanız, etkileşimsiz kimlik doğrulama .NET HDInsight uygulamaları oluşturma hakkında bilgi almak için bkz: Create noninteractive authentication .NET HDInsight applications.

Kümeleri listeleme

Aşağıdaki kod parçacığı kümeleri ve bazı özellikleri listeler:

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

Kümeleri silme

Bir kümeyi zaman uyumlu veya zaman uyumsuz olarak silmek için aşağıdaki kod parçacığını kullanın:

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

Kümeleri ölçekle

Kümeyi yeniden oluşturmak zorunda kalmadan HDInsight'ta çalışan bir küme tarafından kullanılan çalışan düğümlerinin sayısını değiştirmek için küme ölçeklendirme özelliğini kullanın.

Not

Yalnızca HDInsight sürüm 3.1.3 veya üzeri olan kümeler desteklenir. Kümenizin sürümünden emin değilseniz Özellikler sayfasına bakın. Daha fazla bilgi için bkz . Kümeleri listeleme ve gösterme.

HDInsight tarafından desteklenen her küme türü için veri düğümlerinin sayısını değiştirmenin etkisi:

  • Apache Hadoop: Bekleyen veya çalışan işleri etkilemeden çalışan bir Hadoop kümesindeki çalışan düğümlerinin sayısını sorunsuz bir şekilde artırabilirsiniz. İşlem devam ederken yeni işler de gönderebilirsiniz. Bir ölçeklendirme işlemindeki hatalar düzgün bir şekilde işlenir, böylece küme her zaman işlevsel bir durumda bırakılır.

    Bir Hadoop kümesinin ölçeği, veri düğümlerinin sayısı azaltılarak azaltıldığında, kümedeki hizmetlerden bazıları yeniden başlatılır. Tüm çalışan ve bekleyen işler ölçeklendirme işleminin tamamlanmasıyla başarısız olur. İşlem tamamlandıktan sonra işleri yeniden gönderebilirsiniz.

  • Apache HBase: HBase kümeniz çalışırken sorunsuz bir şekilde düğüm ekleyebilir veya kaldırabilirsiniz. Bölgesel sunucular, ölçeklendirme işlemini tamamladıktan sonra birkaç dakika içinde otomatik olarak dengelenir. Bölgesel sunucuları el ile de dengeleyebilirsiniz. Bir kümenin baş düğümünde oturum açın ve komut istemi penceresinden aşağıdaki komutları çalıştırın:

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

HTTP kullanıcı kimlik bilgilerini güncelleştirme

Güncelleştirme yordamı, HTTP erişimi vermek veya iptal etmek için kullandığınız yordamla aynıdır. Kümeye HTTP erişimi verildiyse, önce kümeyi iptal etmeniz gerekir. Daha sonra yeni HTTP kullanıcı kimlik bilgileriyle erişim vekleyebilirsiniz.

Varsayılan depolama hesabını bulma

Aşağıdaki kod parçacığı, bir küme için varsayılan depolama hesabı adını ve anahtarını almayı gösterir.

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

İşleri gönder

Aşağıdaki ürünler için işleri göndermeyi öğrenin:

verileri Azure Blob Depolama'a yükleme

Veri yüklemek için HDInsight'a veri yükleme sayfasına bakın.