Апацхе Бигтоп и одабир Хадооп дистрибуције данас

Апацхе Бигтоп и одабир Хадооп дистрибуције данас

Вероватно није тајна да је прошла година била година великих промена за Апацхе Хадооп. Прошле године су се спојили Цлоудера и Хортонворкс (у суштини, аквизиција овог другог), а Мапр је, због озбиљних финансијских проблема, продат Хевлетт Пацкард-у. И ако је неколико година раније, у случају локалних инсталација, често морао да се прави избор између Цлоудера и Хортонворкс-а, данас, нажалост, немамо овај избор. Још једно изненађење била је чињеница да је Цлоудера у фебруару ове године најавио да ће престати да пушта бинарне склопове своје дистрибуције у јавно складиште, а они су сада доступни само уз плаћену претплату. Наравно, и даље је могуће преузети најновије верзије ЦДХ и ХДП објављене пре краја 2019. године, а подршка за њих се очекује од једне до две године. Али шта даље? За оне који су раније плаћали претплату, ништа се није променило. А за оне који не желе да пређу на плаћену верзију дистрибуције, али у исто време желе да добију најновије верзије компоненти кластера, као и закрпе и друга ажурирања, припремили смо овај чланак. У њему ћемо размотрити могуће опције за излазак из ове ситуације.

Чланак је више преглед. Неће садржати поређење дистрибуција и њихову детаљну анализу, а неће бити ни рецепта за њихово инсталирање и конфигурисање. Шта ће се десити? Укратко ћемо говорити о таквој дистрибуцији као што је Аренадата Хадооп, која с правом заслужује нашу пажњу због своје доступности, што је данас веома ретко. А онда ћемо причати о Ванилла Хадооп-у, углавном о томе како се може „скувати” користећи Апацхе Бигтоп. Спреман? Онда добродошли у мачку.

Аренадата Хадооп

Апацхе Бигтоп и одабир Хадооп дистрибуције данас

Ово је потпуно нов и за сада мало познат дистрибутивни комплет домаћег развоја. Нажалост, тренутно на Хабре постоји само Овај чланак.

Више информација можете пронаћи на службеној страници Онлине пројекат. Најновије верзије дистрибуције су засноване на Хадооп-у 3.1.2 за верзију 3 и 2.8.5 за верзију 2.

Информације о мапи пута се могу наћи овде.

Апацхе Бигтоп и одабир Хадооп дистрибуције данас
Интерфејс менаџера кластера Аренадата

Аренадата-ин основни производ је Аренадата Цлустер Манагер (АДЦМ), који се користи за инсталирање, конфигурисање и праћење различитих софтверских решења компаније. АДЦМ се дистрибуира бесплатно, а његова функционалност је проширена додавањем пакета, који су скуп ансибле-плаибоок-а. Пакети су подељени у два типа: предузећа и заједница. Потоњи су доступни за бесплатно преузимање са веб локације Аренадата. Такође је могуће развити сопствени пакет и повезати га са АДЦМ-ом.

За примену и управљање Хадооп-ом 3, заједничка верзија пакета се нуди у комбинацији са АДЦМ-ом, али за Хадооп 2 постоји само Апацхе Амбари као алтернатива. Што се тиче спремишта са пакетима, она су отворена за јавни приступ, могу се преузети и инсталирати на уобичајен начин за све компоненте кластера. Све у свему, дистрибуција изгледа веома интересантно. Сигуран сам да ће бити оних који су навикли на решења као што су Цлоудера Манагер и Амбари, и којима ће се допасти сам АДЦМ. За неке ће то такође бити велики плус што дистрибуција укључени у регистар софтвера за супституцију увоза.

Ако говоримо о недостацима, они ће бити исти као и за све друге Хадооп дистрибуције. Наиме:

  • Такозвано „закључавање добављача“. Користећи примере Цлоудера и Хортонворкс, већ смо схватили да увек постоји ризик од промене политике компаније.
  • Значајно заостајање за Апачом узводно.

Ванилла Хадооп

Апацхе Бигтоп и одабир Хадооп дистрибуције данас

Као што знате, Хадооп није монолитан производ, већ, у ствари, читава галаксија услуга око свог дистрибуираног система датотека ХДФС. Мало људи ће имати довољно једног кластера датотека. Некима је потребан Хиве, другима Престо, а ту су и ХБасе и Пхоеник; Спарк се све више користи. За оркестрацију и учитавање података понекад се налазе Оозие, Скооп и Флуме. А ако се појави питање безбедности, онда Керберос у комбинацији са Ренџером одмах пада на памет.

