مشاركة عبر


إدارة مجموعات Apache Hadoop في HDInsight باستخدام .NET SDK

تعرف على كيفية إدارة مجموعات Azure HDInsight باستخدام HDInsight.NET SDK.

المتطلبات الأساسية

قبل أن تبدأ هذه المقالة، يجب أن يكون لديك:

  • حساب Azure مع اشتراك نشط. في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.

اتصل بـ Azure HDInsight

أنت بحاجة إلى حزم NuGet التالية:

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

يوضح لك نموذج التعليمات البرمجية التالي كيفية الاتصال بـ Azure قبل أن تتمكن من إدارة مجموعات HDInsight ضمن اشتراك Azure خاصتك.

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

سترى مطالبة عند تشغيل هذا البرنامج. إذا كنت لا تريد رؤية المطالبة، فشاهد إنشاء تطبيقات .NET HDInsight للمصادقة غير النشطة.

سرد نظام المجموعات

ينص الكود التالي علي المجموعات وبعض الخصائص:

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

حذف أنظمة مجموعات

استخدم التعليمات البرمجية المتكررة التالية لحذف مجموعة بشكل متزامن أو غير متزامن:

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

أنظمة مجموعات مقياس

استخدم ميزة تحجيم نظام المجموعة لتغيير عدد العقد العاملة المستخدمة من قبل مجموعة تعمل في HDInsight دون الحاجة إلى إعادة إنشاء نظام المجموعة.

إشعار

يتم دعم المجموعات التي تحتوي على HDInsight الإصدار 3.1.3 أو أعلى فقط. إذا لم تكن متأكدا من إصدار نظام المجموعة، فتحقق من صفحة Properties. لمزيد من المعلومات، راجع قائمة وعرض المجموعات.

تأثير تغيير عدد عقد البيانات لكل نوع من أنواع المجموعات التي يدعمها HDInsight:

  • Apache Hadoop: يمكنك زيادة عدد العقد العاملة بسلاسة في مجموعة Hadoop التي تعمل دون التأثير على أي مهام معلقة أو قيد التشغيل. يمكنك أيضا إرسال مهام جديدة أثناء العملية قيد التقدم. يتم التعامل مع حالات الفشل في عملية القياس بأمان بحيث يتم ترك المجموعة دائمًا في حالة فعالة.

    عندما يتم تصغير مجموعة Hadoop عن طريق تقليل عدد عقد البيانات، تتم إعادة تشغيل بعض الخدمات في المجموعة. تفشل جميع المهام قيد التشغيل والمعلقة عند الانتهاء من عملية التحجيم. بعد الانتهاء من العملية، يمكنك إعادة إرسال المهام.

  • Apache HBase: يمكنك إضافة العقد أو إزالتها بسلاسة إلى مجموعة HBase أثناء تشغيلها. يتم موازنة الخوادم الإقليمية تلقائيا في غضون بضع دقائق من إكمال عملية التحجيم. يمكنك أيضا موازنة الخوادم الإقليمية يدويا. سجل الدخول إلى العقدة الرئيسية لنظام مجموعة وقم بتشغيل الأوامر التالية من نافذة موجه الأوامر:

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

تحديث بيانات اعتماد مستخدم HTTP

إجراء التحديث هو نفس الإجراء الذي تستخدمه لمنح وصول HTTP أو إبطاله. إذا تم منح نظام المجموعة حق الوصول إلى HTTP، يجب أولا إبطاله. ثم يمكنك منح حق الوصول باستخدام بيانات اعتماد مستخدم HTTP الجديدة.

ابحث عن حساب التخزين الظاهري

يوضح مقتطف التعليمات البرمجية التالي كيفية الحصول على اسم حساب التخزين الافتراضي والمفتاح لنظام مجموعة.

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

إرسال الوظائف

تعرف على كيفية إرسال وظائف للمنتجات التالية:

تحميل البيانات إلى Azure Blob Storage

لتحميل البيانات، راجع تحميل البيانات إلى HDInsight.