Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ed:lab_05 [2024/03/12 21:20]
pszwed [Uruchomienie jupyyter-lab]
ed:lab_05 [2024/03/13 03:24] (current)
pszwed [1.2 Zbuduj obraz spark-jupyter]
Line 1: Line 1:
-====== Laboratorium 5 ====== +====== Laboratorium 5  ====== 
-FIXME Strona w trakcie edycji + 
-===== Konfiguracja Dockera =====+===== 1. Konfiguracja Dockera =====
  
 Naszym celem jest zbudowanie konfiguracji jak na rysunku: cztery kontenery połączone wspólną siecią Naszym celem jest zbudowanie konfiguracji jak na rysunku: cztery kontenery połączone wspólną siecią
Line 29: Line 29:
 </code> </code>
  
 +
 +**Pobierz pliki konfiguracyjne i zbiór danych: {{ :ed:spark-jdk17.zip |}}. Następnie rozpakuj w dowolnym katalogu roboczym.**
 ==== Utwórz sieć spark-network ==== ==== Utwórz sieć spark-network ====
  
Line 35: Line 37:
 </code> </code>
  
-==== Zbuduj obraz spark-python ====+==== 1.1. Zbuduj obraz spark-python ====
  
 Przejdź do katalogu ''spark-python''. Powinien w nim znajdować się plik Dockerfile z następującą zawartością: Przejdź do katalogu ''spark-python''. Powinien w nim znajdować się plik Dockerfile z następującą zawartością:
Line 67: Line 69:
  
  
-==== Zbuduj obraz spark-jupyter ====+==== 1.2 Zbuduj obraz spark-jupyter ====
  
 Przejdź do katalogu ''spark-jupyter''. Powinien w nim znajdować się plik Dockerfile z następującą zawartością: Przejdź do katalogu ''spark-jupyter''. Powinien w nim znajdować się plik Dockerfile z następującą zawartością:
