[PUS] 1. laboratorijska vježba - 2021/2022
Simke
Jel netko mozda imao problem da mu se program pokrene (running job), u clusteru pise state accepted, ali ne nista ne izvrti?
pepelko
Simke Mislim da je meni bio slican problem. Moguce da ti je do kolicine slobodnog prostora na disku. Trebas imati barem 10 % free space-a da bi ti se job izvrtio do kraja.
Simke
pepelko Izgleda da je do toga bilo, radi sada.. Hvala!
Ellie
Jel netko dobio ovakav error?
C:\hadoop-3.2.2\bin>hadoop jar VideoCount.jar VideoCount input/ output/
Usage: VideoCount <input path> <output path>
2021-12-04 18:47:11,622 WARN util.ShutdownHookManager: ShutdownHook '' timeout, java.util.concurrent.TimeoutException
java.util.concurrent.TimeoutException
at java.util.concurrent.FutureTask.get(FutureTask.java:205)
at org.apache.hadoop.util.ShutdownHookManager.executeShutdown(ShutdownHookManager.java:124)
at org.apache.hadoop.util.ShutdownHookManager$1.run(ShutdownHookManager.java:95)
Ellie
Ellie
Evo, u slucaju da to bude jos nekom ovakav error.
Na kraju sam uspjela pokrenuti sve tako da sam koristila korake is ovog posta:
https://fer.studosi.net/d/2207-pus-1-laboratorijska-vjezba-20202021/26
(btw koristila sam Intellij i Windows)
Ducius
Treba li labos negdje predat ili se samo moramo pojavit sa kodom na predaju?
lkm
Ducius zna netko odg na ovo? Jesu rekli nesto na predavanjima?
Simke
Kakvo sortiranje se traži u 3.zadatku, tj. kakav bi trebao biti ispis ako je input isti kao za 2.zadatak?
Noggenfogger
Simke citala sam u proslogodisnjoj temi da su rekli da input u 3.zad je output 2.zad, ali to meni nema smisla, ja bi input za 3.zad stavila isti kao input za 2.zad pa da provjerim kak ste vi shvatili 3.zadatak: mi trebamo izbrojati koliko je posjeta, znaci nebitno koliko % videa se pogledalo bitno je da se otvorio link(posjetio), sto znaci da bi threshold bio 0 (ako je vise od 0% pogledan video je posjecen)? I onda samo sortirati silazno po value I guess kao i sto je u 2.zadatku output value-a od najveceg prema najmanjem? (Samo sto je u 2.zad sortirano uzlazno po kljucu pa se potrefilo da je value silazno sortiran)
svemia
Amon Jel treba prije tih naredbi pokrenut start-dfs i start-yarn? Dobivam samo “mkdir: Your endpoint configuration is wrong; For more details see: http://wiki.apache.org/hadoop/UnsetHostnameOrPort”. Cmd mi je u admin nacinu rada.
Ellie
bearyn
trebas pokrenut start-dfs.cmd i start-yarn.cmd
meni je izbacivalo tu gresku, ali sve je ok kad stavim “-p”, odnosno
hadoop fs -mkdir -p /user/[current login user]
to je po accepted answeru odavde:
https://stackoverflow.com/questions/20821584/hadoop-2-2-installation-no-such-file-or-directory
Luka14
dammitimmad
I ja sam to shvatio da treba gledat samo posjete, a ne i prag taj
Ali kako mozemo uopce ista sortirat ako se reduce poziva za svaki (key,value) i zapisuje svaki rezultat zasebno?
Noggenfogger
Kekec nisam htjela predlagati ideju dok mi nije proradilo, da ne bi jos na krivi put navela. Uglavnom ovo su korisni linkovi (zivot sam pretrazila, ovo bi trebalo biti dovoljno).
https://stackoverflow.com/questions/42886864/how-to-sort-data-in-descending-order-in-map-reduce
https://stackoverflow.com/questions/13557007/how-to-emit-in-the-close-method-of-reducer
Noggenfogger
lkm pise u obavijesti da ce se predaja odrzati u terminima i prostorijama blalba… tako da ne vjerujem da treba negdje uploadati, napisali bi obavijest da treba. koliko znam nitko od profesora na faksu nije samo na predavanjima rekao da treba uploadati nesto, a da za to nije bilo obavijesti/uputa na ferwebu.
frle10
Ja sam probao, i upravo sam uspio. Koristim Dockefile i docker-compose od ovog autora:
https://github.com/cupgit/docker-hadoop
Malo sam promijenio Dockerfile da mi umjesto verzije 3.0.3 skine zadnju, 3.3.1 i radi savrseno. Lijepo se digne Docker container i mogu pristupit nodeovima preko web sucelja…
Nisam jos pokusao napravit labos do kraja s ovim, ali mucio sam se cijeli dan bzvz ako ovo funkcionira. Ova metoda je bolesno lagana i radi na apsolutno svim sustavima koji god da imate (Windows, Linux, Mac OS X).
Taj image je napravljen da radi u pseudo-distributed modu isto kako u labosu pise da treba apparently tako da eto, preporucam svakome tko vec nije da to proba jer je masno lakse i gotovo u 20 minuta (ako vec imate instaliran Docker i docker-compose).
frle10
Ok, da ponudim ipak svima ovu alternativu za koju mi se stvarno cini da maksimalno olaksava stvari.
Repozitorij koji sam gore linkao je outdated i zahtijeva promjene, fixove. Ja sam to forkao na svoj profil i napravio potrebne promjene pa mozete cloneati moj repo:
https://github.com/frle10/docker-hadoop
Svakako, postupak je sljedeci:
Instalirajte Docker (https://docs.docker.com/desktop/windows/install/). Ako ste na Windowsima, instalacija automatski obuhvaca i Docker Engine i docker compose, oboje vam treba. Ako ste na Linuxu, docker-compose se zasebno instalira, pretpostavit cu da ako koristite Linux vjv znate otic na net i kopirat par naredbi u terminal.
Pokrenite Docker na racunalu (na Windowsima trebate imati tray icon dolje di se vidi da je pokrenut, na Linuxu treba bit startan dockerd service).
Klonirajte ovaj moj repozitorij koji sam linkao
Pozicionirajte se u direktorij repozitorija u vasem najdrazem terminalu/command promptu
Pokrenite naredbu docker-compose up -d (ako ste slucajno setupali docker-compose V2, naredba je slicna, samo bez crtice –> “docker compose up -d”)
Gledajte kako se magija odvija pred vasim ocima 🙂 Ovo radi neovisno o vasem host OS-u
NOTE: Ovo samo digne hadoop u pseudo-distributed modu.. nedostatak ove metode je sto vjerojatno necete moc koristit iste naredbe za pokretanje Java programa kao sto je u uputama, jer je Hadoop u docker containeru i onda treba kopirat program u njega i iz containera pokrenut te naredbe. To se sve moze, npr. naredba docker exec -it ime_containera vas ubacuje u shell od hadoopa nakon sto ga dignete.
frle10
Zivcira me sto ne mogu edit objave napravit iz nekog razloga nakon 5 minuta od objavljivanja… Jos jedan update da ipak objasnim detaljno kako mozete doc do svega sto treba s ovom metodom:
Instalirajte Docker (https://docs.docker.com/desktop/windows/install/). Ako ste na Windowsima, instalacija automatski obuhvaca i Docker Engine i docker compose, oboje vam treba. Ako ste na Linuxu, docker-compose se zasebno instalira, pretpostavit cu da ako koristite Linux vjv znate otic na net i kopirat par naredbi u terminal.
Pokrenite Docker na racunalu (na Windowsima trebate imati tray icon dolje di se vidi da je pokrenut, na Linuxu treba bit startan dockerd service).
Klonirajte ovaj moj repozitorij koji sam linkao (https://github.com/frle10/docker-hadoop)
Pozicionirajte se u direktorij repozitorija u vasem najdrazem terminalu/command promptu
Pokrenite naredbu docker-compose up -d (ako ste slucajno setupali docker-compose V2, naredba je slicna, samo bez crtice –> “docker compose up -d”)
Gledajte kako se magija odvija pred vasim ocima 🙂 Ovo radi neovisno o vasem host OS-u
Kad napravite svoj Java program i kompajlirate ga, taj .jar file treba kopirati u hadoop container. To radite s naredbom “docker cp put/do/java/programa/program.jar <container_id>:/program.jar”. Dakle, prvi argument naredbe cp je put do .jar filea vaseg programa na vasem racunalu, a drugi argument je put gdje ce se kopirat u containeru. container_id nadete tako da upisete “docker container list” i nadete hadoop (bit ce samo on ako ne koristite inace docker) i kopirate mu container id.
Hadoop je u docker containeru, pa sad ne mozete koristit naredbe iz uputa samo tako za pokretanje vasih programa. Iduci korak je moci uci u shell od containera, da mozete koristiti hadoop naredbe. To se radi sa “docker-compose exec hadoop bash”. Kad ste u tome, mozete pokretati naredbe kao u uputi (ako ste uspjesno kopirali svoj file u container u koraku prije). Iz tog shella mozete izac sa “exit 0”.
To bi trebalo bit to, nisam jos niti sam probao sve od ovog ali tako planiram radit. Ak neko uspije prije mene nek javi 😃
Dekan
Frle Kako si napravio ovu mrezu “xapp” koju koristis u docker-compose.yml?
Murin
Ima netko prijedlog kako da se povezem na svoj kompjuter preko laptopa i tako predam labos, jer fakat mi se ne da ponovo to raditi, radije bi se propucao
Je li teamviewer okej ili ima neko bolje rjesenje?
Zabe
Kolko je vremenski zahtjevan labos?
tera
Nakon potrošena 2 dana na desetke razlicitih java errora totalno slučajno sam naišao na mogućnost pozivanja bilo kakvih executable/binary/script fajlova kao mappera i reducera - Streaming, čime je moguće koristiti bilo koji jezik.
U dokumentaciji stoji primjer koji koristi /bin/cat
kao mapper i /usr/bin/wc
kao reducer:
https://hadoop.apache.org/docs/current3/hadoop-streaming/HadoopStreaming.html
Kolko vidim u uputama nigdje eksplicitno ne piše da mora bit java pa ću ja probat ovako, kaj bu bu.
Ako neko želi koristit C# ko ja, microsoft ima neki basic tut kako napisat mapper i reducer program (ostatak tutoriala nije primjenjiv jer koriste HDInsight): https://docs.microsoft.com/en-us/azure/hdinsight/hadoop/apache-hadoop-dotnet-csharp-mapreduce-streaming
Inače, u bilo kojem jeziku da se radi, program samo treba čitati sa STDIN i output na STDOUT
Napisao bi detaljnije upute, ali radim još jedan labos