Apache Bigtop və bu gün Hadoop paylamalarının seçimi

Apache Bigtop və bu gün Hadoop paylamalarının seçimi

Bəlkə də, heç kim üçün sirr deyil ki, keçən il Apache Hadoop üçün böyük dəyişikliklər ili oldu. Keçən il Cloudera və Hortonworks-un birləşməsi baş verdi (əsasən, ikincisinin mənimsənilməsi) və Mapr ciddi maliyyə problemləri səbəbindən Hewlett Packard-ə satıldı. Bir neçə il əvvəl, on-premises quraşdırmalarında, seçim adətən Cloudera və Hortonworks arasında olurdu, amma bu gün, təəssüf ki, bu seçim artıq yoxdur. Həmçinin, Cloudera bu ilin fevralından başlayaraq, öz paylamasının binary versiyalarını ictimai depozitara buraxmayacağını elan etdi və indi yalnız ödənişli abunə ilə əldə edilə bilər. Təbii ki, 2019-cu ilin sonuna qədər buraxılan son versiyaların CDH və HDP yüklənməsi hələ də mümkündür və onlara dəstək bir-iki il müddətində gözlənilir. Bəs daha sonra nə etməliyik? Əvvəllər abunə üçün ödəniş edənlər üçün heç nə dəyişməyib. Amma ödənişli versiyaya keçmək istəməyən, lakin eyni zamanda klaster komponentlərinin ən son versiyalarını, eləcə də yamanlamalar və digər yeniliklər əldə etmək istəyənlər üçün, biz bu məqaləni hazırlamışıq. Burada mövcud vəziyyətdən çıxış yollarını müzakirə edəcəyik.

Məqalə daha çox icmal xarakterlidir. Orada paylamaların müqayisəsi və dərindən araşdırılması, habelə onların quraşdırılması və konfiqurasiyası ilə bağlı reseptlər olmayacaq. Bəs orada nə olacaq? Qısa olaraq Arenadata Hadoop adlı paylamadan danışacağıq, çünki bu, əlçatanlığına görə bizim diqqətimizi çəkib, bu gün isə bu, böyük nadirlikdir. Ardınca Vanilla Hadoop haqqında, əsasən onu Apache Bigtop ilə necə 'hazırlamaq' olar barədə danışacağıq. Hazırsınız? O zaman xoş gəlmisiniz.

Arenadata Hadoop

Apache Bigtop və bu gün Hadoop paylamalarının seçimi

Bu, tamamilə yeni və hələ çox az insan tərəfindən tanınan yerli istehsal paylamasıdır. Təəssüf ki, hazırda habr-da bununla bağlı yalnız bu məqalə.

haqqında daha ətraflı məlumatı rəsmi saytda layihə. Paylamanın son versiyaları Hadoop 3.1.2-yə üçüncü versiyası və 2.8.5-ə ikinci versiyası əsaslanır.

Roadmap haqqında məlumatı buradan tapa bilərsiniz burada.

Apache Bigtop və bu gün Hadoop paylamalarının seçimi
Arenadata Cluster Manager interfeysi

Arenadata-nın əsas məhsulu Arenadata Cluster Manager (ADCM), müxtəlif proqram həllərinin quraşdırılması, konfiqurasiyası və monitorinqi üçün istifadə edilir. ADCM pulsuz yayılır, onun funksionallığı isə içində ansible-playbooks dəstlərindən ibarət olan bundl əlavə edilməsi ilə genişlənir. Bundllar iki növə bölünür: enterprise və community. Sonular Arenadata saytından pulsuz yüklənə bilər. Öz şəxsi bundlunuzu hazırlayıb ADCM-ə qoşmaq imkanı da var.

