Xlera8

Amazon EMR Studio'dan Amazon EMR Serverless'ta etkileşimli iş yükleri çalıştırın | Amazon Web Hizmetleri

6.14 sürümünden başlayarak, Amazon EMR Stüdyosu etkileşimli analitiği destekler Amazon EMR Sunucusuz. Artık EC2 kümelerinde ve Amazon EMR'ye ek olarak EMR Sunucusuz uygulamalarını işlem olarak kullanabilirsiniz. EKS'de Amazon EMR JupyterLab not defterlerini EMR Studio Workspaces'ten çalıştırmak için sanal kümeler.

EMR Studio, veri bilimcilerin ve veri mühendislerinin PySpark, Python ve Scala'da yazılmış analiz uygulamalarını geliştirmesini, görselleştirmesini ve hatalarını ayıklamasını kolaylaştıran entegre bir geliştirme ortamıdır (IDE). EMR Serverless, aşağıdakiler için sunucusuz bir seçenektir: Amazon EMR'si bu, kümeleri veya sunucuları yapılandırmadan, yönetmeden ve ölçeklendirmeden Apache Spark gibi açık kaynaklı büyük veri analitiği çerçevelerini çalıştırmayı kolaylaştırır.

Gönderide aşağıdakilerin nasıl yapılacağını gösteriyoruz:

  • Etkileşimli uygulamalar için EMR Sunucusuz uç nokta oluşturun
  • Uç noktayı mevcut bir EMR Studio ortamına ekleyin
  • Bir not defteri oluşturun ve etkileşimli bir uygulamayı çalıştırın
  • EMR Studio içinden etkileşimli uygulamaları sorunsuz bir şekilde teşhis edin

Önkoşullar

Tipik bir kuruluşta, bir AWS hesap yöneticisi aşağıdaki gibi AWS kaynaklarını kuracaktır: AWS Kimlik ve Erişim yönetimi (IAM) rolleri, Amazon Basit Depolama Hizmeti (Amazon S3) kovaları ve Amazon Sanal Özel Bulut İnternet erişimi ve VPC'deki diğer kaynaklara erişim için (Amazon VPC) kaynakları. EMR Studios'un kurulumunu ve kullanıcıları belirli bir EMR Studio'ya atamayı yöneten EMR Studio yöneticilerini atarlar. Atandıktan sonra EMR Studio geliştiricileri, iş yüklerini geliştirmek ve izlemek için EMR Studio'yu kullanabilir.

S3 klasörünüz, VPC alt ağlarınız ve EMR Studio gibi kaynakları aynı AWS Bölgesinde kurduğunuzdan emin olun.

Bu önkoşulları dağıtmak için aşağıdaki adımları tamamlayın:

  1. Aşağıdakileri başlatın AWS CloudFormation yığını.
    Cloudformation Stack'ı başlatın
  2. İçin değerleri girin Yönetici şifresi ve GeliştiriciŞifresi ve oluşturduğunuz şifreleri not edin.
  3. Klinik Sonraki.
  4. Ayarları varsayılan olarak tutun ve Sonraki tekrar.
  5. seç AWS CloudFormation'ın özel adlarla IAM kaynakları oluşturabileceğini kabul ediyorum.
  6. Gönder'i seçin.

Ayrıca, bu kaynakların manuel olarak dağıtılmasına yönelik talimatları aşağıdaki örnek IAM politikalarıyla birlikte sağladık: GitHub repo.

EMR Studio'yu ve sunucusuz etkileşimli uygulamayı kurun

AWS hesap yöneticisi önkoşulları tamamladıktan sonra EMR Studio yöneticisi AWS Yönetim Konsolu EMR Studio, Workspace ve EMR Serverless uygulaması oluşturmak için.

EMR Stüdyosu ve Çalışma Alanı Oluşturun

EMR Studio yöneticisinin konsolda oturum açması gerekir. emrs-interactive-app-admin-user Kullanıcı kimlik bilgileri. Önkoşul kaynaklarını sağlanan CloudFormation şablonunu kullanarak dağıttıysanız giriş parametresi olarak sağladığınız parolayı kullanın.

  1. Amazon EMR konsolunda şunu seçin: EMR Sunucusuz Gezinti bölmesinde.
  2. Klinik BAŞLAYIN.
  3. seç EMR Studio'yu oluşturun ve başlatın.

