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:
- Langganan Azure. Lihat Mendapatkan uji coba gratis Azure.
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.