Apache Bigtop واختيار توزيع Hadoop اليوم

Apache Bigtop واختيار توزيع Hadoop اليوم

ربما لا يخفى على أحد أن العام الماضي كان عام تغيير كبير بالنسبة لشركة Apache Hadoop. في العام الماضي ، اندمجت Cloudera و Hortonworks (استحواذًا أساسيًا على الأخيرة) ، وتم بيع Mapr لشركة Hewlett Packard بسبب مشاكل مالية خطيرة. وإذا قبل بضع سنوات ، في حالة التركيبات في أماكن العمل ، كان الاختيار في كثير من الأحيان يجب أن يتم بين Cloudera و Hortonworks ، اليوم ، للأسف ، ليس لدينا خيار متبقي. مفاجأة أخرى كانت حقيقة أنه منذ فبراير من هذا العام ، أعلنت Cloudera عن وقف إطلاق البنيات الثنائية لتوزيعها إلى المستودع العام ، وهي متاحة الآن فقط عن طريق الاشتراك المدفوع. بالطبع ، لا تزال القدرة على تنزيل أحدث إصدارات CDH و HDP التي تم إصدارها قبل نهاية عام 2019 متاحة ، ومن المتوقع دعمها في غضون عام إلى عامين. لكن ماذا تفعل بعد ذلك؟ بالنسبة لأولئك الذين دفعوا مسبقًا مقابل الاشتراك ، لم يتغير شيء. وبالنسبة لأولئك الذين لا يرغبون في التبديل إلى الإصدار المدفوع من التوزيع ، ولكن في نفس الوقت يريدون أن يكونوا قادرين على تلقي أحدث إصدارات مكونات الكتلة ، وكذلك التصحيحات والتحديثات الأخرى ، فقد قمنا بإعداد هذه المقالة. في ذلك ، سننظر في الخيارات الممكنة للخروج من هذا الموقف.

المقالة هي أكثر من نظرة عامة. لن يقارن التوزيعات ويحللها بالتفصيل ، ولن تكون هناك وصفات لتثبيتها وتكوينها. لكن ماذا سيحدث؟ سنتحدث بإيجاز عن مجموعة توزيع مثل Arenadata Hadoop ، والتي تستحق اهتمامنا بحق بسبب توفرها ، وهو أمر نادر اليوم. وبعد ذلك سنتحدث عن Vanilla Hadoop ، بشكل أساسي حول كيفية "طهيه" باستخدام Apache Bigtop. مستعد؟ ثم نرحب تحت القط.

أريناداتا هادوب

Apache Bigtop واختيار توزيع Hadoop اليوم

هذه مجموعة توزيع جديدة تمامًا وغير معروفة في الوقت الحالي للتنمية المحلية. لسوء الحظ ، في الوقت الحالي لا يوجد سوى عنه في حبري هذه المقالة.

يمكن العثور على مزيد من المعلومات على المسؤول على الانترنت مشروع. تعتمد أحدث إصدارات التوزيع على Hadoop 3.1.2 للإصدار 3 و 2.8.5 للإصدار 2.

يمكن العثور على معلومات خارطة الطريق هنا.

Apache Bigtop واختيار توزيع Hadoop اليوم
واجهة مدير مجموعة Arenadata

المنتج الرئيسي في Arenadata هو مدير الكتلة Arenadata (ADCM)، والتي تُستخدم لتثبيت وتهيئة ومراقبة الحلول البرمجية المختلفة للشركة. يتم توزيع ADCM مجانًا ، ويتم توسيع وظائفها بإضافة حزم إليها ، وهي عبارة عن مجموعة من كتيبات اللعب غير الصالحة. الحزم مقسمة إلى نوعين: المؤسسة والمجتمع. الأخير متاح للتنزيل المجاني من موقع Arenadata. من الممكن أيضًا تطوير الحزمة الخاصة بك وربطها بـ ADCM.

لنشر وإدارة Hadoop 3 ، يتم تقديم نسخة مجتمعية من الحزمة بالاشتراك مع ADCM ، وبالنسبة لـ hadoop 2 هناك فقط أباتشي أمباري كبديل. بالنسبة للمستودعات التي تحتوي على حزم ، فهي مفتوحة للوصول العام ، ويمكن تنزيلها وتثبيتها بالطريقة المعتادة لجميع مكونات الكتلة. بشكل عام ، يبدو التوزيع ممتعًا للغاية. أنا متأكد من أنه سيكون هناك أولئك الذين اعتادوا على حلول مثل Cloudera Manager و Ambari ، والذين سيحبون ADCM نفسها. بالنسبة لشخص ما ، سيكون أيضًا إضافة ضخمة لمجموعة التوزيع المدرجة في سجل البرنامج لاستبدال الواردات.