Hadoop 3-ü yerləşdirmək və idarə etmək üçün ADCM ilə birlikdə community versiyalı bundl təklif olunur, bir də Hadoop 2 üçün yalnız Apache Ambari alternativ olaraq. Paketin depozitorları üzrə isə, onların ictimai istifadəyə açıq olduğunu, bütün klaster komponentləri üçün ənənəvi şəkildə yüklənib quraşdırıla biləcəyini qeyd etmək lazımdır. Ümumilikdə, buraxılış olduqca maraqlı görünür. Əminəm ki, Cloudera Manager və Ambari kimi həllərdən istifadə etməyə alışanlar ADCM-ni bəyənəcəklər. Bəziləri üçün isə bu distsrbutun bir nəhəng üstünlüyü də var program təminatı reyestrinə daxildir yerli istehsal üçün.

Zərərli cəhətləri isə, digər bütün Hadoop dağıtımlarında olduğu kimi, eynidir. Yəni:

  • belə adlanan "vendor lock-in". Cloudera və Hortonworks nümunəsində gördüyümüz kimi, şirkətin siyasətinin dəyişməsi riski həmişə mövcuddur.
  • Apache-dan qaldırma ilə əhəmiyyətli geri qalma.

Vanilla Hadoop

Apache Bigtop və bu gün Hadoop paylamalarının seçimi

Bildiyiniz kimi, Hadoop monolit məhsulu deyil, əslində, onun paylanmış fayl sistemi HDFS ətrafında bir sıra xidmətlərdən ibarətdir. Sadəcə bir fayl klasteri bir çoxu üçün yetersiz olacaq. Bəziləri pitää Hive, digərləri isə Presto istəyir, HBase və Phoenix də mövcuddur, Daha çox Spark istifadə olunur. Məlumatların orkestrasiyası və yüklənməsi üçün bəzən Oozie, Sqoop və Flume istifadə olunur. Təhlükəsizliyi təmin etmə məsələsi gündəmə gəldikdə isə, dərhal Kerberos və Ranger-i xatırlayırıq.

Hadoop komponentlərinin binary versiyaları ekosistemin hər bir layihəsinin saytı vasitəsilə tarball formatında əldə edilə bilər. Onları yükləyib başlayaraq quraşdırmağa başlaya bilərsiniz, lakin bir şərtlə: "xam" binary-lərdən paketlər yığıb, ehtimal ki, etmək istəyəcəyiniz yığın you'dan başqa, yüklənmiş komponentlərin versiyaları arasında uyğunluqla bağlı heç bir əminliyin olmayacaq. Daha üstün bir seçim Apache Bigtop vasitəsilə yığmağızdır. Bigtop, Apache-maven-repo-larından yığmağı, testləri əlindən keçirib paketləri yığmağı imkan tanıyacaq. Amma bizim üçün olduqca əhəmiyyətli olan odur ki, Bigtop yığdığı komponentlərin versiyaları arasında uyğundurları yığacaq. Buna daha ətraflı məlumat verəcəyik.

Apache Bigtop

Apache Bigtop və bu gün Hadoop paylamalarının seçimi

Apache Bigtop, bir sıra open source layihələrin yığılması, paketləşdirilməsi və test edilməsi üçün bir vasitədir
belə ki, məsələn, Hadoop və Greenplum kimi. Bigtop-un bir çox
versiyaları vardır. Məqalənin yazıldığı dövrdə son sabit versiya 1.4 idi,
və master-də 1.5. Fərqli versiyalarda fərqli komponent versiyaları işlədir.
Məsələn, 1.4 üçün core komponentləri Hadoop-nun 2.8.5 versionu, master-də isə
2.10.0. Dəstəklənən komponentlərin tərkibi də dəyişir. Nəsə köhnəlir və
yenilənməz, onun yerinə daha tələb olunan nəsə gəlir, və
bu, mütləq Apache-nin öz ailəsindən olmalıdır.

Bundan əlavə, Bigtop-un bir çox forkları var.