Бинарне верзије Хадооп компоненти доступне су на веб страници сваког од пројеката екосистема у облику архивских датотека. Можете да их преузмете и започнете инсталацију, али под једним условом: поред самосталног састављања пакета из „сирових“ бинарних датотека, што највероватније желите да урадите, нећете имати поверења у компатибилност преузетих верзија компоненти са сваком друго. Пожељна опција је прављење користећи Апацхе Бигтоп. Бигтоп ће вам омогућити да градите из Апацхе мавен спремишта, покрећете тестове и правите пакете. Али, што је за нас веома важно, Бигтоп ће саставити оне верзије компоненти које ће бити компатибилне једна са другом. О томе ћемо детаљније говорити у наставку.

Апацхе Бигтоп

Апацхе Бигтоп и одабир Хадооп дистрибуције данас

Апацхе Бигтоп је алат за прављење, паковање и тестирање бројних
пројекти отвореног кода, као што су Хадооп и Греенплум. Бигтоп има доста
издања. У време писања, најновија стабилна верзија била је верзија 1.4,
а у мастер је било 1.5. Различите верзије издања користе различите верзије
компоненте. На пример, за 1.4 Хадооп компоненте језгра имају верзију 2.8.5 иу мастер
2.10.0. Састав подржаних компоненти се такође мења. Нешто застарело и
необновљиво одлази, а на његово место долази нешто ново, траженије, и
није нужно нешто из саме породице Апача.

Поред тога, Бигтоп има много виљушке.

Када смо почели да се упознајемо са Бигтопом, пре свега смо били изненађени његовом скромном, у поређењу са другим Апацхе пројектима, распрострањеношћу и популарношћу, као и веома малом заједницом. Из овога произилази да има минималних информација о производу, а тражење рјешења за проблеме који су се појавили на форумима и маилинг листама можда неће дати ништа. У почетку се испоставило да нам је био тежак задатак да завршимо комплетну монтажу дистрибуције због карактеристика самог алата, али о томе ћемо мало касније.

Као теасер, они који су у једном тренутку били заинтересовани за такве пројекте Линук универзума као што су Гентоо и ЛФС могли би да сматрају да је носталгично пријатно радити са овом ствари и присећати се оних „епских“ времена када смо и сами тражили (или чак писали) ебуилд и редовно обнавља Мозилу са новим закрпама.

Велика предност Бигтоп-а је отвореност и свестраност алата на којима се заснива. Заснован је на Градле и Апацхе Мавен. Градле је прилично познат као алатка коју Гоогле користи за прављење Андроид-а. Флексибилан је и, како кажу, „тестиран у борби“. Мавен је стандардни алат за прављење пројеката у самом Апацхе-у, а пошто се већина његових производа издаје преко Мавена, ни овде се не би могло без њега. Вреди обратити пажњу на ПОМ (пројектни објектни модел) - „основну“ кмл датотеку која описује све што је потребно Мавену за рад са вашим пројектом, око које се гради сав посао. Тачно у
делови Мавен-а и постоје неке препреке са којима се обично сусрећу први корисници Бигтоп-а.

Пракса

Дакле, одакле треба да почнете? Идите на страницу за преузимање и преузмите најновију стабилну верзију као архиву. Такође можете пронаћи бинарне артефакте које је прикупио Бигтоп. Иначе, међу уобичајеним менаџерима пакета, подржани су ИУМ и АПТ.

Алтернативно, можете преузети најновије стабилно издање директно са
гитхуб:

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

Клонирање у „великом врху“…

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-bigpetstore — демо апликације, синтетички примери
./bigtop-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, што је директно повезано са процесом склапања компоненти и пакета са њима.

Дакле, преузели смо архиву, распаковали је или направили клон са гитхуб-а, можемо ли да почнемо да градимо?

Не, хајде да прво припремимо окружење.

Припрема животне средине

И овде нам треба мало повлачење. Да бисте направили скоро сваки мање или више сложен производ, потребно вам је одређено окружење - у нашем случају, ово је ЈДК, исте дељене библиотеке, датотеке заглавља, итд., Алати, на пример, ант, иви2 и још много тога. Једна од опција да добијете окружење које вам је потребно за Бигтоп је да инсталирате потребне компоненте на хост за изградњу. Можда грешим у хронологији, али изгледа да је са верзијом 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