Bu, varsayılan adda bir Studio oluşturur studio_1 ve varsayılan ada sahip bir Çalışma Alanı My_First_Workspace. için yeni bir tarayıcı sekmesi açılacaktır. Studio_1 Kullanıcı arayüzü.

EMR Studio'yu Oluşturun ve Başlatın

EMR Sunucusuz uygulama oluşturma

EMR Sunucusuz uygulama oluşturmak için aşağıdaki adımları tamamlayın:

  1. EMR Studio konsolunda, Uygulamalar Gezinti bölmesinde.
  2. Yeni bir Uygulama Yarat.
  3. İçin Name, bir ad girin (örneğin, my-serverless-interactive-application).
  4. İçin Uygulama kurulum seçenekleriseçin Özel ayarları kullan etkileşimli iş yükleri için.
    Özel ayarları kullanarak Sunucusuz Uygulama Oluşturun

Etkileşimli uygulamalar için en iyi uygulama olarak, sürücüyü ve çalışanları önceden başlatılmış halde tutmanızı öneririz. önceden başlatılmış kapasite Uygulama oluşturma sırasında. Bu, bir uygulama için etkili bir şekilde sıcak bir çalışan havuzu oluşturur ve kaynakları tüketilmeye hazır tutarak uygulamanın saniyeler içinde yanıt vermesini sağlar. EMR Sunucusuz uygulamalar oluşturmaya yönelik diğer en iyi uygulamalar için bkz. Amazon EMR Serverless'ı kullanarak büyük veri iş yükleri için ekip başına kaynak sınırlarını tanımlayın.

  1. içinde Etkileşimli uç nokta bölümünde, seçin Etkileşimli uç noktayı etkinleştir.
  2. içinde Ağ bağlantıları bölümünde, daha önce oluşturduğunuz VPC'yi, özel alt ağları ve güvenlik grubunu seçin.

Bu gönderide sağlanan CloudFormation yığınını dağıttıysanız emr-serverless-sg­  güvenlik grubu olarak

Harici Python paketlerini indirmek amacıyla iş yükünün EMR Serverless uygulaması içinden internete erişebilmesi için bir VPC gereklidir. VPC ayrıca aşağıdaki gibi kaynaklara erişmenizi sağlar: Amazon İlişkisel Veritabanı Hizmeti (Amazon RDS) ve Amazon Kırmızıya Kaydırma Bu uygulamanın VPC'sinde bulunanlar. Sunucusuz bir uygulamanın bir VPC'ye eklenmesi alt ağda IP tükenmesine yol açabilir; bu nedenle alt ağınızda yeterli IP adresi olduğundan emin olun.

  1. Klinik Uygulamayı oluştur ve başlat.

Etkileşimli Uç Noktaları Etkinleştirin, Özel alt ağları ve güvenlik grubunu seçin

Uygulamalar sayfasında sunucusuz uygulamanızın durumunun şu şekilde değiştiğini doğrulayabilirsiniz: başladı.

  1. Uygulamanızı seçin ve seçin Nasıl çalışır.
  2. Klinik Çalışma alanlarını görüntüleyin ve başlatın.
  3. Klinik Stüdyoyu yapılandır.

  1. İçin hizmet rolü¸ ön koşul olarak oluşturduğunuz EMR Studio hizmet rolünü sağlayın (emr-studio-service-role).
  2. İçin Çalışma alanı depolaması, ön koşul olarak oluşturduğunuz S3 paketinin yolunu girin (emrserverless-interactive-blog-<account-id>-<region-name>).
  3. Klinik Değişiklikleri Kaydet.

emr-studio-service-role ve emrserverless-interactive-blog s3 paketini seçin

14. öğesini seçerek Studios konsoluna gidin. stüdyolar sol gezinme menüsünde EMR Stüdyosu bölüm. not edin Stüdyo erişim URL'si Studios konsolundan ve geliştiricilerinize Spark uygulamalarını çalıştırmaları için sağlayın.

