تشغيل مهام Apache Sqoop في HDInsight باستخدام Curl
تعرف على كيفية استخدام Curl لتشغيل مهام Apache Sqoop على نظام مجموعة Apache Hadoop في HDInsight. توضح هذه المقالة كيفية تصدير البيانات من تخزين Azure واستيرادها إلى قاعدة بيانات SQL Server باستخدام Curl. هذه المقالة تابعة لـ استخدام Apache Sqoop مع Hadoop في HDInsight.
يُستخدم Curl لإظهار كيفية التعامل مع HDInsight باستخدام طلبات HTTP الأولية لتشغيل نتائج مهام Sqoop ومراقبتها واستردادها. يعمل ذلك باستخدام واجهة برمجة تطبيقات WebHCat REST (المعروف سابقًا باسم Templeton) التي يوفرها نظام مجموعة HDInsight.
المتطلبات الأساسية
اكتمال إعداد بيئة الاختبار من استخدام Apache Sqoop مع Hadoop في HDInsight.
توفر كمبيوتر عميل للاستعلام عن قاعدة بيانات SQL Azure. فكر في استخدام SQL Server Management Studio أو Visual Studio Code.
Curl. يُعد Curl أداة لنقل البيانات من أو إلى نظام مجموعة HDInsight.
jq. يتم استخدام الأداة المساعدة jq لمعالجة البيانات JSON التي تم إرجاعها من طلبات REST.
الإلمام بـ Sqoop. لمزيد من المعلومات، راجع دليل مستخدم Sqoop.
إرسال مهام Apache Sqoop باستخدام Curl
استخدم Curl لتصدير البيانات باستخدام مهام Apache Sqoop من تخزين Azure إلى SQL Server.
ملاحظة
عند استخدام Curl أو أي اتصال REST آخر مع WebHCat، يجب عليك مصادقة الطلبات من خلال توفير اسم المستخدم وكلمة المرور لمسؤول نظام مجموعة HDInsight. يجب أيضًا استخدام اسم نظام المجموعة كجزء من معرف الموارد الموحد (URI) المستخدم لإرسال الطلبات إلى الخادم.
للأوامر الموجودة في هذا القسم استبدال USERNAME
باسم المستخدم للمصادقة إلى نظام المجموعة واستبدال PASSWORD
بكلمة المرور لحساب المستخدم. استبدل CLUSTERNAME
باسم نظام مجموعتك.
يتم تأمين واجهة برمجة تطبيقات REST عبر المصادقة الأساسية. يجب عليك دائمًا تقديم الطلبات باستخدام HTTP (HTTPS) آمن، للمساعدة في ضمان إرسال بيانات الاعتماد الخاصة بك بشكل آمن إلى الخادم.
لسهولة الاستخدام، قم بتعيين المتغيرات أدناه. يستند هذا المثال إلى بيئة Windows، يمكنك المراجعة حسب الحاجة للبيئة الخاصة بك.
set CLUSTERNAME= set USERNAME=admin set PASSWORD= set SQLDATABASESERVERNAME= set SQLDATABASENAME= set SQLPASSWORD= set SQLUSER=sqluser
من سطر الأوامر، استخدم الأمر التالي للتحقق من أنه يمكنك الاتصال بنظام مجموعة HDInsight:
curl -u %USERNAME%:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/status
ينبغي أن تتلقى ردًا مشابهًا للرد التالي:
{"status":"ok","version":"v1"}
استخدم ما يلي لإرسال مهمة sqoop:
curl -u %USERNAME%:%PASSWORD% -d user.name=%USERNAME% -d command="export --connect jdbc:sqlserver://%SQLDATABASESERVERNAME%.database.windows.net;user=%SQLUSER%@%SQLDATABASESERVERNAME%;password=%PASSWORD%;database=%SQLDATABASENAME% --table log4jlogs --export-dir /example/data/sample.log --input-fields-terminated-by \0x20 -m 1" -d statusdir="wasb:///example/data/sqoop/curl" https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/sqoop
المعلمات المستخدمة مع هذا الأمر هي كما يلي:
-d - نظرًا لعدم استخدام
-G
، يتم تعيين الطلب افتراضيًا إلى أسلوب POST.-d
يحدد قيم البيانات التي يتم إرسالها مع الطلب.user.name - المستخدم الذي يقوم بتشغيل الأمر.
الأمر - أمر Sqoop الذي سيتم تنفيذه.
statusdir - الدليل الذي ستتم كتابة حالة هذه المهمة إليه.
يجب أن يقوم هذا الأمر بإرجاع معرّف مهمة يمكن استخدامه للتحقق من حالة المهمة.
{"id":"job_1415651640909_0026"}
للتحقق من حالة المهمة، استخدم الأمر التالي. استبدل
JOBID
بالقيمة التي تم إرجاعها في الخطوة السابقة. على سبيل المثال، إذا كانت قيمة الإرجاع{"id":"job_1415651640909_0026"}
، ستكونJOBID
هيjob_1415651640909_0026
. راجع موقعjq
حسب الحاجة.set JOBID=job_1415651640909_0026 curl -G -u %USERNAME%:%PASSWORD% -d user.name=%USERNAME% https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/jobs/%JOBID% | C:\HDI\jq-win64.exe .status.state
إذا انتهت المهمة، ستكون الحالة ناجحة.
ملاحظة
يُرجع طلب Curl هذا مستند JavaScript Object Notation (JSON) مع معلومات حول المهمة، ويُستخدم jq لاسترداد قيمة الحالة فقط.
بمجرد تغير حالة المهمة إلى ناجحة، يمكنك استرداد نتائج المهمة من تخزين Azure Blob. تحتوي المعلمة
statusdir
التي تم تمريرها مع الاستعلام على موقع ملف الإخراج، في هذه الحالة،wasb:///example/data/sqoop/curl
. يخزن هذا العنوان إخراج المهمة في الدليلexample/data/sqoop/curl
على حاوية التخزين الافتراضية المستخدمة بواسطة نظام مجموعة HDInsight.يمكنك استخدام مدخل Microsoft Azure للوصول إلى stderr وstdout blobs.
للتحقق من أن البيانات قد تم تصديرها، استخدم الاستعلامات التالية من عميل SQL لعرض البيانات التي تم تصديرها:
SELECT COUNT(*) FROM [dbo].[log4jlogs] WITH (NOLOCK); SELECT TOP(25) * FROM [dbo].[log4jlogs] WITH (NOLOCK);
التقييدات
- تصدير كمية كبيرة - مع HDInsight المستند إلى نظام التشغيل Linux، لا يتم دعم موصل Sqoop المستخدم لتصدير البيانات إلى Microsoft SQL Server أو قاعدة بيانات Azure SQL حاليًا إدراج كميات كبيرة.
- إرسال في دفعات- مع HDInsight المستند إلى نظام التشغيل Linux، عند استخدام مفتاح التبديل
-batch
عند تنفيذ الإدراجات، يقوم Sqoop بإدراجات متعددة بدلاً من الإرسال في دفعات.
الملخص
كما هو موضح في هذه الوثيقة، يمكنك استخدام طلب HTTP الأولي لتشغيل نتائج مهام Sqoop ومراقبتها واستردادها على نظام مجموعة HDInsight الخاصة بك.
لمزيد من المعلومات حول واجهة REST المستخدمة في هذه المقالة، راجع دليل واجهة برمجة تطبيقات REST لـApache Sqoop.
الخطوات التالية
استخدام Apache Sqoop مع Apache Hadoop في HDInsight
بالنسبة لمقالات HDInsight الأخرى التي تتضمن curl:
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