Udostępnianie i używanie zarządzanego klastra Hadoop/Spark z Cloud Dataproc (wiersz poleceń)

1. Omówienie

Cloud Dataproc to zarządzana usługa Spark i Hadoop, która umożliwia korzystanie z narzędzi typu open source do przetwarzania wsadowego, zapytań, strumieniowania i systemów uczących się. Automatyzacja Cloud Dataproc pomaga szybko tworzyć klastry, łatwo nimi zarządzać i oszczędzać pieniądze dzięki wyłączaniu klastrów, które nie są potrzebne. Mając mniej czasu i pieniędzy na administrację, możesz skupić się na swoich zadaniach i swoich danych.

Ten samouczek pochodzi ze strony https://cloud.google.com/dataproc/overview

Czego się nauczysz

  • Jak utworzyć zarządzany klaster Cloud Dataproc (z wstępnie zainstalowanym Apache Spark).
  • Jak przesłać zadanie Spark
  • Jak zmienić rozmiar klastra
  • Łączenie się przez SSH z węzłem głównym klastra Dataproc
  • Jak za pomocą gcloud badać klastry, zadania i reguły zapory sieciowej
  • Jak wyłączyć klaster

Czego potrzebujesz

Jak wykorzystasz ten samouczek?

Tylko do przeczytania Przeczytaj go i wykonaj ćwiczenia

Jak oceniasz swoje wrażenia z korzystania z usług Google Cloud Platform?

Początkujący Poziom średnio zaawansowany Biegły
.

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail lub G Suite, musisz je utworzyć.

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Zapamiętaj identyfikator projektu, unikalną nazwę we wszystkich projektach Google Cloud (powyższa nazwa jest już zajęta i nie będzie Ci odpowiadać). W dalszej części tego ćwiczenia w Codelabs będzie ona określana jako PROJECT_ID.

  1. Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Google Cloud.

Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Postępuj zgodnie z instrukcjami podanymi w sekcji „Czyszczenie” W tym samouczku znajdziesz wskazówki, jak wyłączyć zasoby, aby uniknąć naliczania opłat. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.

3. Włączanie interfejsów Cloud Dataproc API i Google Compute Engine API

Kliknij ikonę menu w lewym górnym rogu ekranu.

2bfc27ef9ba2ec7d.png

Z menu wybierz Menedżer API.

408af5f32c4b7c25.png

Kliknij Włącz interfejsy API i usługi.

a9c0e84296a7ba5b.png

Wyszukaj „Compute Engine” w polu wyszukiwania. Kliknij „Google Compute Engine API”. na wyświetlonej liście wyników.

b6adf859758d76b3.png

Na stronie Google Compute Engine kliknij Włącz.

da5584a1cbc77104.png

Po włączeniu kliknij strzałkę w lewo, aby wrócić.

Teraz wyszukaj „Google Cloud Dataproc API”. i ją włączyć.

f782195d8e3d732a.png

4. Uruchamianie Cloud Shell

Ta maszyna wirtualna oparta na Debianie zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i uwierzytelnianie. Oznacza to, że do tego ćwiczenia z programowania wystarczy przeglądarka (tak, działa ona na Chromebooku).

  1. Aby aktywować Cloud Shell z poziomu konsoli Cloud, kliknij Aktywuj Cloud Shell fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (udostępnienie środowiska i połączenie z nim powinno zająć tylko chwilę).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Zrzut ekranu 2017-06-14 o 10.13.43 PM.png

Po nawiązaniu połączenia z Cloud Shell powinno pojawić się potwierdzenie, że użytkownik jest już uwierzytelniony, a projekt jest już ustawiony na PROJECT_ID.

gcloud auth list

Dane wyjściowe polecenia

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

Dane wyjściowe polecenia

[core]
project = <PROJECT_ID>

Jeśli z jakiegoś powodu projekt nie jest skonfigurowany, uruchom po prostu to polecenie:

gcloud config set project <PROJECT_ID>

Szukasz urządzenia PROJECT_ID? Sprawdź identyfikator użyty w krokach konfiguracji lub wyszukaj go w panelu Cloud Console:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

Cloud Shell ustawia też domyślnie niektóre zmienne środowiskowe, które mogą być przydatne podczas uruchamiania kolejnych poleceń.

echo $GOOGLE_CLOUD_PROJECT

Dane wyjściowe polecenia

<PROJECT_ID>
  1. Na koniec ustaw domyślną strefę i konfigurację projektu.
gcloud config set compute/zone us-central1-f

Możesz wybrać różne strefy. Więcej informacji znajdziesz w artykule Regiony i Strefy.

5. Utwórz klaster Cloud Dataproc

Po uruchomieniu Cloud Shell możesz użyć wiersza poleceń, aby wywołać polecenie gcloud z pakietu SDK Cloud lub inne narzędzia dostępne w instancji maszyny wirtualnej.

Wybierz nazwę klastra, której chcesz użyć w tym module:

$ CLUSTERNAME=${USER}-dplab

Zacznijmy od utworzenia nowego klastra:

$ gcloud dataproc clusters create ${CLUSTERNAME} \
  --region=us-central1 \
  --scopes=cloud-platform \
  --tags codelab \
  --zone=us-central1-c

W tym samouczku powinny wystarczyć domyślne ustawienia klastra, które obejmują 2 węzły robocze. Powyższe polecenie zawiera opcję --zone określającą strefę geograficzną, w której zostanie utworzony klaster, oraz 2 opcje zaawansowane (--scopes i --tags), które zostały opisane poniżej podczas korzystania z włączonych funkcji. Informacje o dostosowywaniu ustawień klastra za pomocą flag wiersza poleceń znajdziesz w poleceniu pakietu SDK Cloud gcloud dataproc clusters create.