İlk Spark uygulamanızı çalıştırın

EMR Studio yöneticisi Studio, Workspace ve sunucusuz uygulamayı oluşturduktan sonra Studio kullanıcısı, Spark iş yüklerini geliştirmek ve izlemek için Workspace'i ve uygulamayı kullanabilir.

Çalışma Alanını başlatın ve sunucusuz uygulamayı ekleyin

Aşağıdaki adımları tamamlayın:

  1. EMR Studio yöneticisi tarafından sağlanan Studio URL'sini kullanarak oturum açın. emrs-interactive-app-dev-user AWS hesap yöneticisi tarafından paylaşılan kullanıcı kimlik bilgileri.

Önkoşul kaynaklarını sağlanan CloudFormation şablonunu kullanarak dağıttıysanız giriş parametresi olarak sağladığınız parolayı kullanın.

Üzerinde Çalışma Alanları sayfasında Çalışma Alanınızın durumunu kontrol edebilirsiniz. Çalışma Alanı başlatıldığında durumun şu şekilde değiştiğini göreceksiniz: Hazır.

  1. Çalışma alanı adını seçerek çalışma alanını başlatın (My_First_Workspace).

Bu yeni bir sekme açacaktır. Tarayıcınızın açılır pencerelere izin verdiğinden emin olun.

  1. Çalışma Alanında şunu seçin: hesaplamak (küme simgesi) gezinti bölmesinde.
  2. İçin EMR Sunucusuz uygulama, uygulamanızı seçin (my-serverless-interactive-application).
  3. İçin Etkileşimli çalışma zamanı rolü, etkileşimli bir çalışma zamanı rolü seçin (bu gönderi için şunu kullanıyoruz: emr-serverless-runtime-role).
  4. Klinik iliştirmek sunucusuz uygulamayı bu Çalışma Alanındaki tüm not defterleri için işlem türü olarak eklemek için.

Uygulamanız olarak sunucusuz-etkileşimli uygulamamı ve emr-sunucusuz-çalışma zamanı rolünü seçin ve ekleyin

Spark uygulamanızı etkileşimli olarak çalıştırın

Aşağıdaki adımları tamamlayın:

  1. Seçin Defter örnekleri (üç nokta simgesi) gezinti bölmesinde açın ve Getting-started-with-emr-serverless not defteri.
  2. Klinik Workspace'e kaydet.

Dizüstü bilgisayarımız için üç çekirdek seçeneği vardır: Python 3, PySpark ve Spark (Scala için).

  1. İstendiğinde PyKıvılcım çekirdek olarak.
  2. Klinik seç.

Çekirdek olarak PySpark'ı seçin

Artık Spark uygulamanızı çalıştırabilirsiniz. Bunu yapmak için şunu kullanın: %%configure Kıvılcım büyüsü oturum oluşturma parametrelerini yapılandıran komut. Etkileşimli uygulamalar Python sanal ortamlarını destekler. Yürütücü ortamı için farklı bir Python çalışma zamanı için bir yol belirterek, çalışan düğümlerde özel bir ortam kullanırız. spark.executorEnv.PYSPARK_PYTHON. Aşağıdaki koda bakın:

%%configure -f
{
  "conf": {
    "spark.pyspark.virtualenv.enabled": "true",
    "spark.pyspark.virtualenv.bin.path": "/usr/bin/virtualenv",
    "spark.pyspark.virtualenv.type": "native",
    "spark.pyspark.python": "/usr/bin/python3",
    "spark.executorEnv.PYSPARK_PYTHON": "/usr/bin/python3"
  }
}

Harici paketleri yükleyin

Artık çalışanlar için bağımsız bir sanal ortama sahip olduğunuza göre, EMR Studio dizüstü bilgisayarlar Spark'ı kullanarak sunucusuz uygulama içinden harici paketler yüklemenize olanak tanır install_pypi_package Spark bağlamı aracılığıyla çalışır. Bu işlevin kullanılması, paketin tüm EMR Sunucusuz çalışanlarının kullanımına sunulmasını sağlar.

