.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:
- Bir Azure aboneliği. Bkz. Azure ücretsiz deneme sürümü edinme.
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.