Cloud Dataproc (Komut Satırı) ile Yönetilen Hadoop/Spark Kümesi Sağlama ve Kullanma

1. Genel Bakış

Cloud Dataproc; toplu işleme, sorgulama, akış ve makine öğrenimi için açık kaynak veri araçlarından yararlanmanıza olanak tanıyan, yönetilen bir Spark ve Hadoop hizmetidir. Cloud Dataproc otomasyonu, kümeleri hızla oluşturmanıza, kolayca yönetmenize ve ihtiyacınız olmadığında kümeleri devre dışı bırakarak paradan tasarruf etmenize yardımcı olur. Yönetime daha az zaman ve para harcandığından, işlerinize ve verilerinize odaklanabilirsiniz.

Bu eğitim https://cloud.google.com/dataproc/overview adresinden uyarlanmıştır.

Neler öğreneceksiniz?

  • Yönetilen Cloud Dataproc kümesi oluşturma (Apache Spark önceden yüklenmiş olarak).
  • Spark işi gönderme
  • Kümeyi yeniden boyutlandırma
  • Dataproc kümesinin ana düğümüne SSH uygulama
  • Kümeleri, işleri ve güvenlik duvarı kurallarını incelemek için gcloud kullanma
  • Kümenizi kapatma

Gerekenler

Bu eğiticiden nasıl yararlanacaksınız?

Yalnızca okuma Okuyun ve alıştırmaları tamamlayın

Google Cloud Platform hizmetlerinin kullanımıyla ilgili deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta Yeterli

2. Kurulum ve Gereksinimler

Kendi hızınızda ortam kurulumu

  1. Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. (Gmail veya G Suite hesabınız yoksa hesap oluşturmanız gerekir.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Tüm Google Cloud projelerinde benzersiz bir ad olan proje kimliğini unutmayın (yukarıdaki ad zaten alınmış ve size uygun olmayacaktır!). Bu kod laboratuvarın ilerleyen bölümlerinde PROJECT_ID olarak adlandırılacaktır.

  1. Sonraki adımda, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.

Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. "Temizleme" bölümündeki talimatları izlediğinizden emin olun. bölümünde, bu eğiticinin dışında faturalandırmayla karşılaşmamanız için kaynakları nasıl kapatacağınız konusunda tavsiyelerde bulunuyoruz. Yeni Google Cloud kullanıcıları 300 ABD doları ücretsiz deneme programından yararlanabilir.

3. Cloud Dataproc ve Google Compute Engine API'lerini etkinleştirme

Ekranın sol üst kısmındaki menü simgesini tıklayın.

2bfc27ef9ba2ec7d.png

Açılır menüden API Yöneticisi'ni seçin.

408af5f32c4b7c25.png

API'leri ve Hizmetleri Etkinleştir'i tıklayın.

a9c0e84296a7ba5b.png

"Compute Engine" araması yapın yazın. "Google Compute Engine API"yi tıklayın görünür.

b6adf859758d76b3.png

Google Compute Engine sayfasında Etkinleştir'i tıklayın.

da5584a1cbc77104.png

Etkinleştirildiğinde, geri dönmek için solu gösteren oku tıklayın.

Şimdi "Google Cloud Dataproc API" araması yapın ve onu da etkinleştireceğim.

f782195d8e3d732a.png

4. Cloud Shell'i Başlatma

Bu Debian tabanlı sanal makine, ihtiyacınız olan tüm geliştirme araçlarıyla yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Yani bu codelab'de ihtiyacınız olan tek şey bir tarayıcıdır (Evet, Chromebook'ta çalışır).

  1. Cloud Shell'i Cloud Console'dan etkinleştirmek için Cloud Shell'i etkinleştir fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q simgesini tıklamanız yeterlidir (sağlanması ve ortama bağlanması yalnızca birkaç dakika sürer).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

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

Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin PROJECT_ID olarak ayarlanmış olduğunu göreceksiniz.

gcloud auth list

Komut çıkışı

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

Komut çıkışı

[core]
project = <PROJECT_ID>

Herhangi bir nedenle proje ayarlanmamışsa şu komutu vermeniz yeterlidir:

gcloud config set project <PROJECT_ID>

PROJECT_ID cihazınızı mı arıyorsunuz? Kurulum adımlarında kullandığınız kimliği kontrol edin veya Cloud Console kontrol panelinden arayın:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

Cloud Shell bazı ortam değişkenlerini de varsayılan olarak ayarlar. Bu değişkenler, gelecekte komut çalıştırdığınızda işinize yarayabilir.

echo $GOOGLE_CLOUD_PROJECT

Komut çıkışı

<PROJECT_ID>
  1. Son olarak, varsayılan alt bölgeyi ve proje yapılandırmasını ayarlayın.
gcloud config set compute/zone us-central1-f

Çeşitli farklı alt bölgeler seçebilirsiniz. Daha fazla bilgi için Bölgeler ve Bölgeler.

5. Bir Cloud Dataproc kümesi oluşturun

Cloud Shell başlatıldıktan sonra Google Cloud SDK gcloud komutunu veya sanal makine örneğinde bulunan diğer araçları çağırmak için komut satırını kullanabilirsiniz.

Bu laboratuvarda kullanılacak küme adını seçin:

$ CLUSTERNAME=${USER}-dplab

Yeni bir küme oluşturarak başlayalım:

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