Bigtop ilə tanışmağa başladığımızda, ilk növbədə, Apache'nin digər layihələri ilə müqayisədə onun daha az tanınması və yayılması, habelə olduqca kiçik bir icmaya sahib olması bizi təəccübləndirdi. Bunun nəticəsində, məhsul haqqında məlumat minimum səviyyədədir və ortaya çıxan problemlərin həllini forumlardan və xəbərləşmələrdən tapmaq heç də faydalı olmaya bilər. Başlanğıcda, alətlərin özəllikləri səbəbindən tam distrobütiv paketini yığmaq bizə çətin bir tapşırıq oldu, amma bunun haqqında daha sonra bir az danışacağıq.

Bir teaser olaraq — Linux dünyasında zamanında Gentoo və LFS kimi layihələri sevənlər üçün bu alətlə işləmək nostalji dolu ola bilər, eləcə də o "mifoloji" dövrləri xatırlamaq faydalı olar, çünki biz özümüz layıqlar axtarır və bəlkə də yazırdıq, eyni zamanda yeni yamalarla Mozilla-nı tez-tez yenidən yığırdıq.

Bigtop-un böyük üstünlüyü açıq və çox yönlü alətlərdir ki, bunların üzərində yaradılıb. Onun təməlində Gradle və Apache Maven durur. Gradle, Google-un Android yığımı üçün istifadə etdiyi bir alət olaraq, olduqca tanınmışdır. Bu, çevikdir və deyildiyi kimi, "ərləşmişdir". Maven, Apache-də layihələrin yığımı üçün standart alətidir və əksər məhsullar burada məhz Maven vasitəsilə buraxıldığından, bunun da olmaması mümkün deyil. POM (layihə obyekt modeli) - Maven-in sizin layihənizlə işləməsi üçün lazım olanın təsvirini verən "təməl" xml faylına diqqət yetirmək vacibdir, ətrafında bütün işlər qurulur. Tamamilə burada
Maven hissəsində bəzi maneələr ortaya çıxır ki, bu da adətən ilk dəfə Bigtop ilə işləməyə başlayanların qarşısına çıxır.

Təcrübə

Buna görə də, haradan başlamalıyıq? Yükləmə səhifəsinə gedirik və arxiv şəklində son stabil versiyanı yükləyirik. Orada Bigtop tərəfindən yığılmış ikili artefaktları tapmaq da mümkündür. Qeyd edim ki, yayılmış paket menecerləri arasında YUM və APT dəstəklənir.

Alternativ bir yol kimi, son stabil buraxılışı birbaşa yükləyə bilərsiniz
github-dan:

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

Bigtop-a klonlanır...

remote: Obyektlərin sayılması: 46, tamamlandı.
remote: Obyektlərin sayılması: 100% (46/46), tamamlandı.
remote: Obyektlərin sıxılması: 100% (41/41), tamamlandı.
remote: Ümumi 40217 (delta 14), 10 (delta 1) təkrar edildi, 40171 paket təkrar edildi
Obyektlərin alınması: 100% (40217/40217), 43.54 MiB | 1.05 MiB/s, tamdır.
Dəyişikliklərin müəyyən edilməsi: 100% (20503/20503), tamdır.
Fayllar yenilənir: 100% (1998/1998), tamdır.

Alınan kataloq ./bigtop aşağıdakı kimi görünür:

./bigtop-bigpetstore — nümayiş proqramları, sintetik nümunələr
./bigtop-ci — CI alətləri, jenkins
./bigtop-data-generators — məlumatların yaradılması, sintetik, smoke testləri üçün və s.
./bigtop-deploy — dağıtım alətləri
./bigtop-packages — konfiqurasiyalar, skriptlər, yamaq paketləri, alətin əsas hissəsi
./bigtop-test-framework — test çərçivəsi
./bigtop-tests — testlər, yük və smoke testləri
./bigtop_toolchain — yığma mühiti, alətin işləməsi üçün mühitin hazırlanması
./build — yığma iş kataloqu
./dl — yüklənmiş mənbələrin kataloqu
.\/docker — docker-imicləri ilə yığma, test
.\/gradle — gradle konfiqurasiyası
.\/output – yığma artefaktlarının daxil olduğu kataloq
.\/provisioner — provizionlaşdırma