6. Przesyłanie zadania Spark do klastra

Zadanie możesz przesłać za pomocą żądania do interfejsu Cloud Dataproc API jobs.submit, narzędzia wiersza poleceń gcloud lub konsoli Google Cloud Platform. Możesz też połączyć się z instancją maszyny w klastrze przez SSH, a następnie uruchomić zadanie z instancji.

Prześlijmy zadanie za pomocą narzędzia gcloud z wiersza poleceń Cloud Shell:

$ gcloud dataproc jobs submit spark --cluster ${CLUSTERNAME} \
  --class org.apache.spark.examples.SparkPi \
  --jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000

Po uruchomieniu zadania w oknie Cloud Shell wyświetlą się dane wyjściowe.

Aby przerwać wyjście, naciśnij Ctrl+C. Spowoduje to zatrzymanie polecenia gcloud, ale zadanie będzie nadal uruchomione w klastrze Dataproc.

7. Wyświetlanie listy zadań i ponowne łączenie

Drukuj listę zadań:

$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}

Ostatnio przesłane zadanie znajduje się na początku listy. Skopiuj identyfikator zadania i wklej go w miejscu „jobId” w tym poleceniu. To polecenie połączy się ponownie z określonym zadaniem i wyświetli dane wyjściowe:

$ gcloud dataproc jobs wait jobId

Po zakończeniu zadania dane wyjściowe będą zawierać przybliżoną wartość liczby π.

493928df54f61386.png

8. Zmień rozmiar klastra

W przypadku większych obliczeń możesz dodać do klastra więcej węzłów, aby przyspieszyć jego działanie. Dataproc pozwala na dodawanie i usuwanie węzłów z klastra w dowolnym momencie.

Sprawdź konfigurację klastra:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Powiększ klaster, dodając kilka węzłów z możliwością wywłaszczania:

$ gcloud dataproc clusters update ${CLUSTERNAME} --num-secondary-workers=2

Ponownie sprawdź klaster:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Zwróć uwagę, że oprócz workerConfig z pierwotnego opisu klastra istnieje teraz również zasób secondaryWorkerConfig, który zawiera 2 obiekty instanceNames dla instancji roboczych z możliwością wywłaszczania. Podczas uruchamiania nowych węzłów Dataproc wyświetla stan klastra jako gotowy.

Ponieważ rozpoczęto pracę z 2 węzłami, a teraz masz 4, Twoje zadania Spark powinny uruchamiać się około 2 razy szybciej.

9. Łączenie się z klastrem przez SSH

Połącz się z węzłem głównym przez SSH, którego nazwa instancji to zawsze nazwa klastra z dołączonym adresem -m:

$ gcloud compute ssh ${CLUSTERNAME}-m --zone=us-central1-c

Gdy po raz pierwszy uruchomisz polecenie ssh w Cloud Shell, spowoduje to wygenerowanie kluczy SSH do Twojego konta w tym miejscu. Możesz wybrać hasło lub na razie użyć pustego hasła i zmienić je później za pomocą ssh-keygen.

Sprawdź nazwę hosta instancji:

$ hostname

Podczas tworzenia klastra określono --scopes=cloud-platform, dlatego możesz uruchamiać w nim polecenia gcloud. Wyświetl listę klastrów w projekcie:

$ gcloud dataproc clusters list

Gdy skończysz, wyloguj się z połączenia SSH:

$ logout

10. Sprawdzanie tagów

Podczas tworzenia klastra dołączono opcję --tags umożliwiającą dodanie tagu do każdego węzła w klastrze. Tagi są używane do dołączania reguł zapory sieciowej do każdego węzła. W tym ćwiczeniu z programowania nie utworzono żadnych pasujących reguł zapory sieciowej, ale nadal możesz sprawdzić tagi w węźle i reguły zapory sieciowej w sieci.

Wydrukuj opis węzła nadrzędnego:

$ gcloud compute instances describe ${CLUSTERNAME}-m --zone us-central1-c

Poszukaj kodu tags: na końcu danych wyjściowych i sprawdź, czy zawiera on ciąg codelab.

Wydrukuj reguły zapory sieciowej:

$ gcloud compute firewall-rules list

Zwróć uwagę na kolumny SRC_TAGS i TARGET_TAGS. Dołączając tag do reguły zapory sieciowej, możesz określić, że będzie on używany we wszystkich węzłach, które go używają.

11. Wyłącz klaster

Klaster możesz wyłączyć przy użyciu żądania Cloud Dataproc API clusters.delete, pliku wykonywalnego gcloud dataproc clusters delete lub konsoli Google Cloud Platform w wierszu poleceń.

Wyłączmy klaster za pomocą wiersza poleceń Cloud Shell:

$ gcloud dataproc clusters delete ${CLUSTERNAME} --region us-central1

12. Gratulacje!

Wiesz już, jak utworzyć klaster Dataproc, przesłać zadanie Spark, zmienić rozmiar klastra, zalogować się przy użyciu SSH do logowania się do węzła głównego, użyć gcloud do badania klastrów, zadań i reguł zapory sieciowej, a także wyłączyć klaster za pomocą gcloud.

Więcej informacji

Licencja

Te materiały są na licencji Creative Commons Uznanie autorstwa 3.0 i Apache 2.0.