إذا تحدثنا عن السلبيات ، فستكون هي نفسها كما في جميع توزيعات Hadoop الأخرى. يسمى:

  • ما يسمى ب "تأمين البائع". باستخدام مثال Cloudera و Hortonworks ، أدركنا بالفعل أن هناك دائمًا خطر تغيير سياسة الشركة.
  • تأخر كبير وراء اباتشي المنبع.

فانيلا هادوب

Apache Bigtop واختيار توزيع Hadoop اليوم

كما تعلم ، Hadoop ليس منتجًا مترابطًا ، ولكنه في الواقع مجموعة كاملة من الخدمات حول نظام الملفات الموزع HDFS الخاص به. قليل من الناس سيكونون راضين عن مجموعة ملفات واحدة. يحتاج البعض إلى Hive ، والبعض الآخر يحتاج إلى Presto ، ومن ثم هناك HBase و Phoenix ، يتم استخدام Spark بشكل متزايد. توجد أحيانًا Oozie و Sqoop و Flume للتنسيق وتحميل البيانات. وإذا نشأت مسألة الأمن ، فسيتم تذكر Kerberos على الفور بالاقتران مع Ranger.

تتوفر إصدارات ثنائية من مكونات Hadoop على موقع الويب لكل من مشاريع النظام البيئي في شكل كرات القطران. يمكنك تنزيلها وبدء التثبيت ، ولكن بشرط واحد: بالإضافة إلى التجميع الذاتي للحزم من الثنائيات "الخام" ، وهو ما تريده على الأرجح ، لن تثق في توافق الإصدارات التي تم تنزيلها من المكونات مع بعضها البعض. الخيار المفضل هو البناء باستخدام Apache Bigtop. سيسمح لك Bigtop بالبناء من مستودعات Apache maven وتشغيل الاختبارات وبناء الحزم. ولكن ، ما هو مهم جدًا بالنسبة لنا ، ستجمع Bigtop تلك الإصدارات من المكونات التي ستكون متوافقة مع بعضها البعض. سنتحدث عنها بمزيد من التفصيل لاحقًا.

اباتشي بيجتوب

Apache Bigtop واختيار توزيع Hadoop اليوم

Apache Bigtop هي أداة لبناء وتغليف واختبار عدد من
مشاريع مفتوحة المصدر مثل Hadoop و Greenplum. Bigtop لديها الكثير
إطلاق. في وقت كتابة هذا التقرير ، كان أحدث إصدار مستقر هو الإصدار 1.4 ،
وفي الماجستير كان 1.5. الإصدارات المختلفة من الإصدارات تستخدم إصدارات مختلفة
عناصر. على سبيل المثال ، بالنسبة لـ 1.4 ، تحتوي مكونات Hadoop الأساسية على الإصدار 2.8.5 ، وفي الإصدار الرئيسي
2.10.0. تتغير قائمة المكونات المدعومة أيضًا. شيء قديم و
يزول غير المتجدد ، ويحل محله شيء جديد ، أكثر طلبًا ، و
ليس بالضرورة شيئًا من عائلة أباتشي نفسها.

بالإضافة إلى ذلك ، لدى Bigtop الكثير شوك.

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

كمحاولة تشويقية ، قد يجد أولئك الذين زاروا مثل هذه المشاريع من عالم Linux مثل Gentoo و LFS أنه من اللطيف العمل مع هذا الشيء وتذكر تلك الأوقات "الملحمية" عندما بحثنا نحن أنفسنا عن (أو حتى كتبنا) ebuilds وأعدنا بناء الموزيلا بانتظام مع تصحيحات جديدة.

الميزة الكبيرة لـ Bigtop هي انفتاح وتعدد استخدامات الأدوات التي تقوم عليها. يعتمد على Gradle و Apache Maven. تُعرف Gradle جيدًا بالأداة التي تبنيها Google على Android. إنه مرن ، وكما يقولون ، "تم اختباره في المعركة". Maven هي أداة قياسية لبناء المشاريع في Apache نفسها ، وبما أن معظم منتجاتها يتم إصدارها من خلال Maven ، لم يكن من الممكن أن تفعل بدونها أيضًا. يجدر الانتباه إلى POM (نموذج كائن المشروع) - ملف xml "أساسي" مع وصف لكل ما هو ضروري لـ Maven للعمل مع مشروعك ، والذي يتم بناء جميع الأعمال حوله. بالضبط في
أجزاء من Maven وبعض العقبات التي عادة ما يواجهها القادمون الجدد إلى Bigtop.

