لا أحد يجد المتتالية على Hadoop خريطة الحد مفيدة ؟

StackOverflow https://stackoverflow.com/questions/3681494

  •  02-10-2019
  •  | 
  •  

سؤال

كنت أحاول المتتالية, ولكن لا أرى أي ميزة على الكلاسيكية خريطة الحد نهج وظائف الكتابة.

خريطة خفض الوظائف يعطيني المزيد من الحرية و المتتالية يبدو أن وضع الكثير من العقبات.

قد جعل وظيفة جيدة لصنع أشياء بسيطة بسيطة ولكن الأمور المعقدة..أجد من الصعب للغاية

هل هناك شيء أنا في عداد المفقودين.هل هناك ميزة واضحة المتتالية على الكلاسيكية النهج ؟

في ما السيناريو يجب أن اختار المتتالية على الكلاسيكية النهج ؟ أي واحد استخدامه وسعيدة ؟

هل كانت مفيدة؟

المحلول

لقد كنت أستخدم متتالي لبضع سنوات حتى الآن. أجد أنه مفيد للغاية. في النهاية ، يتعلق الأمر بمكاسب الإنتاجية. يمكن أن أكون أكثر كفاءة في إنشاء وظائف M/R والمحافظة عليها مقارنة برمز Java العادي. إليك بعض الأسباب التي تجعلها:

  • الكثير من رمز Boilerplate المستخدم لبدء وظيفة مكتوبة لك بالفعل.
  • القدرة على التأليف. عمومًا ، يكون الكود أسهل في القراءة وأسهل إعادة استخدامه عند كتابته كمكونات (عمليات) يتم خياطةها معًا لأداء بعض المعالجة الأكثر تعقيدًا.
  • أجد أن اختبار الوحدة أسهل. هناك أمثلة في حزمة متتالية توضح كيفية كتابة اختبارات الوحدة البسيطة لاختبار إخراج التدفقات مباشرة.
  • يسهل نموذج TAP (المصدر والوعة) من السهل تغيير المدخلات و ouput من الوظيفة ، لذلك يمكنك ، على سبيل المثال ، البدء مع الإخراج إلى stdout من أجل التنمية وتصحيح الأخطاء ثم التبديل إلى تسلسل HDFS لوظائف الدُفعات ثم التبديل صنبور HBase لتحديثات وقت واقعية زائفة.
  • ميزة أخرى رائعة لكتابة وظائف متتالية هي أنك تكتب حقًا المزيد من المصنع الذي يخلق وظائف. يمكن أن تكون هذه ميزة كبيرة عندما تحتاج إلى إنشاء شيء ما بشكل ديناميكي (أي نتائج التحكم في الوظائف الواحدة التي تنشئها وتشغيلها). أو ، في حالة أخرى ، كنت بحاجة إلى إنشاء وظيفة لكل مجموعة من 6 متغيرات ثنائية. هذه هي 64 وظيفة متشابهة جدا. سيكون هذا مشكلة مع خريطة Hadoop فقط تقلل من الفصول الدراسية.

على الرغم من أن هناك الكثير من المكونات التي تم إنشاؤها مسبقًا يمكنك تكوينها معًا ، إذا كان هناك قسم معين من منطق المعالجة الخاص بك يبدو أنه سيكون من الأسهل الكتابة في جافا المستقيمة ، فيمكنك دائمًا إنشاء وظيفة متتالية لفها. يتيح لك ذلك الحصول على فوائد متتالية ، ولكن يمكن كتابة عمليات مخصصة للغاية كوظائف Java مباشرة (تنفيذ واجهة متتالية).

نصائح أخرى

مع الأخذ في الاعتبار أنا كاتب المتتالية...

اقتراحي هو استخدام الخنزير أو خلية إذا معنى مشكلتك يا خنزير خاصة.

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

أول عقبة مع الخام MapReduce سوف يكون التفكير في MapReduce.مشاكل تافهة بسيطة في MapReduce ، ولكن أسهل بكثير من تطوير التطبيقات المعقدة إذا كان يمكنك العمل مع نموذج أكثر سهولة خرائط مشكلتك المجال (تصفية هذا تحليل هذا النوع تلك الانضمام إلى بقية ، إلخ).

