Apache Hadoop-fürtök kezelése a HDInsightban a .NET SDK használatával
Megtudhatja, hogyan kezelheti az Azure HDInsight-fürtöket a HDInsight.NET SDK használatával.
Előfeltételek
Mielőtt elkezdené ezt a cikket, a következőt kell tennie:
- Egy Azure-fiók, aktív előfizetéssel. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
Csatlakozás az Azure HDInsighthoz
A következő NuGet-csomagokra van szüksége:
Install-Package Microsoft.Rest.ClientRuntime.Azure.Authentication -Pre
Install-Package Microsoft.Azure.Management.ResourceManager -Pre
Install-Package Microsoft.Azure.Management.HDInsight
Az alábbi kódminta bemutatja, hogyan csatlakozhat az Azure-hoz, mielőtt felügyelheti a HDInsight-fürtöket az Azure-előfizetésében.
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");
}
}
}
A program futtatásakor megjelenik egy üzenet. Ha nem szeretné látni a kérést, olvassa el a neminteraktív hitelesítés .NET HDInsight-alkalmazások létrehozása című témakört.
Fürtök listázása
A következő kódrészlet a fürtöket és néhány tulajdonságot sorolja fel:
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);
}
Fürtök törlése
A fürt szinkronizálással vagy aszinkron módon történő törléséhez használja a következő kódrészletet:
_hdiManagementClient.Clusters.Delete("<Resource Group Name>", "<Cluster Name>");
_hdiManagementClient.Clusters.DeleteAsync("<Resource Group Name>", "<Cluster Name>");
Fürtök méretezése
A fürt méretezési funkciójával módosíthatja a HDInsightban futó fürt által használt feldolgozó csomópontok számát anélkül, hogy újra létre kellene hoznia a fürtöt.
Feljegyzés
Csak a HDInsight 3.1.3-s vagy újabb verziójával rendelkező fürtök támogatottak. Ha nem biztos a fürt verziójában, ellenőrizze a Tulajdonságok lapot. További információ: Fürtök listázása és megjelenítése.
A HDInsight által támogatott egyes fürttípusok adatcsomópontjainak számának módosítása:
Apache Hadoop: Zökkenőmentesen növelheti a függőben lévő vagy futó feladatok befolyásolása nélkül futó Hadoop-fürtök feldolgozó csomópontjainak számát. Új feladatokat is elküldhet, amíg a művelet folyamatban van. A skálázási művelet hibáit a rendszer kecsesen kezeli, így a fürt mindig működőképes állapotban marad.
Ha egy Hadoop-fürt az adatcsomópontok számának csökkentésével le van skálázva, a fürt egyes szolgáltatásai újraindulnak. A skálázási művelet befejezésekor minden futó és függőben lévő feladat meghiúsul. A művelet befejezése után újból elküldheti a feladatokat.
Apache HBase: Futtatás közben zökkenőmentesen adhat hozzá vagy távolíthat el csomópontokat a HBase-fürthöz. A regionális kiszolgálók automatikusan egyensúlyba kerülnek a skálázási művelet befejezését követő néhány percen belül. A regionális kiszolgálókat manuálisan is kiegyensúlyozhatja. Jelentkezzen be egy fürt fő csomópontjára, és futtassa a következő parancsokat egy parancssori ablakból:
>pushd %HBASE_HOME%\bin >hbase shell >balancer
HTTP-felhasználói hitelesítő adatok frissítése
A frissítési eljárás megegyezik azzal, amelyet a HTTP-hozzáférés megadásához vagy visszavonásához használ. Ha a fürt HTTP-hozzáférést kapott, először vissza kell vonnia. Ezután új HTTP-felhasználói hitelesítő adatokkal adhat hozzáférést.
Az alapértelmezett tárfiók megkeresése
Az alábbi kódrészlet bemutatja, hogyan szerezheti be a fürt alapértelmezett tárfióknevét és kulcsát.
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]));
}
Feladatok elküldése
Ismerje meg, hogyan küldhet be feladatokat a következő termékekhez:
- MapReduce: MapReduce-minták futtatása a HDInsightban
- Apache Hive: Apache Hive-lekérdezések futtatása a .NET SDK használatával
- Apache Sqoop: Az Apache Sqoop használata a HDInsighttal
- Apache Oozie: Az Apache Oozie és a Hadoop használata munkafolyamat definiálásához és futtatásához a HDInsightban
Adatok feltöltése az Azure Blob Storage-ba
Az adatok feltöltéséhez lásd : Adatok feltöltése a HDInsightba.