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

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 .
haqqında daha ətraflı məlumatı rəsmi 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 .

Arenadata Cluster Manager interfeysi
Arenadata-nın əsas məhsulu , 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 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 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

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, 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 .
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.gitBigtop-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 və --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 executedBu ə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 olunubTikintinin 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-indMüxtəlif Linux distroları üçün paketlərin yığılmasından əlavə, alət toplanan paketlərlə depo yarada bilir, məsələn:
.\/gradlew yumEyni 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-provisionerKlasteri silin:
.\/gradlew docker-provisioner-destroyDocker konteynerlərinə daxil olmaq üçün əmrləri əldə edin:
.\/gradlew docker-provisioner-sshVəziyyəti göstərin:
.\/gradlew docker-provisioner-statusDeployment 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. 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