القادم سوف ندرك أن وحدة طبيعية من العمل في Hadoop يتكون من عدة وظائف MapReduce.تسلسل الوظائف معا مشكلة قابلة للحل ولكن يجب أن لا تسرب في مجال تطبيق رمز مستوى ، ينبغي أن تكون خفية وشفافة.

كذلك سوف تجد إعادة بيع ديون وخلق إعادة استخدامها رمز أصعب بكثير إذا كان لديك باستمرار نقل المهام بين المخططون و مخفضات.أو من مصممي الخرائط السابقة المخفض على التحسين.الأمر الذي يؤدي إلى المسألة من هشاشة.

المتتالية تعتقد في الفشل في أسرع وقت ممكن.مخطط محاولات لحل وتلبية تبعيات بين كل تلك أسماء الحقول قبل Hadoop حتى تشارك في العمل.وهذا يعني 90%+ جميع القضايا وجدت قبل ساعات في انتظار عملك للعثور عليه أثناء التنفيذ.

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

مع تفشل بسرعة دلالات و كسول ملزمة المصارف المصادر ، فإنه يصبح من السهل جدا لبناء أطر المتتالية التي خلق أنفسهم المتتالية التدفقات (والتي أصبحت العديد من Hadoop MapReduce الوظائف).مشروع أنا حاليا يشارك مع ينتهي مع 100 من MapReduce وظائف في تشغيل العديد من خلقت على الطاير متوسط المدى على أساس التغذية المرتدة من البيانات التي يتم معالجتها.البحث عن Cascalog لرؤية مثال على Clojure على أساس إطار ببساطة إنشاء العمليات المعقدة.أو Bixo ويب التعدين أدوات إطار هذا أسهل بكثير لتخصيص من Nutch.

أخيرا Hadoop لم تستخدم وحدها ، وهذا يعني أن البيانات الخاصة بك هو دائما سحبت من بعض المصادر الخارجية ودفعت إلى آخر بعد المعالجة.السر المخفي عن Hadoop هو فعالة جدا ETL إطار (حتى سخيفة لسماع ETL البائعين الحديث عن استخدام أدوات دفع/سحب البيانات إلى/من Hadoop).المتتالية يخفف هذا الألم إلى حد ما من قبل مما يتيح لك كتابة العمليات والتطبيقات وحدة الاختبارات المستقلة من التكامل نهاية نقطة.المتتالية يستخدم في إنتاج لتحميل أنظمة مثل ميمباسي, أعطها أستر البيانات مرنة البحث ، HBase ، Hypertable ، كاساندرا ، إلخ.(للأسف ليس كل محولات تم إصدارها من قبل المؤلفين.)

لو سمحت ترسل لي قائمة القضايا الخاصة بك تعاني مع واجهة.أنا أبحث باستمرار عن أفضل الطرق لتحسين API والوثائق المجتمع المستخدم هو دائما للمساعدة.

لقد استخدمت متتالية مع Bixo لكتابة خط أنابيب تصنيف Link Conference الكامل لمكافحة البريد العشوائي لشبكة اجتماعية كبيرة.

أسفر خط أنابيب المتتالي عن 27 وظيفة السيد ، والتي كان من الصعب للغاية الحفاظ عليها في MR البسيطة. لقد كتبت السيد Jobs من قبل ، ولكن باستخدام شيء مثل Cascading يبدو وكأنه التحول من المجمع إلى Java (insert_fav_language_here).

واحدة من المزايا الكبيرة على الخلية أو الخنزير IMHO هي أن التتابع هو جرة واحدة ، والتي تجمعها مع وظيفتك. الخنزير والخليط لديهم المزيد من التبعيات (مثل mysql) أو ليس من السهل التضمين.

تنصل: على الرغم من أنني أعرف كريس وينسل شخصيًا ، إلا أنني أعتقد حقًا أن التتابع يركل **. بالنظر إلى تعقيدها ، فمن المثير للإعجاب للغاية لدرجة أنني لم أجد خطأ واحد يستخدمه.