Öncelikle PyPi'den bir Python paketi olan matplotlib'i yükleyin:

sc.install_pypi_package("matplotlib")

Önceki adım yanıt vermezse VPC kurulumunuzu kontrol edin ve internet erişimi için doğru şekilde yapılandırıldığından emin olun.

Artık bir veri kümesi kullanabilir ve verilerinizi görselleştirebilirsiniz.

Görselleştirmeler oluşturun

Görselleştirmeler oluşturmak için New York sarı taksilerine ilişkin halka açık bir veri kümesi kullanıyoruz:

file_name = "s3://athena-examples-us-east-1/notebooks/yellow_tripdata_2016-01.parquet"
taxi_df = (spark.read.format("parquet").option("header", "true") 
.option("inferSchema", "true").load(file_name))

Önceki kod bloğunda Parquet dosyasını Amazon S3'teki genel bir paketten okudunuz. Dosyanın başlıkları var ve Spark'ın şemayı çıkarmasını istiyoruz. Daha sonra belirli sütunları gruplamak ve saymak için bir Spark veri çerçevesi kullanırsınız. taxi_df:

taxi1_df = taxi_df.groupBy("VendorID", "passenger_count").count()
taxi1_df.show()

kullanım %%display sonucu tablo formatında görüntülemek için sihir:

%%display
taxi1_df

Tablo satıcı_id, yolcu_sayısı ve sayım sütunlarını gösterir

Ayrıca beş tür grafikle verilerinizi hızlı bir şekilde görselleştirebilirsiniz. Görüntüleme türünü seçebilirsiniz; grafik buna göre değişecektir. Aşağıdaki ekran görüntüsünde verilerimizi görselleştirmek için bir çubuk grafik kullanıyoruz.

her bir satıcı_id'sine karşı yolcu_sayımını gösteren çubuk grafik

Spark SQL'i kullanarak EMR Sunucusuz ile etkileşim kurun

Tablolarla etkileşimde bulunabilirsiniz. AWS Tutkal Veri Kataloğu EMR Sunucusuz'da Spark SQL kullanma. Örnek not defterinde Spark veri çerçevesi kullanarak verileri nasıl dönüştürebileceğinizi gösteriyoruz.

Öncelikle taksiler adı verilen yeni bir geçici görünüm oluşturun. Bu, bu görünümden veri seçmek için Spark SQL'i kullanmanıza olanak tanır. Ardından daha ileri işlemler için bir taksi veri çerçevesi oluşturun:

taxi_df.createOrReplaceTempView("taxis")
sqlDF = spark.sql(
    "SELECT DOLocationID, sum(total_amount) as sum_total_amount 
     FROM taxis where DOLocationID < 25 Group by DOLocationID ORDER BY DOLocationID"
)
sqlDF.show(5)

Tablo satıcı_id, yolcu_sayısı ve sayım sütunlarını gösterir

EMR Studio not defterinizdeki her hücreyi genişletebilirsiniz. İş İlerlemesini Kıvılcım Bu belirli hücreyi çalıştırırken EMR Serverless'a gönderilen işin çeşitli aşamalarını görüntülemek için. Her aşamayı tamamlamak için geçen süreyi görebilirsiniz. Aşağıdaki örnekte işin 14. aşamasında 12 tamamlanmış görev bulunmaktadır. Ayrıca herhangi bir arıza durumunda günlükleri görebilir ve sorun gidermeyi kusursuz bir deneyim haline getirebilirsiniz. Bunu bir sonraki bölümde daha detaylı tartışacağız.

İş[14]: NativeMethodAccessorImpl.java:0'da showString ve NativeMethodAccessorImpl.java:15'da İş[0]: showString

İşlenen veri çerçevesini matplotlib paketini kullanarak görselleştirmek için aşağıdaki kodu kullanın. Bırakma konumunu ve toplam tutarı bir çubuk grafik olarak çizmek için Maptplotlib kitaplığını kullanırsınız.

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.clf()
df = sqlDF.toPandas()
plt.bar(df.DOLocationID, df.sum_total_amount)
%matplot plt

Etkileşimli uygulamaları teşhis edin