У одељку задаци пакета налази се низ производа који су коначни артефакти Бигтоп-а.
Могу се идентификовати суфиксом -рпм или -пкг-инд (у случају изградње
у Доцкер-у). У нашем случају, најинтересантнији је Хадооп.

Хајде да покушамо да изградимо у окружењу нашег сервера за изградњу:

./gradlew hadoop-rpm

Бигтоп ће сам преузети неопходне изворе потребне за одређену компоненту и започети састављање. Дакле, рад алата зависи од Мавен репозиторијума и других извора, односно захтева приступ Интернету.

Током рада, генерише се стандардни излаз. Понекад вам то и поруке о грешци могу помоћи да разумете шта је пошло наопако. А понекад је потребно да добијете додатне информације. У овом случају вреди додати аргументе --info или --debug, а такође може бити корисно –stacktrace. Постоји згодан начин за генерисање скупа података за накнадни приступ листама слања, кључ --scan.

Уз његову помоћ, бигтоп ће прикупити све информације и ставити их у градле, након чега ће дати линк,
пратећи које ће компетентно лице моћи да разуме зашто је скупштина пропала.
Имајте на уму да ова опција може открити информације које не желите, као што су корисничка имена, чворови, променљиве окружења, итд., зато будите пажљиви.

Често су грешке последица немогућности набавке компоненти неопходних за склапање. Типично, проблем можете да решите тако што ћете направити закрпу да поправите нешто у изворима, на пример, адресе у пом.кмл у основном директоријуму извора. Ово се постиже креирањем и постављањем у одговарајући директоријум ./bigtop/bigtop-packages/src/common/oozie/ закрпа, на пример, у облику патцх2-фик.дифф.

--- 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

Изградња је изведена под ЦентОС-ом, али се може урадити и под Убунту-ом:

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

Поред прављења пакета за различите Линук дистрибуције, алат може да креира спремиште са компајлираним пакетима, на пример:

./gradlew yum

Такође можете да се сетите о димним тестовима и примени у Доцкер-у.

Направите кластер од три чвора:

./gradlew -Pnum_instances=3 docker-provisioner

Покрените тестове дима у групи од три чвора:

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

Избришите кластер:

./gradlew docker-provisioner-destroy

Добијте команде за повезивање унутар доцкер контејнера:

./gradlew docker-provisioner-ssh

Прикажи статус:

./gradlew docker-provisioner-status

Више о задацима распоређивања можете прочитати у документацији.

Ако говоримо о тестовима, постоји прилично велики број њих, углавном дим и интеграција. Њихова анализа је ван оквира овог чланка. Дозволите ми само да кажем да састављање дистрибутивног комплета није тако тежак задатак као што се чини на први поглед. Успели смо да саставимо и прођемо тестове свих компоненти које користимо у нашој производњи, а такође нисмо имали проблема са њиховим постављањем и извођењем основних операција у тест окружењу.

Поред постојећих компоненти у Бигтоп-у, могуће је додати било шта друго, чак и сопствени развој софтвера. Све ово је савршено аутоматизовано и уклапа се у ЦИ/ЦД концепт.

Закључак

Очигледно, овако састављена дистрибуција не треба одмах да се шаље у производњу. Морате схватити да ако постоји стварна потреба за изградњом и подршком ваше дистрибуције, онда морате уложити новац и вријеме у ово.

Међутим, у комбинацији са правим приступом и стручним тимом, сасвим је могуће без комерцијалних решења.

Важно је напоменути да је самом пројекту Бигтоп потребан развој и изгледа да се данас не развија активно. Изгледи да се Хадооп 3 појави у њему такође су нејасни. Успут, ако имате стварну потребу да направите Хадооп 3, можете погледати виљушка из Аренадата, у којој је поред стандардних
Постоји велики број додатних компоненти (Рангер, Кнок, НиФи).

Што се тиче Ростелекома, за нас је Бигтоп једна од опција која се данас разматра. Да ли ћемо то изабрати или не, време ће показати.

Додатак

Да бисте укључили нову компоненту у склоп, потребно је да додате њен опис у бигтоп.бом и ./бигтоп-пацкагес. То можете покушати да урадите по аналогији са постојећим компонентама. Покушајте да схватите. Није тако тешко као што изгледа на први поглед.

Шта мислиш? Биће нам драго да видимо ваше мишљење у коментарима и хвала вам на пажњи!

Чланак је припремио тим за управљање подацима Ростелекома

Извор: ввв.хабр.цом

Додај коментар