ممارسة

إذن من أين يجب أن تبدأ؟ نذهب إلى صفحة التنزيل وننزل أحدث إصدار ثابت كأرشيف. يمكنك أيضًا العثور على القطع الأثرية الثنائية التي جمعتها Bigtop هناك. بالمناسبة ، من بين مديري الحزم المشتركين ، يتم دعم YUM و APT.

بدلاً من ذلك ، يمكنك تنزيل أحدث إصدار مستقر مباشرةً من
جيثب:

$ git clone --branch branch-1.4 https://github.com/apache/bigtop.git

جارٍ الاستنساخ إلى "bigtop" ...

remote: Enumerating objects: 46, done.
remote: Counting objects: 100% (46/46), done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 40217 (delta 14), reused 10 (delta 1), pack-reused 40171
Получение объектов: 100% (40217/40217), 43.54 MiB | 1.05 MiB/s, готово.
Определение изменений: 100% (20503/20503), готово.
Updating files: 100% (1998/1998), готово.

يبدو دليل ./bigtop الناتج مشابهًا لما يلي:

./bigtop-bigpetstore - تطبيقات تجريبية ، أمثلة تركيبية
./bigtop-ci - مجموعة أدوات CI ، جنكينز
./bigtop-data-generators - توليد البيانات ، المواد التركيبية ، لاختبارات الدخان ، إلخ.
./bigtop-deploy - أدوات النشر
./bigtop-packages - التكوينات ، والنصوص ، وبناء التصحيحات ، الجزء الرئيسي من الأداة
./bigtop-test-framework - إطار الاختبار
./bigtop-tests - الاختبارات نفسها ، الحمل والدخان
./bigtop_toolchain - بناء البيئة وتهيئة البيئة لأداة العمل
./build - بناء دليل العمل
./dl - دليل للمصادر التي تم تنزيلها
./docker - بناء في صور عامل الميناء والاختبار
./gradle - التكوين التدرج
./output - دليل حيث تذهب القطع الأثرية للبناء
./provisioner - التزويد

الأكثر إثارة للاهتمام في هذه المرحلة بالنسبة لنا هو التكوين الرئيسي ./bigtop/bigtop.bom، حيث نرى جميع المكونات المدعومة مع الإصدارات. هنا يمكننا تحديد إصدار مختلف من المنتج (إذا أردنا فجأة أن نحاول بنائه) أو إصدار تجميع (إذا أضفنا ، على سبيل المثال ، تصحيحًا مهمًا).

ومن الأهمية بمكان أيضًا الدليل الفرعي ./bigtop/bigtop-packages، والتي ترتبط ارتباطًا مباشرًا بعملية تجميع المكونات والحزم معهم.

لذا ، قمنا بتنزيل الأرشيف أو فك حزمته أو صنع نسخة منه من جيثب ، هل يمكننا البدء في البناء؟

لا ، دعنا نجهز البيئة أولاً.

اعداد البيئة

وهنا نحتاج إلى القليل من الاستطراد. لبناء أي منتج أكثر أو أقل تعقيدًا تقريبًا ، فأنت بحاجة إلى بيئة معينة - في حالتنا ، هذه هي JDK ، نفس المكتبات المشتركة ، ملفات الرأس ، وما إلى ذلك ، الأدوات ، على سبيل المثال ، ant ، ivy2 وأكثر من ذلك بكثير. أحد الخيارات للحصول على البيئة المناسبة لـ Bigtop هو تثبيت المكونات الصحيحة على مضيف الإنشاء. قد أكون مخطئًا في التسلسل الزمني ، ولكن يبدو أنه منذ الإصدار 1.0 كان هناك أيضًا خيار إنشاء في صور عامل الإرساء التي تم تكوينها مسبقًا والمتاحة ، يمكنك العثور عليها هنا.

أما بالنسبة لتهيئة البيئة فهناك مساعد لهذا - دمية.

يمكنك استخدام الأوامر التالية ، يتم التشغيل من الدليل الجذر
أداة، ./bigtop:

./gradlew toolchain
./gradlew toolchain-devtools
./gradlew toolchain-puppetmodules

أو مباشرة عن طريق الدمية:

puppet apply --modulepath=<path_to_bigtop> -e "include bigtop_toolchain::installer"
puppet apply --modulepath=<path_to_bigtop> -e "include bigtop_toolchain::deployment-tools"
puppet apply --modulepath=<path_to_bigtop> -e "include bigtop_toolchain::development-tools"

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

جمعية

ما الذي يمكننا محاولة جمعه؟ الإجابة على هذا السؤال ستعطي ناتج الأمر