İki çalışmalı düğüm içeren varsayılan küme ayarları bu eğitim için yeterli olacaktır. Yukarıdaki komut, kümenin oluşturulacağı coğrafi alt bölgeyi belirtmek için --zone seçeneğini ve iki gelişmiş seçeneği (--scopes ve --tags) etkinleştirdiğinizde aşağıda açıklanmıştır. Küme ayarlarını özelleştirmek amacıyla komut satırı işaretlerini kullanma hakkında bilgi için Google Cloud SDK gcloud dataproc clusters create komutuna bakın.

6. Kümenize bir Spark işi gönderme

gcloud komut satırı aracını kullanarak veya Google Cloud Platform Console'dan Cloud Dataproc API jobs.submit isteği gönderebilirsiniz. Ayrıca, SSH kullanarak kümenizdeki bir makine örneğine bağlanabilir ve örnekten bir iş çalıştırabilirsiniz.

Şimdi Cloud Shell komut satırından gcloud aracını kullanarak bir iş gönderelim:

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

İş çalışırken Cloud Shell pencerenizde çıktı gösterilir.

Control-C tuşlarına basarak çıkışı kes. Bu işlem, gcloud komutunu durdurur ancak iş Dataproc kümesinde çalışmaya devam eder.

7. İşleri Listeleme ve Yeniden Bağlan

İşlerin listesini yazdırma:

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

En son gönderilen iş, listenin en üstündedir. İş kimliğini kopyalayıp "jobId" yerine yapıştırın kullanabilirsiniz. Komut, belirtilen işe yeniden bağlanır ve çıkışını gösterir:

$ gcloud dataproc jobs wait jobId

İş tamamlandığında, çıkışta Pi değerine yaklaşık bir değer gösterilir.

493928df54f61386.png

8. Kümeyi Yeniden Boyutlandır

Daha büyük hesaplamalar yaparken kümenize hız kazandırmak için kümenize daha fazla düğüm ekleyebilirsiniz. Dataproc, kümenize düğüm eklemenize ve kümenizden düğüm kaldırmanıza olanak tanır.

Küme yapılandırmasını inceleyin:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Birkaç öncelikli düğüm ekleyerek kümeyi büyütün:

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

Kümeyi tekrar inceleyin:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Orijinal küme açıklamasındaki workerConfig özelliğine ek olarak, artık öncelikli çalışanlar için iki instanceNames içeren bir secondaryWorkerConfig bulunduğunu unutmayın. Dataproc, yeni düğümler başlatılırken küme durumunu hazır olarak gösterir.

Başta iki düğüm varken şu anda dört düğüm var. Bu nedenle Spark işleriniz yaklaşık iki kat daha hızlı çalışır.

9. Kümeye SSH uygulayın

SSH aracılığıyla ana düğüme bağlanın. Ana düğüme örnek olarak her zaman -m eklenir ve küme adı eklenir:

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

Cloud Shell'de ilk kez ssh komutu çalıştırdığınızda hesabınız için SSH anahtarları oluşturulur. Bir parola seçebilir veya şimdilik boş bir parola kullanabilir ve isterseniz ssh-keygen kullanarak bunu daha sonra değiştirebilirsiniz.

Örnekte ana makine adını kontrol edin:

$ hostname

Kümeyi oluştururken --scopes=cloud-platform belirttiğiniz için kümenizde gcloud komutlarını çalıştırabilirsiniz. Projenizdeki kümeleri listeleyin:

$ gcloud dataproc clusters list

İşiniz bittiğinde ssh bağlantısından çıkış yapın:

$ logout

10. Etiketleri inceleyin

Kümenizi oluştururken kümedeki her düğüme etiket eklemek için bir --tags seçeneği sundunuz. Her düğüme güvenlik duvarı kuralları eklemek için etiketler kullanılır. Bu codelab'de eşleşen herhangi bir güvenlik duvarı kuralı oluşturmadınız ancak yine de bir düğümdeki etiketleri ve ağdaki güvenlik duvarı kurallarını inceleyebilirsiniz.

Ana düğümün açıklamasını yazdır:

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

Çıkışın sonuna yakın bir yerde tags: olup olmadığına bakın ve codelab öğesinin mevcut olup olmadığına bakın.

Güvenlik duvarı kurallarını yazdırın:

$ gcloud compute firewall-rules list

SRC_TAGS ve TARGET_TAGS sütunlarını not edin. Bir güvenlik duvarı kuralına etiket ekleyerek, bu etiketin tüm düğümlerde kullanılması gerektiğini belirtebilirsiniz.

11. Kümenizi kapatma

Bir kümeyi Cloud Dataproc API clusters.delete isteği aracılığıyla, gcloud dataproc clusters delete yürütülebilir dosyasını kullanarak komut satırından veya Google Cloud Platform Console'dan kapatabilirsiniz.

Cloud Shell komut satırını kullanarak kümeyi kapatalım:

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

12. Tebrikler!

Dataproc kümesi oluşturmayı, Spark işi göndermeyi, kümeyi yeniden boyutlandırmayı, ana düğümünüze giriş yapmak için ssh kullanmayı, kümeleri, işleri ve güvenlik duvarı kurallarını incelemek için gcloud'u kullanmayı ve gcloud ile kümenizi kapatmayı öğrendiniz.

Daha Fazla Bilgi

Lisans

Bu çalışma, Creative Commons Attribution 3.0 Genel Lisans ve Apache 2.0 lisansı altında lisanslanmıştır.