Úvod do služby Netflix Genie

1. Prehľad

V tomto tutoriále sa chystáme preskúmať Genie engine, pre ktorý Netflix vyvinul zadávanie pracovných miest do klastrov abstraktným spôsobom.

Pre tento výukový program sa odporúčajú základné znalosti o spracovaní veľkých dát, napríklad s programami Hadoop a Spark.

2. Prečo Genie?

Poďme si predstaviť, že máme veľa používateľov, ktorí to potrebujú odosielať rôzne úlohy do cloudu obsahujúceho veľké množstvo klastrov Hadoop rôznych veľkostí. Zatiaľ čo niektoré klastre sú vytvorené na spracovanie údajov v konkrétnom čase, iné sú sústredené okolo vypínania služieb, aby sa uvoľnili zdroje. Používatelia by sa tak dostali do problému hľadania správneho klastra pre svoju prácu.

Za predpokladu, že mnoho používateľov ani nechce vytvárať klastre alebo vedieť o konfigurácii, môže to byť skutočný problém. Čo tak poskytnúť používateľom spôsob, ako jednoducho zadať svoju prácu a získať výsledky späť bez toho, aby sa museli zaoberať nastavením infraštruktúry?

3. Čo je Genie?

Netflix postavil Genie ako distribuovaný engine, aby presne vyriešil spomínané problémy. Motor, ktorý poskytuje zjednotenie RESTful API na odosielanie úlohautonómne. Genie oddeľuje spúšťanie úloh od konfigurácie, ktorá umožňuje flexibilné škálovanie klastrov.

Genie však sám škálovanie klastrov nemení - jednoducho plní úlohy používateľov začatím ich úloh v klastri, ktorý zodpovedá ich pracovným potrebám.

Plánovanie nie je nič, pre čo bola Genie postavená. Hlavným účelom je riadenie práce na jednej úrovni práce.

Na plánovanie pracovných postupov by sa mali používať ďalšie nástroje, ako napríklad Apache Oozie. Netflix v skutočnosti jasne uvádza, že:

Genie nie je plánovač pracovných postupov, napríklad Oozie. Vykonávacou jednotkou Genie je jedna úloha Hadoop, Hive alebo Pig. Genie neplánuje ani nespúšťa pracovné toky - na spustenie nášho ETL v skutočnosti používame podnikový plánovač (UC4) v spoločnosti Netflix.

Genie napriek tomu ponúka API na správu zdrojov, ako sú klastre, aplikácie a príkazy. Po zaregistrovaní zdrojov ich môžu používatelia nájsť a začať odosielať svoje úlohy.

Na záver stojí za zmienku, že Genie je open-source projekt šitý viac-menej na konkrétne potreby Netflixu. Hrá dôležitú úlohu v rýchlo sa meniacom prostredí cloudu Netflix a integruje sa do technologického radu Netflix.

4. Džin v akcii

Teraz sa pozrime na Genie v akcii, aby sme lepšie pochopili, ako ho môžeme použiť na zadávanie pracovných miest. Na úvod sa prepracujeme k ukážke Genie dostupnej na GitHub.

4.1. Predpoklady

Tento príklad vyžaduje:

  • najnovšie verzie Docker a Docker Compose (alebo Docker Desktop, ktorý obsahuje obe)
  • nasledujúce voľné porty: 8080, 8088, 19888, 19070, 19075, 8089, 19889, 19071 a 19076
  • pomerne výkonný stroj s minimálne 8 GB RAM, z toho 4 GB by mali byť pridelené dokovacej stanici
  • najmenej 4 GB miesta na disku

4.2. Nastavenie klastra

V prvom rade sa musíme postarať nastavenie našich klastrov pomocou Docker Compose stiahnutím docker-compose.yml do priečinka podľa nášho výberu. Na tento účel vytvorme nový adresár s názvom demoDir. Komponovaný súbor definuje päť služieb, ktoré postupne preskúmame.

Najprv sa pozrime na server Genie, ktorý bude bežať v kontajneri s názvom genie_demo_app_3.3.9 ktorý mapuje port 8080 na Genie UI:

genie: image: netflixoss / genie-app: 3.3.9 ports: - "8080: 8080" depends_on: - genie-hadoop-prod - genie-hadoop-test - genie-apache tty: true container_name: genie_demo_app_3.3.9

Druhá služba je genie_demo_apache_3.3.9 ktorý sa používa na stiahnutie súborov vyžadovaných ukážkou:

