Mengelola kluster Apache Hadoop di HDInsight dengan menggunakan .NET SDK

Pelajari cara mengelola kluster HDInsight menggunakan HDInsight.NET SDK.

Prasyarat

Sebelum memulai artikel ini, Anda harus memiliki yang berikut ini:

Menyambungkan ke Azure HDInsight

Anda memerlukan paket NuGet berikut:

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

Contoh kode berikut ini memperlihatkan kepada Anda cara menyambungkan ke Azure sebelum Anda bisa mengelola kluster HDInsight di bawah langganan Azure Anda.

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

Anda akan melihat perintah ketika Anda menjalankan program ini. Jika Anda tidak ingin melihat perintah, lihat Membuat aplikasi autentikasi non-interaktif .NET HDInsight.

Daftar kluster

Cuplikan kode berikut mencantumkan kluster dan beberapa properti:

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

Menghapus kluster

Gunakan cuplikan kode berikut untuk menghapus kluster secara sinkron atau tidak sinkron:

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

Menskalakan kluster

Fitur penskalaan kluster memungkinkan Anda mengubah jumlah simpul pekerja yang digunakan oleh kluster yang berjalan di Microsoft Azure HDInsight, tanpa harus membuat ulang kluster.

Catatan

Hanya kluster dengan HDInsight versi 3.1.3 atau lebih tinggi yang didukung. Jika Anda tidak yakin dengan versi kluster Anda, Anda dapat memeriksa halaman Properti. Lihat Mencantumkan dan memperlihatkan kluster.

Dampak mengubah jumlah simpul data untuk setiap jenis kluster yang didukung oleh HDInsight:

  • Apache Hadoop

    Anda dapat dengan mulus meningkatkan jumlah simpul pekerja di kluster Hadoop yang berjalan tanpa berdampak pada pekerjaan yang tertunda atau berjalan. Pekerjaan baru juga dapat dikirimkan saat operasi sedang berlangsung. Kegagalan dalam operasi penskalaan ditangani dengan anggun sehingga kluster selalu dibiarkan dalam keadaan fungsional.

    Ketika kluster Hadoop diturunkan skalanya dengan mengurangi jumlah simpul data, beberapa layanan dalam kluster dimulai ulang. Hal ini menyebabkan semua pekerjaan yang berjalan dan tertunda gagal pada penyelesaian operasi penskalaan. Namun, Anda dapat mengirim ulang pekerjaan setelah operasi selesai.

  • Apache HBase

    Anda dapat dengan mulus menambahkan atau menghapus simpul ke kluster HBase saat sedang berjalan. Layanan Wilayah secara otomatis diseimbangkan dalam beberapa menit setelah penyelesaian operasi penskalaan. Namun, Anda juga dapat menyeimbangkan server regional secara manual dengan masuk ke headnode kluster dan menjalankan perintah berikut dari jendela prompt perintah:

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

Memperbarui info masuk pengguna HTTP

Ini adalah prosedur yang sama dengan Memberikan/mencabut akses HTTP. Jika kluster telah diberikan akses HTTP, Anda harus terlebih dahulu mencabutnya. Dan kemudian berikan akses dengan info masuk pengguna HTTP yang baru.

Menemukan akun penyimpanan default

Cuplikan kode berikut menunjukkan cara mendapatkan nama akun penyimpanan default dan kunci akun penyimpanan default untuk kluster.

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

Mengiirimkan pekerjaan

Untuk mengirimkan pekerjaan MapReduce

Lihat Menjalankan sampel MapReduce dalam HDInsight.

Untuk mengirimkan pekerjaan Apache Hive

Lihat Menjalankan kueri Apache Hive menggunakan .NET SDK.

Untuk mengirimkan pekerjaan Apache Sqoop

lihat Gunakan Apache Sqoop dengan Microsoft Azure HDInsight.

Untuk mengirimkan pekerjaan Apache Oozie

Lihat Menggunakan Apache Oozie dengan Hadoop untuk menentukan dan menjalankan alur kerja di HDInsight.

Mengunggah data ke penyimpanan Azure Blob

Lihat Unggah data ke Microsoft Azure HDInsight.

Lihat juga