./gradlew tasks

في قسم مهام الحزم ، يوجد عدد من المنتجات التي تمثل القطع الأثرية النهائية لشركة Bigtop.
يمكن التعرف عليها من خلال اللاحقة -rpm أو -pkg-ind (في حالة البناء
في عامل الميناء). في حالتنا ، الأكثر إثارة للاهتمام هو Hadoop.

دعنا نحاول البناء في بيئة خادم البناء الخاصة بنا:

./gradlew hadoop-rpm

سيقوم Bigtop بتنزيل المصادر الضرورية اللازمة لمكون معين والبدء في البناء. وبالتالي ، فإن عمل الأداة مرتبط بمستودعات Maven ومصادر أخرى ، أي يحتاج إلى الوصول إلى الإنترنت.

أثناء العملية ، يتم إنشاء الإخراج القياسي. في بعض الأحيان يمكن استخدام رسائل الخطأ ورسائل الخطأ لفهم الخطأ الذي حدث. وفي بعض الأحيان تحتاج إلى مزيد من المعلومات. في هذه الحالة ، يجب عليك إضافة الوسائط --info أو --debugويمكن أن تكون مفيدة أيضًا –stacktrace. هناك طريقة ملائمة لإنشاء مجموعة بيانات للوصول اللاحق إلى القوائم البريدية ، المفتاح --scan.

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

غالبًا ما تكون الأخطاء ناتجة عن عدم القدرة على الحصول على أي مكونات ضرورية للتجميع. عادةً ما تكون طريقة إصلاح المشكلة هي إنشاء تصحيح لإصلاح شيء ما في المصادر ، مثل العنوان في pom.xml في الدليل الجذر المصدر. يتم ذلك من خلال إنشائه ووضعه في الدليل المناسب ./bigtop/bigtop-packages/src/common/oozie/ التصحيح ، على سبيل المثال ، في النموذج patch2-fix.diff.

--- a/pom.xml
+++ b/pom.xml
@@ -136,7 +136,7 @@
<repositories>
<repository>
<id>central</id>
- <url>http://repo1.maven.org/maven2</url>
+ <url>https://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>

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

عند إدخال أي تصحيحات وتعديلات على آلية الإنشاء ، قد تحتاج إلى "إعادة تعيين" الإنشاء من خلال أمر التنظيف:

./gradlew hadoop-clean
> Task :hadoop_vardefines
> Task :hadoop-clean
BUILD SUCCESSFUL in 5s
2 actionable tasks: 2 executed

ستعمل هذه العملية على استرجاع جميع التغييرات التي تم إجراؤها على تجميع هذا المكون ، وبعد ذلك سيتم إجراء التجميع مرة أخرى. هذه المرة ، لنحاول بناء المشروع في صورة عامل ميناء:

./gradlew -POS=centos-7 -Pprefix=1.2.1 hadoop-pkg-ind
> Task :hadoop-pkg-ind
Building 1.2.1 hadoop-pkg on centos-7 in Docker...
+++ dirname ./bigtop-ci/build.sh
++ cd ./bigtop-ci/..
++ pwd
+ BIGTOP_HOME=/tmp/bigtop
+ '[' 6 -eq 0 ']'
+ [[ 6 -gt 0 ]]
+ key=--prefix
+ case $key in
+ PREFIX=1.2.1
+ shift
+ shift
+ [[ 4 -gt 0 ]]
+ key=--os
+ case $key in
+ OS=centos-7
+ shift
+ shift
+ [[ 2 -gt 0 ]]
+ key=--target
+ case $key in
+ TARGET=hadoop-pkg
+ shift
+ shift
+ [[ 0 -gt 0 ]]
+ '[' -z x ']'
+ '[' -z x ']'
+ '[' '' == true ']'
+ IMAGE_NAME=bigtop/slaves:1.2.1-centos-7
++ uname -m
+ ARCH=x86_64
+ '[' x86_64 '!=' x86_64 ']'
++ docker run -d bigtop/slaves:1.2.1-centos-7 /sbin/init
+
CONTAINER_ID=0ce5ac5ca955b822a3e6c5eb3f477f0a152cd27d5487680f77e33fbe66b5bed8
+ trap 'docker rm -f
0ce5ac5ca955b822a3e6c5eb3f477f0a152cd27d5487680f77e33fbe66b5bed8' EXIT
....
много вывода
....
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-mapreduce-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-namenode-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-secondarynamenode-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-zkfc-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-journalnode-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-datanode-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-httpfs-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-resourcemanager-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-nodemanager-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-proxyserver-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-timelineserver-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-mapreduce-historyserver-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-client-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-conf-pseudo-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-doc-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-libhdfs-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-libhdfs-devel-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-fuse-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-debuginfo-2.8.5-1.el7.x86_64.rpm
+ umask 022
+ cd /bigtop/build/hadoop/rpm//BUILD
+ cd hadoop-2.8.5-src
+ /usr/bin/rm -rf /bigtop/build/hadoop/rpm/BUILDROOT/hadoop-2.8.5-1.el7.x86_64
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.uQ2FCn
+ exit 0
+ umask 022
Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.CwDb22
+ cd /bigtop/build/hadoop/rpm//BUILD
+ rm -rf hadoop-2.8.5-src
+ exit 0
[ant:touch] Creating /bigtop/build/hadoop/.rpm
:hadoop-rpm (Thread[Task worker for ':',5,main]) completed. Took 38 mins 1.151 secs.
:hadoop-pkg (Thread[Task worker for ':',5,main]) started.
> Task :hadoop-pkg
Task ':hadoop-pkg' is not up-to-date because:
Task has not declared any outputs despite executing actions.
:hadoop-pkg (Thread[Task worker for ':',5,main]) completed. Took 0.0 secs.
BUILD SUCCESSFUL in 40m 37s
6 actionable tasks: 6 executed
+ RESULT=0
+ mkdir -p output
+ docker cp
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb:/bigtop/build .
+ docker cp
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb:/bigtop/output .
+ docker rm -f ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
+ '[' 0 -ne 0 ']'
+ docker rm -f ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
Error: No such container:
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
BUILD SUCCESSFUL in 41m 24s
1 actionable task: 1 executed