أقوم بتدريس دورة Hadoop Boot Camp لـ Scale Unlimited ، وأيضًا الاستفادة من التتابع في Bixo وبناء تطبيقات تعدين الويب في Bixo Labs - لذلك أعتقد أنني حصلت على تقدير جيد لكلا النهجين.

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

التحدي الأكبر في التتابع هو أنه طريقة مختلفة للتفكير في سير عمل معالجة البيانات ، وهناك "سنام" مفاهيمي مقابل تحتاج إلى الحصول عليه قبل أن يبدأ كل شيء منطقيًا. بالإضافة إلى أن رسائل الخطأ يمكن أن تذكر أحد الإخراج من LEX/YACC ("الصراع في التحول/تقليل") :)

- كين

أعتقد أن المكان الذي تبدأ فيه مزايا Cascading في إظهار الحالات التي يكون لديك فيها كومة من الوظائف البسيطة التي يجب أن تبقى جميعًا منفصلة في التعليمات البرمجية المصدر ، ولكن يمكن جمعها جميعًا في تكوين في الخريطة أو المخفض. إن تجميعها معًا يجعل من الصعب قراءتها ، وفصلها ، يجعل البرنامج بطيئًا حقًا. يمكن لمؤسسة Cascading تجميعها معًا على الرغم من أنك تكتبها بشكل منفصل. الخنزير وإلى حد ما يمكن لـ Hive القيام بذلك أيضًا ، ولكن بالنسبة للبرامج الكبيرة ، أعتقد أن Cascading لديه ميزة الصيانة.

في غضون بضعة أشهر ، قد يكون بلوم منافسًا للتعبير ، ولكن إذا كان لديك برامج حقيقية للكتابة والتشغيل في إعداد الإنتاج ، فربما يكون التتابع أفضل رهان لك.

يتيح لك Cascading استخدام أسماء الحقول البسيطة و tuples بدلاً من الأنواع البدائية التي توفرها Hadoop التي ، والتي ، "... تميل إلى أن تكون على مستوى خاطئ من التفاصيل لإنشاء رمز متطور وقابل للتأليف للغاية يمكن مشاركته بين المطورين المختلفين" (توم وايت, Hadoop الدليل النهائي). تم تصميم Cascading لحل هذه المشاكل. ضع في اعتبارك أن بعض التطبيقات مثل المتتالية والخلية والخنازير وما إلى ذلك ، تم تطويرها بالتوازي وأحيانًا تفعل الشيء نفسه. إذا كنت لا تحب التتابع أو تجدها مربكة ، فربما تكون أفضل من استخدام شيء آخر؟

أنا متأكد من أن لديك هذا بالفعل ، ولكن هنا دليل المستخدم: http://www.cascading.org/1.1/userguide/pdf/userguide.pdf. يوفر نزهة لائقة من خلال تدفق البيانات في تطبيق متتالي نموذجي.

لقد عملت على التتابع لمدة عامين وما يلي أشياء مفيدة في التتابع.

1. code testability
2. easy integration with other tools
3. easily extensibile
4. you will focus only on business logic not on keys and values
5. proven in production and used by even twitter.

أوصي الناس باستخدام متتالية في معظم الأوقات.

Cascading عبارة عن غلاف حول Hadoop يوفر الصنابير والمصارف من وإلى Hadoop.

كتابة التعيينات والمخفضات لجميع مهامك ستكون مملة. حاول كتابة وظيفة متتالية ، ثم يتم تعيينك جميعًا لتجنب كتابة أي تعيينات ومخفضات.

تريد أيضًا أن ننظر إلى صنابير ومخططات متتالية (هذه هي الطريقة التي تدخل بها البيانات في وظيفة المعالجة المتتالية).

مع هذين الاثنين ، أي القدرة على تجنب كتابة مستخدمي Hadoop Ad-hadoop مع المخفضات والقدرة على استهلاك مجموعة واسعة من مصادر البيانات ، يمكنك حل الكثير من معالجة البيانات الخاصة بك بسرعة كبيرة وفعالة.

التتابع أكثر من مجرد غلاف بسيط حول Hadoop ، أحاول الحفاظ على الإجابة بسيطة. على سبيل المثال ، لقد قمت بنقل قاعدة بيانات MySQL ضخمة تحتوي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top