Livy uç noktanız için oturum bilgilerini aşağıdakileri kullanarak alabilirsiniz: %%info Kıvılcım büyüsü. Bu size Spark kullanıcı arayüzüne ve sürücü günlüğüne doğrudan dizüstü bilgisayarınızdan erişmeniz için bağlantılar sağlar.

Aşağıdaki ekran görüntüsü, not defterimizdeki bağlantı aracılığıyla açtığımız uygulamamız için bir sürücü günlüğü pasajıdır.

sürücü günlüğü ekran görüntüsü

Benzer şekilde aşağıdaki bağlantıyı da seçebilirsiniz. Kıvılcım Kullanıcı Arayüzü Kullanıcı arayüzünü açmak için. Aşağıdaki ekran görüntüsü şunları göstermektedir: Yürütücüler Sürücü ve yürütücü günlüklerine erişim sağlayan sekme.

Aşağıdaki ekran görüntüsü, daha önce gördüğümüz Spark SQL adımına karşılık gelen ve 14 göreve bölünmüş toplam taksi koleksiyonlarının konum bazında toplamını hesapladığımız 12. aşamayı göstermektedir. Spark kullanıcı arayüzü aracılığıyla etkileşimli uygulama, ayrıntılı görev düzeyi durumu, G/Ç ve karıştırma ayrıntılarının yanı sıra bu aşamadaki her görev için ilgili günlüklere doğrudan dizüstü bilgisayarınızdan bağlantılar sağlayarak kusursuz bir sorun giderme deneyimi sağlar.

Temizlemek

Bu gönderide oluşturulan kaynakları artık saklamak istemiyorsanız aşağıdaki temizleme adımlarını tamamlayın:

  1. EMR Sunucusuz uygulamasını silin.
  2. EMR Studio'yu ve ilişkili çalışma alanlarını ve not defterlerini silin.
  3. Kaynakların geri kalanını silmek için CloudFormation konsoluna gidin, yığını seçin ve Sil.

Silme politikasının korunacak şekilde ayarlandığı S3 klasörü dışındaki tüm kaynaklar silinecek.

Sonuç

Gönderi, işlem olarak EMR Sunucusuz kullanılarak EMR Studio'da etkileşimli PySpark iş yüklerinin nasıl çalıştırılacağını gösterdi. Spark uygulamalarını etkileşimli bir JupyterLab Çalışma Alanında da oluşturabilir ve izleyebilirsiniz.

Gelecek bir gönderide, EMR Sunucusuz Etkileşimli uygulamaların aşağıdaki gibi ek özelliklerini tartışacağız:

  • VPC'nizde Amazon RDS ve Amazon Redshift gibi kaynaklarla çalışma (örneğin, JDBC/ODBC bağlantısı için)
  • Sunucusuz uç noktaları kullanarak işlemsel iş yüklerini çalıştırma

EMR Studio'yu ilk kez keşfediyorsanız, şuraya göz atmanızı öneririz: Amazon EMR atölyeleri ve atıfta bulunarak Bir EMR Stüdyosu Oluşturun.


Yazarlar Hakkında

Sekar Srinivasan AWS'de Veri Analitiği ve Yapay Zeka'ya odaklanan Baş Uzman Çözüm Mimarıdır. Sekar'ın verilerle çalışma konusunda 20 yılı aşkın deneyimi var. Müşterilerin mimarilerini modernleştiren ve verilerinden öngörüler üreten ölçeklenebilir çözümler oluşturmalarına yardımcı olma konusunda tutkulu. Boş zamanlarında, yoksul çocukların eğitimine odaklanan, kar amacı gütmeyen projeler üzerinde çalışmayı seviyor.

Disha Umarwani Küresel Sağlık Hizmetleri ve Yaşam Bilimleri kapsamında Amazon Profesyonel Hizmetlerinde Kıdemli Veri Mimarıdır. Veri Stratejisini geniş ölçekte tasarlamak, tasarlamak ve uygulamak için müşterilerle çalıştı. Kurumsal platformlar için Veri Mesh mimarileri tasarlama konusunda uzmanlaşmıştır.

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?