تم البناء تحت CentOS ، ولكن يمكنك أيضًا القيام بذلك تحت Ubuntu:

./gradlew -POS=ubuntu-16.04 -Pprefix=1.2.1 hadoop-pkg-ind

بالإضافة إلى إنشاء حزم لتوزيعات Linux المختلفة ، يمكن للأداة إنشاء مستودع بالحزم المترجمة ، على سبيل المثال:

./gradlew yum

يمكنك أيضًا تذكر اختبارات الدخان ونشرها في عامل الإرساء.

قم بإنشاء مجموعة من ثلاث عقد:

./gradlew -Pnum_instances=3 docker-provisioner

قم بإجراء اختبارات الدخان على مجموعة من ثلاث عقد:

./gradlew -Pnum_instances=3 -Prun_smoke_tests docker-provisioner

حذف المجموعة:

./gradlew docker-provisioner-destroy

احصل على أوامر للاتصال داخل حاويات Docker:

./gradlew docker-provisioner-ssh

عرض الحالة:

./gradlew docker-provisioner-status

يمكنك قراءة المزيد حول مهام النشر في الوثائق.

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

بالإضافة إلى المكونات الموجودة في Bigtop ، من الممكن إضافة شيء آخر ، حتى تطوير البرامج الخاصة بك. كل هذا مؤتمت تمامًا ويتناسب مع مفهوم CI / CD.

اختتام

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

ومع ذلك ، بالاقتران مع النهج الصحيح والفريق المحترف ، فمن الممكن تمامًا الاستغناء عن الحلول التجارية.

من المهم أن نلاحظ أن مشروع Bigtop نفسه يحتاج إلى تطوير ، ويبدو أنه لا يوجد تطوير نشط فيه اليوم. احتمال ظهور Hadoop 3 فيه أيضًا غير مفهوم. بالمناسبة ، إذا كانت لديك حاجة حقيقية لبناء Hadoop 3 ، يمكنك إلقاء نظرة على شوكة من Arenadata ، بالإضافة إلى المعيار
هناك عدد من المكونات الإضافية (Ranger ، Knox ، NiFi).

بالنسبة إلى Rostelecom ، بالنسبة لنا Bigtop هو أحد الخيارات قيد النظر اليوم. سواء قررنا ذلك أم لا ، سيخبرنا الوقت فقط.

الزائدة الدودية

لتضمين مكون جديد في التجميع ، تحتاج إلى إضافة وصفه إلى bigtop.bom و ./bigtop-packages. يمكنك محاولة القيام بذلك عن طريق القياس مع المكونات الموجودة. حاول معرفة ذلك. الأمر ليس بالصعوبة التي تبدو للوهلة الأولى.

ماذا تعتقد؟ سنكون سعداء برؤية رأيك في التعليقات ونشكرك على اهتمامك!

تم إعداد المقال بواسطة فريق إدارة البيانات في Rostelecom

المصدر: www.habr.com

إضافة تعليق