genie-apache: image: netflixoss / genie-demo-apache: 3.3.9 tty: true container_name: genie_demo_apache_3.3.9

Na rad prichádza klient Genie, ktorý obsahuje vzorové skripty na odosielanie úloh pomocou Genie. Jeho názov kontajnera je genie_demo_client_3.3.9:

genie-client: image: netflixoss / genie-demo-client: 3.3.9 depends_on: - genie tty: true container_name: genie_demo_client_3.3.9

Ďalším je náš produkčný (SLA) klaster Hadoop. Táto služba dostane naše zadané úlohy. Správca prostriedkov klastra sa mapuje na port 8088, zatiaľ čo server histórie dostane 19888.

Tu urobíme malú úpravu a namapujte pomenované a dátové uzly na port 19070, respektíve 19075:

genie-hadoop-prod: image: sequenceiq / hadoop-docker: 2.7.1 príkaz: / bin / bash -c "/usr/local/hadoop/sbin/mr-jobhistory-daemon.sh spustiť server histórie && / etc / bootstrap. sh -bash "porty: -" 19888: 19888 "-" 19070: 50070 "-" 19075: 50075 "-" 8088: 8088 "tty: true container_name: genie_demo_hadoop_prod_3.3.9

Na záver poďme preskúmať testovací kontajner Hadoop predstavujúci testovací klaster. Podobne ako v produkčnom klastri má priradené porty 8089 (správca zdrojov), 19889 (server histórie), 19071 (pomenovaný uzol) a 19076 (dátový uzol):

genie-hadoop-test: image: sequenceiq / hadoop-docker: 2.7.1 príkaz: / bin / bash -c "/usr/local/hadoop/sbin/mr-jobhistory-daemon.sh spustiť server histórie && / etc / bootstrap. sh -bash "porty: -" 19889: 19888 "-" 19071: 50070 "-" 19076: 50075 "-" 8089: 8088 "tty: true container_name: genie_demo_hadoop_test_3.3.9

Poďme spustiť vyššie uvedené kontajnery spustením ukotviť-zložiť od demoDir. Pri prvom spustení to bude trvať dlhšie, pretože bude treba stiahnuť ukážkové obrázky:

cd demoDir docker-compose up -d

Môžeme skontrolovať, či je klaster pripravený a pripravený, a to kontrolou:

  • Genie UI: // localhost: 8080
  • Používateľské rozhranie správcu klastrových prostriedkov SLA: // localhost: 8088
  • TEST používateľského rozhrania správcu klastrových prostriedkov: // localhost: 8089

4.3. Init Demo

Teraz, keď sú spustené ukážkové kontajnery, sa môžeme do klientskeho kontajnera prihlásiť pomocou a docker exec príkaz:

docker exec -it genie_demo_client_3.3.9 / bin / bash

Teraz v kontajneri klienta vykonáme inicializačný skript pripraviť zoskupenia na prijatie našich pracovných miest:

./init_demo.py

Ak sa ukážka úspešne spustí, používateľské rozhranie Genie zobrazí údaje v klastroch, príkazoch a na kartách aplikácií.

4.4. Zadávanie pracovných miest

Ako ďalší príklad poďme zadať úlohu Spark na výpočet prvých 10 desatinných číslic π. Úlohu môžeme odoslať na test alebo SLA odovzdaním zodpovedajúceho literálu ako argumentu do skriptu:

./run_spark_submit_job.py sla 2.0.1 ./run_spark_submit_job.py test 2.0.1

Na karte Úlohy v používateľskom rozhraní Genie môžeme kliknúť na ikonu priečinka v každom popise úlohy a prejsť na ňu výkon priečinok. Odtiaľ po úspešnom dokončení nájdeme vypočítanú hodnotu pod stdout.

Používateľské rozhranie správcu prostriedkov Hadoop zobrazuje tiež úlohy klastrov.

Nakoniec opustíme kontajner klienta, zastavíme a odstránime všetky ukážkové kontajnery spustením:

ukotviť-zložiť

Obrázky budú stále k dispozícii na disku a demo kontajnery môžeme kedykoľvek znova spustiť.

5. Záver

V tomto tutoriáli sme predstavili Genie, nástroj na správu úloh vyvinutý spoločnosťou Netflix.

Potom sme prešli ukážkou, ktorá nám poskytla praktický príklad toho, ako môžeme Genie použiť v skutočných scenároch.

Príklad kódu je ako vždy na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found