Bu mərhələdə bizim üçün ən maraqlı olan əsas konfiqurasiya .\/bigtop\/bigtop.bom, burada bütün dəstəklənən komponentləri versiyaları ilə görürük. Burada məhsulun fərqli versiyasını (əgər istəsək, onu yığmağa çalışa bilərik) və ya yığma versiyasını (məsələn, əhəmiyyətli bir dəyişikliyi əlavə etdikdə) göstərə bilərik.

Həmçinin, alt kataloq .\/bigtop\/bigtop-packages, komponentlərin və onlarla birlikdə paketlərin yığma prosesi ilə birbaşa əlaqədardır.

Beləliklə, arxivi yüklədik, onu açdıq və ya github'dan klonladıq, yığmaya başlaya bilərik?

Xeyr, öncə mühitimizi hazırlayaq.

Mühitin hazırlanması

Və burada qısa bir kənar izah lazımdır. Hərəkat və ya daha mürəkkəb bir məhsulun yığılması üçün bəzi mühitlər lazımdır — bizim vəziyyətimizdə bu JDK, eyni bölüşülmüş kitabxanalar, başlıq faylları və s. kimi alətlərdir, məsələn, ant, ivy2 və daha çox şey. Bigtop üçün lazım olan mühiti əldə etmənin bir yolu, yığma evində lazım olan komponentləri quraşdırmaqdır. Kronologiyada səhv edə bilərəm, amma görünür, 1.0 versiyasından etibarən əvvəlcədən konfiqurasiya edilmiş və müvafiq docker-imiclərində yığma variantı da var, onlarla burada tanış ola bilərsiniz.

Mühiti hazırlayarkən, bu işdə sizə kömək edən bir alət var — Puppet.

Aşağıdakı əmrlərdən istifadə edə bilərsiniz, iş root kataloqdan başlayır
alət, .\/bigtop:

.\/gradlew toolchain\n.\/gradlew toolchain-devtools\n.\/gradlew toolchain-puppetmodules

Və ya birbaşa puppetin vasitəsilə:

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

Təəssüf ki, artıq bu mərhələdə çətinliklər yarana bilər. Burada ümumi məsləhət — dəstəklənən bir distiributivdən istifadə etmək, yığma evində aktual olsun, ya da docker yolu ilə sınamaqdır.

Yığma

Nəyi yığmağa cəhd edə bilərik? Bu suala cavab,

.\/gradlew tasks

Package tasks bölməsində Bigtop`un son nəticə artefaktlarından ibarət bir sıra məhsullar var.
Onları -rpm və ya -pkg-ind əlavəsi ilə tanıya bilərik (docker`da yığma halında). Bu vəziyyətdə ən maraqlı olan Hadoop'dur.
Yığmanı yığma-serverimizin mühitində yerinə yetirməyə çalışaq:

.\/gradlew hadoop-rpm

Bigtop zəruri mənbələri, konkret komponent üçün lazım olanları yükləyəcək və yığmağa başlayacaq. Beləliklə, alətin işi Maven repozitoriyalarında və digər mənbələrdə bağlıdır, yəni internetə çıxışı olmalıdır.

Bigtop сам скачает необходимые исходники, нужные для конкретного компонента, и начнет сборку. Таким образом, работа инструмента завязана на репозиториях Maven и других источниках, то есть ему нужен доступ в Интернет.

İş prosesində standart bir çıxış formalaşır. Bəzən bununla və səhv mesajlarıyla nəyin səhv getdiyini başa düşmək mümkündür. Bəzən isə əlavə məlumat almaq lazım olur. Bu halda arqumentlər əlavə etmək məsləhətdir. --info --debug, həmçinin faydalı ola bilər –stacktrace. Məlumatların toplanması üçün rahat bir üsul var, açar --scan.