Line 83: Line 85:
     pip3 cache purge; \     pip3 cache purge; \
     pip3 install pyspark numpy scikit-learn pandas matplotlib plotly jupyterlab; \     pip3 install pyspark numpy scikit-learn pandas matplotlib plotly jupyterlab; \
 +    apt-get install -y pandoc; \
 +    apt-get install -y texlive-xetex texlive-fonts-recommended texlive-plain-generic; \
 +    apt-get install -y texlive-latex-extra texlive-fonts-extra texlive-lang-all; \
     rm -rf /var/lib/apt/lists/*     rm -rf /var/lib/apt/lists/*
 +
 +
 RUN echo "spark ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers RUN echo "spark ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
 ENV JAVA_HOME /opt/java/openjdk ENV JAVA_HOME /opt/java/openjdk
Line 97: Line 104:
 </code> </code>
  
-==== Uruchomienie klastra ====+Obraz zawiera zbiór bibliotek ogólnego zastosowania języka Python do eksploracji danych, wizualizacji i uczenie maszynowego: 
 +  * bibliotekę pyspark 
 +  * typowe biblioteki uczenia maszynowego (ale bez tensorflow) 
 +  * jupyter-lab (wsparcie dla notatników) 
 +  * poandoc i instalację latexa (po załadowaniu notatnika możliwy jest wydruk w formacjie PDF z zawijaniem długich linii  
 + 
 +Jak uruchomić -  [[https://home.agh.edu.pl/~pszwed/wiki/doku.php?id=ed:lab_05#uruchomienie_jupyter-lab|opis w sekcji 3.1]] 
 + 
 +==== 1.3 Uruchomienie klastra ====
  
 W katalogu cluster powinien znaleźć się plik ''docker-compose.yml'' z następującą zawartością W katalogu cluster powinien znaleźć się plik ''docker-compose.yml'' z następującą zawartością
Line 180: Line 195:
   * WorkerUI (worker-1) [[http://localhost:9092/]]   * WorkerUI (worker-1) [[http://localhost:9092/]]
  
-==== Uruchomienie węzła spark-jupyter ====+==== 1.4 Uruchomienie węzła spark-jupyter ====
  
 Kontener będzie uruchamiany za pomocą polecenia: Kontener będzie uruchamiany za pomocą polecenia:
Line 194: Line 209:
   * W momencie uruchomienia wołany jest shell   * W momencie uruchomienia wołany jest shell
  
-===== Java =====+===== Java =====
  
-==== PiComputeApp ====+==== 2.1 PiComputeApp ====
  
 **1.** Dodaj kod klasy do projektu i wprowadź odpowiednie wywołanie w funkcji ''Main.main()'' **1.** Dodaj kod klasy do projektu i wprowadź odpowiednie wywołanie w funkcji ''Main.main()''
Line 284: Line 299:
 **5.** Umieść w spawozdaniu fragmenty zrzutów ekranu pokazujące działanie wykonawcy Sparka (konsoli i DriverUI) **5.** Umieść w spawozdaniu fragmenty zrzutów ekranu pokazujące działanie wykonawcy Sparka (konsoli i DriverUI)
      
-==== PiComputeAppDistributed ====+==== 2.2 PiComputeAppDistributed ====
  
 **1.** Wprowadź minimalną zmianę w kodzie aplikacji. Różnicą jest wskazanie adresu węzła Master.  **1.** Wprowadź minimalną zmianę w kodzie aplikacji. Różnicą jest wskazanie adresu węzła Master. 
Line 303: Line 318:
 **4.** Zamieść w spawozdaniu zrzuty WebUI węzłów Master i Worker(ów) wskazujących, że aplikacja była przez nie wykonywana. Możesz też dodać wykres Gantta z wykonywanych zadań (z DriverUI - port 4040, opcja timeline).  **4.** Zamieść w spawozdaniu zrzuty WebUI węzłów Master i Worker(ów) wskazujących, że aplikacja była przez nie wykonywana. Możesz też dodać wykres Gantta z wykonywanych zadań (z DriverUI - port 4040, opcja timeline). 
  
-==== LoadDistributedDataset ====+==== 2.3 LoadDistributedDataset ====
  
 Załadujemy zbiór danych do Sparka. Musi być on dostępny dla węzłów Załadujemy zbiór danych do Sparka. Musi być on dostępny dla węzłów
Line 385: Line 400:
  
  
-===== PySpark + Jupyter =====+===== PySpark + Jupyter =====
  
 Spróbujemy powtórzyć te kroki w środowisku Jupyter korzystając z biblioteki PySpark. Spróbujemy powtórzyć te kroki w środowisku Jupyter korzystając z biblioteki PySpark.
Line 392: Line 407:
  
  
-==== Uruchomienie jupyter-lab ====+==== 3.1 Uruchomienie jupyter-lab ====
  
 **1.** Uruchom obraz ''spark-jupyter'' w katalogu cluster **1.** Uruchom obraz ''spark-jupyter'' w katalogu cluster
 +
 +<code>
 +docker run -it --rm -v ".:/opt/spark/work-dir"  -p 4040:4040  -p 8888:8888 --network spark-network spark-jupyter /bin/bash
 +</code>
 +
  
 **2.** Wydaj polecenie **2.** Wydaj polecenie
Line 403: Line 423:
  
  
-**3.** W przeglądarce otwórz '' link ''http://localhost:8888/?token=pyspark'' (albo bez parametru token i wpisz pyspark w formularzu)+**3.** W przeglądarce otwórz  link ''http://localhost:8888/?token=pyspark'' (albo bez parametru token i wpisz pyspark w formularzu)
  
 Obraz ''spark-jupyter'' zawiera podstawowe biblioteki do realizacji zadań uczenia maszynowego. Można go wykorzystać na innych zajęciach. Obraz ''spark-jupyter'' zawiera podstawowe biblioteki do realizacji zadań uczenia maszynowego. Można go wykorzystać na innych zajęciach.
  
  
-==== Wyznaczanie liczby PI ====+==== 3.2 Wyznaczanie liczby PI ====
  
 **1.** Utwórz notatnik ''PiCompute'' i wprowadź w nim kod aplikacji (komórki) do wyznaczania liczby $\pi$ **1.** Utwórz notatnik ''PiCompute'' i wprowadź w nim kod aplikacji (komórki) do wyznaczania liczby $\pi$
Line 445: Line 465:
 **2.** Możesz uruchamiać interaktywnie kolejne komórki i monitorować działanie aplikacji w WebUI. Do momentu jawnego zakończenia sesji, będzie ona aktywna. **2.** Możesz uruchamiać interaktywnie kolejne komórki i monitorować działanie aplikacji w WebUI. Do momentu jawnego zakończenia sesji, będzie ona aktywna.
  
-==== LoadEnergyDataset ====+==== 3.3 LoadEnergyDataset ====
  
 **1.** Utwórz notatnik i wprowadź w nim kod: **1.** Utwórz notatnik i wprowadź w nim kod:
Line 590: Line 610:
 </code> </code>
  
-==== TODO - regresja dla Chin ====+==== 3.4 TODO - regresja dla Chin ====
  
-Przeprowadź to samo dla Chin, ale spróbuj znaleźć zależność pomiędzy liczbą ludności, a zapotrzebowaniem na energię (która w przypadku Chin jest raczej widoczna).+Przeprowadź taką samą analizę dla Chin, ale spróbuj znaleźć zależność pomiędzy liczbą ludności, a zapotrzebowaniem na energię (która w przypadku Chin jest raczej widoczna).
  
-Zapisz notatnik jako +**Zapisz notatnik jako PDF i prześlij razem ze sprawozdaniem**
  
ed/lab_05.1710274803.txt.gz · Last modified: 2024/03/12 21:20 by pszwed
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0