Aracılığıyla paylaş


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

HDInsight.NET SDK kullanarak HDInsight kümelerini yönetmeyi öğrenin.

Önkoşullar

Bu makaleye başlamadan önce aşağıdakilere sahip olmanız ve aşağıdaki işlemleri yapmış olmanız gerekir:

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 AAD 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 bkz. Etkileşimli olmayan kimlik doğrulaması .NET HDInsight uygulamaları oluşturma.

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

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çeklendirme

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

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ını kontrol edebilirsiniz. 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 hadoop kümesindeki çalışan düğümlerinin sayısını sorunsuz bir şekilde artırabilirsiniz. İşlem devam ederken yeni işler de gönderilebilir. Ölçeklendirme işlemindeki hatalar düzgün bir şekilde işlenir, böylece küme her zaman işlevsel durumda bırakılır.

    Veri düğümlerinin sayısı azaltılarak hadoop kümesinin ölçeği azaltıldığında, kümedeki hizmetlerden bazıları yeniden başlatılır. Bu, tüm çalışan ve bekleyen işlerin ölçeklendirme işlemi tamamlandığında başarısız olmasına neden olur. Ancak, iş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. Ancak, kümenin baş düğümünde oturum açıp komut istemi penceresinden aşağıdaki komutları çalıştırarak bölgesel sunucuları el ile dengeleyebilirsiniz:

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

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

HTTP erişimini verme/iptal etme ile aynı yordamdır. Kümeye HTTP erişimi verildiyse, önce kümeyi iptal etmelisiniz. Ardından yeni HTTP kullanıcı kimlik bilgileriyle erişim izni verin.

Varsayılan depolama hesabını bulma

Aşağıdaki kod parçacığında, bir küme için varsayılan depolama hesabı adının ve varsayılan depolama hesabı anahtarının nasıl alınıyor olduğu gösterilmektedir.

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önderme

MapReduce işlerini göndermek için

Bkz . HDInsight'ta MapReduce örneklerini çalıştırma.

Apache Hive işlerini göndermek için

Bkz. .NET SDK kullanarak Apache Hive sorguları çalıştırma.

Apache Sqoop işlerini göndermek için

Bkz. HDInsight ile Apache Sqoop kullanma.

Apache Oozie işlerini göndermek için

HdInsight'ta iş akışı tanımlamak ve çalıştırmak için bkz. Hadoop ile Apache Oozie kullanma.

Azure Blob depolamaya veri yükleme

Bkz. HDInsight'a veri yükleme.

Ayrıca Bkz.