Bu, bigtop-un bütün məlumatları toplayaraq gradle'ə yerləşdirməsini təmin edəcək, daha sonra isə bir bağlantı verəcək
, o bağlantıdan keçərək, səlahiyyətli bir şəxs niyə yığma prosesinin uğursuz olduğunu başa düşə bilər.
Bu seçimin sizin üçün arzuolunmaz olan məlumatları açıq etməyi mümkün etdiyini unutmayın, məsələn, istifadəçi adları, nodlar, mühit dəyişənləri və s., buna görə də ehtiyatlı olun.

Tez-tez səhvlər, yığma üçün lazım olan hər hansı komponentin əldə olunmaması səbəbindən baş verir. Adətən, problemi aradan qaldırmaq üçün pom.xml-in kök kataloqunda olan mənbələrdəki bir şeyin düzəldilməsi üçün bir patch yaratmaq tələb olunur. Bu, müvafiq kataloqda yaradılaraq yerləşdirilməklə həyata keçirilir. .\bigtop\bigtop-packages\src\common\oozie\ patch olaraq, məsələn, patch2-fix.diff.

--- a/pom.xml
+++ b/pom.xml
@@ -136,7 +136,7 @@


central
- http://repo1.maven.org/maven2
+ https://repo1.maven.org/maven2

false

Ehtimal ki, bu məqaləni oxuyarkən, yuxarıda göstərilən düzəlişi özünüz etməyə ehtiyac qalmaz.

Hər hansı bir patch və düzəlişləri yığma mexanizminə tətbiq edərkən, yığmanı təmizləmə əmri ilə "sıfırlamaq" lazım ola bilər:

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

Bu əməliyyat, bu komponentin yığma üzərindəki bütün dəyişiklikləri geri alacaq, sonra yığma yenidən icra ediləcək. Bu dəfə layihəni docker görüntüsündə yığmağa cəhd edəcəyik:

.\/gradlew -POS=centos-7 -Pprefix=1.2.1 hadoop-pkg-ind
> Task :hadoop-pkg-ind
1.2.1 hadoop-pkg-i CentOS-7-də Docker-da tikilir...
+++ 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
....
 çoxlu çıxış
....
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-hdfs-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-yarn-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-mapreduce-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-hdfs-namenode-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-hdfs-secondarynamenode-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-hdfs-zkfc-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-hdfs-journalnode-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-hdfs-datanode-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-httpfs-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-yarn-resourcemanager-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-yarn-nodemanager-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-yarn-proxyserver-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-yarn-timelineserver-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-mapreduce-historyserver-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-client-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-conf-pseudo-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-doc-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-libhdfs-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-libhdfs-devel-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/bigtop\/build\/hadoop\/rpm\/RPMS\/x86_64\/hadoop-hdfs-fuse-2.8.5-1.el7.x86_64.rpm
Yazıldı: \/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]) tamamlandı. 38 dəqiqə 1.151 saniyə çəkdi.
:hadoop-pkg (Thread[Task worker for ':',5,main]) başladı.
> Task :hadoop-pkg
Task ':hadoop-pkg' güncəllənməyib, çünki:
Task heç bir çıxış bəyan etməyib, baxmayaraq ki, əməliyyatlar icra olunub.
:hadoop-pkg (Thread[Task worker for ':',5,main]) tamamlandı. 0.0 saniyə çəkdi.
BUILD SUCCESSFUL 40 dəqiqə 37 saniyə içində
6 həyata keçirilən vəzifə: 6 icra olunub
+ 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
Səhv: Belə bir konteyner yoxdur:
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
BUILD SUCCESSFUL 41 dəqiqə 24 saniyə içində
1 həyata keçirilən vəzifə: 1 icra olunub

Tikintinin CentOS üzərində həyata keçirildi, amma onu Ubuntu-da da həyata keçirmək olar:

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

