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

1. Przegląd

Cloud Dataproc to zarządzana usługa Spark i Hadoop, która umożliwia korzystanie z narzędzi do danych open source do przetwarzania wsadowego, wykonywania zapytań, strumieniowania i uczenia maszynowego. Automatyzacja Cloud Dataproc pomaga szybko tworzyć klastry, łatwo nimi zarządzać i oszczędzać pieniądze, wyłączając je, gdy nie są potrzebne. Dzięki temu, że na administrację poświęcasz mniej czasu i pieniędzy, możesz skupić się na zadaniach i danych.

Ten samouczek jest oparty na artykule 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
  • Zmiana rozmiaru klastra
  • Jak połączyć się z węzłem głównym klastra Dataproc za pomocą protokołu SSH
  • Jak używać gcloud do sprawdzania klastrów, zadań i reguł zapory sieciowej
  • Jak wyłączyć klaster

Czego potrzebujesz

Jak zamierzasz korzystać z tego samouczka?

Tylko przeczytaj Przeczytaj i wykonaj ćwiczenia

Jak oceniasz korzystanie z usług Google Cloud Platform?

Początkujący Średnio zaawansowany Zaawansowany

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. (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, czyli unikalną nazwę we wszystkich projektach Google Cloud (podana powyżej nazwa jest już zajęta i nie będzie działać w Twoim przypadku). W dalszej części tego laboratorium będzie on nazywany PROJECT_ID.

  1. Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów Google Cloud.

Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Wykonaj instrukcje z sekcji „Czyszczenie”, w której znajdziesz informacje o tym, jak wyłączyć zasoby, aby uniknąć naliczenia opłat po zakończeniu tego samouczka. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

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

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

2bfc27ef9ba2ec7d.png

W menu wybierz Menedżer interfejsów API.

408af5f32c4b7c25.png

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

a9c0e84296a7ba5b.png

W polu wyszukiwania wyszukaj „Compute Engine”. Na liście wyników, która się pojawi, kliknij „Google Compute Engine API”.

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 też go włącz.

f782195d8e3d732a.png

4. Uruchamianie Cloud Shell

Ta maszyna wirtualna oparta na Debianie zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Oznacza to, że do ukończenia tego ćwiczenia potrzebujesz tylko przeglądarki (działa ona na Chromebooku).

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

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Screen Shot 2017-06-14 at 10.13.43 PM.png

Po połączeniu z Cloud Shell zobaczysz, że uwierzytelnianie zostało już przeprowadzone, a projekt jest już ustawiony na Twój identyfikator projektu PROJECT_ID.

gcloud auth list

Wynik polecenia

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

Wynik polecenia

[core]
project = <PROJECT_ID>

Jeśli z jakiegoś powodu projekt nie jest ustawiony, po prostu wydaj to polecenie:

gcloud config set project <PROJECT_ID>

Szukasz urządzenia PROJECT_ID? Sprawdź, jakiego identyfikatora użyto w krokach konfiguracji, lub wyszukaj go w panelu konsoli Cloud:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

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

echo $GOOGLE_CLOUD_PROJECT

Wynik 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

Domyślne ustawienia klastra, które obejmują 2 węzły robocze, powinny wystarczyć na potrzeby tego samouczka. Powyższe polecenie zawiera opcję --zone, która umożliwia określenie strefy geograficznej, w której zostanie utworzony klaster, oraz 2 opcje zaawansowane: --scopes--tags. Ich działanie wyjaśniamy poniżej, gdy używasz funkcji, które one włączają. Informacje o używaniu flag wiersza poleceń do dostosowywania ustawień klastra znajdziesz w dokumentacji polecenia gcloud dataproc clusters create pakietu Cloud SDK.

6. Przesyłanie zadania Spark do klastra

Zadanie możesz przesłać za pomocą żądania 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 za pomocą SSH, a następnie uruchomić zadanie z tej 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

W trakcie wykonywania zadania w oknie Cloud Shell będą wyświetlane dane wyjściowe.

Przerwij dane wyjściowe, wpisując Control-C. Spowoduje to zatrzymanie polecenia gcloud, ale zadanie będzie nadal uruchomione w klastrze Dataproc.

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

Drukowanie listy zadań:

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

Najnowsze przesłane zadanie znajduje się u góry listy. Skopiuj identyfikator zadania i wklej go w miejsce „jobId” w poniższym poleceniu. Polecenie ponownie połączy się z określonym zadaniem i wyświetli jego dane wyjściowe:

$ gcloud dataproc jobs wait jobId

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

493928df54f61386.png

8. Zmiana rozmiaru klastra

Aby przyspieszyć wykonywanie większych obliczeń, możesz dodać do klastra więcej węzłów. Dataproc umożliwia dodawanie i usuwanie węzłów z klastra w dowolnym momencie.

Sprawdź konfigurację klastra:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Zwiększ rozmiar klastra, dodając węzły 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 oryginalnego opisu klastra jest teraz też secondaryWorkerConfig, który zawiera 2 instanceNames dla pracowników z możliwością wywłaszczania. Dataproc pokazuje, że klaster jest gotowy, podczas gdy nowe węzły są uruchamiane.

Ponieważ zaczęliśmy od 2 węzłów, a teraz mamy 4, zadania Spark powinny działać około 2 razy szybciej.

9. Nawiązywanie połączenia SSH z klastrem

Połącz się przez SSH z węzłem głównym, którego nazwa instancji jest zawsze nazwą klastra z dopiskiem -m:

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

Gdy po raz pierwszy uruchomisz polecenie ssh w Cloud Shell, wygeneruje ono klucze ssh dla Twojego konta. Możesz wybrać hasło wielowyrazowe lub na razie użyć pustego hasła wielowyrazowego i później zmienić je za pomocą ssh-keygen.

Sprawdź nazwę hosta na instancji:

$ hostname

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

$ gcloud dataproc clusters list

Po zakończeniu wyloguj się z połączenia SSH:

$ logout

10. Sprawdzanie tagów

Podczas tworzenia klastra została uwzględniona opcja --tags dodania tagu do każdego węzła w klastrze. Tagi służą do dołączania reguł zapory sieciowej do poszczególnych węzłów. W tym module nie utworzyliśmy żadnych pasujących reguł zapory sieciowej, ale nadal możesz sprawdzić tagi węzła i reguły zapory sieciowej w sieci.

Wydrukuj opis węzła głównego:

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

Pod koniec danych wyjściowych poszukaj tags: i sprawdź, czy zawiera codelab.

Wydrukuj reguły zapory sieciowej:

$ gcloud compute firewall-rules list

Zwróć uwagę na kolumny SRC_TAGSTARGET_TAGS. Dołączając tag do reguły zapory sieciowej, możesz określić, że ma ona być używana we wszystkich węzłach, które mają ten tag.

11. Wyłączanie klastra

Klaster możesz wyłączyć za pomocą żądania interfejsu Cloud Dataproc API clusters.delete, z wiersza poleceń za pomocą pliku wykonywalnego gcloud dataproc clusters delete lub w konsoli Google Cloud Platform.

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ę na węzeł główny za pomocą SSH, sprawdzić klastry, zadania i reguły zapory sieciowej za pomocą gcloud oraz wyłączyć klaster za pomocą gcloud.

Więcej informacji

Licencja

Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa 3.0 Generic oraz Apache 2.0.