Müxtəlif Linux distroları üçün paketlərin yığılmasından əlavə, alət toplanan paketlərlə depo yarada bilir, məsələn:

.\/gradlew yum

Eyni zamanda smoke testləri və docker-da yerləşdirməyi də unutmayaq.

Üç nodeli bir klaster yaratmaq:

.\/gradlew -Pnum_instances=3 docker-provisioner

Üç noddan ibarət klasterdə smoke testlərini başladın:

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

Klasteri silin:

.\/gradlew docker-provisioner-destroy

Docker konteynerlərinə daxil olmaq üçün əmrləri əldə edin:

.\/gradlew docker-provisioner-ssh

Vəziyyəti göstərin:

.\/gradlew docker-provisioner-status

Deployment tasks haqqında daha ətraflı məlumatı sənəddə oxuya bilərsiniz.

Testlərdən danışsaq, onların kifayət qədər çox olduğunu, əsasən smoke və inteqrasiya testləri olduğunu qeyd edim. Onların təhlili bu məqalənin çərçivəsindən kənardadır. Sadəcə olaraq, distiributun toplanması ilk baxışda göründüyü qədər çətin bir tapşırıq deyil. İstehsalda istifadə etdiyimiz bütün komponentləri toplamağı və onların testlərini keçməyi bacardıq, həmçinin onların yerləşdirilməsi və test mühitində əsas əməliyyatların icrası ilə bağlı heç bir problem yaşamamışıq.

Bigtop-da olan komponentlərdən əlavə, istədiyiniz digər bir şeyi, hətta öz proqram təminatınızı əlavə etmək imkanı var. Bunun hamısı mükəmməl avtomatlaşdırılır və CI/CD konsepsiyasına uyğundur.

Nəticə

Aydındır ki, belə bir şəkildə toplanmış distiributunu dərhal istehsala göndərmək mümkün deyil. Başqa sözlə, əgər öz distiributunuzu toplamaq və dəstəkləmək üçün real bir ehtiyacınız varsa, bu prosesə maliyyə və zaman yatırmalı olduğunuzu başa düşməlisiniz.

Buna baxmayaraq, düzgün yanaşma və peşəkar bir komanda ilə kommersiya həllərinə yol vermədən də keçinmək mümkündür.

Qeyd etmək lazımdır ki, Bigtop layihəsi inkişaf etməyə ehtiyac duyur və görünür ki, bu gün aktiv inkişaf edilmir. Həmçinin Hadoop 3-ün bu layihədə görünməsinin perspektivi də mübahisəlidir. Sözün düzü, əgər Hadoop 3-ün toplanması ilə bağlı real bir ehtiyacınız varsa, Arenadata-nın forkuna baxa bilərsiniz. fork orada standart komponentlərdən başqa bir sıra əlavələr (Ranger, Knox, NiFi) də var.
Rostelecom-a gəldikdə, Bigtop bizim üçün bu gün nəzərdən keçirilən seçimlərdən biridir. Bunun üzərinə dayanıb-dayanmayacağımıza isə zaman göstərəcək.

Əlavə

Yeni komponenti toplanmaya daxil etmək üçün, onun təsvirini bigtop.bom və .\/bigtop-packages faylına əlavə etmək lazımdır. Bu, mövcud komponentlərlə analoji olaraq edilməyə çalışıla bilər. Başlamaq üçün cəhd edin. İlk baxışda düşündüyünüz qədər çətin deyil.

Bəs siz nə düşünürsünüz? Fikrinizlə maraqlanırıq, şərhlərdə sizin fikrinizi görmək istəyirik və diqqətinizə görə təşəkkür edirik!

Məqalə Rostelecom-un məlumatların idarə edilməsi komandası tərəfindən hazırlanmışdır

Microsoft Rust\/WinRT təqdim etdi. Rust-ı IDE ilə inteqrasiya etmək üçün Rust-analyzer mövcuddur.

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster