Zephyrnet Logosu

AWS Lake Formation ile entegre Amazon EMR aracılığıyla Açık Tablo Formatlarında ayrıntılı erişim kontrolünü güçlendirin | Amazon Web Hizmetleri

Tarih:

İle Amazon EMR'si 6.15, başlattık AWS Göl Oluşumu Apache Hudi, Apache Iceberg ve Delta lake dahil olmak üzere Açık Tablo Formatlarında (OTF'ler) dayalı ayrıntılı erişim kontrolleri (FGAC). Bu, güvenliği ve yönetimi basitleştirmenize olanak tanır. işlemsel veri gölleri Apache Spark işlerinizde tablo, sütun ve satır düzeyindeki izinlerde erişim kontrolleri sağlayarak. Birçok büyük kurumsal şirket, içgörü kazanmak ve karar alma sürecini geliştirmek için işlemsel veri gölünü kullanmayı amaçlıyor. FGAC için Lake Formation ile entegre Amazon EMR'yi kullanarak bir göl evi mimarisi oluşturabilirsiniz. Bu hizmet kombinasyonu, güvenli ve kontrollü erişim sağlarken işlemsel veri gölünüzde veri analizi yapmanıza olanak tanır.

Amazon EMR kayıt sunucusu bileşeni tablo, sütun, satır, hücre ve iç içe öznitelik düzeyinde veri filtreleme işlevini destekler. Desteği, hem okuma (zaman yolculuğu ve artımlı sorgu dahil) hem de yazma işlemleri (INSERT gibi DML ifadelerinde) için Hive, Apache Hudi, Apache Iceberg ve Delta lake formatlarını kapsayacak şekilde genişletir. Ayrıca Amazon EMR, sürüm 6.15 ile küme içi Spark History Server, Yarn Timeline Server ve Yarn Resource Manager kullanıcı arayüzü gibi uygulama web arayüzleri için erişim kontrolü korumasını sunuyor.

Bu yazıda, FGAC'ın nasıl uygulanacağını gösteriyoruz Apaçi Hudi Lake Formation ile entegre Amazon EMR kullanan tablolar.

İşlem verileri gölü kullanım örneği

Amazon EMR müşterileri, bir veri gölünde ACID işlemlerini ve zaman yolculuğu ihtiyaçlarını desteklemek için sıklıkla Açık Tablo Formatlarını kullanır. Veri gölünde zaman yolculuğu, geçmiş versiyonları koruyarak denetim ve uyumluluk, veri kurtarma ve geri alma, tekrarlanabilir analiz ve zamanın farklı noktalarında veri araştırması gibi faydalar sağlar.

Bir diğer popüler işlem veri gölü kullanım örneği, artımlı sorgudur. Artımlı sorgu, son sorgudan bu yana bir veri gölü içindeki yalnızca yeni veya güncellenmiş verilerin işlenmesine ve analiz edilmesine odaklanan bir sorgu stratejisini ifade eder. Artımlı sorguların arkasındaki temel fikir, son sorgudan bu yana yeni veya değiştirilmiş verileri tanımlamak için meta verileri veya değişiklik izleme mekanizmalarını kullanmaktır. Sorgu motoru, bu değişiklikleri tanımlayarak sorguyu yalnızca ilgili verileri işleyecek şekilde optimize edebilir ve işlem süresini ve kaynak gereksinimlerini önemli ölçüde azaltabilir.

Çözüme genel bakış

Bu yazıda, Amazon EMR kullanarak Apache Hudi tablolarında FGAC'nin nasıl uygulanacağını gösteriyoruz. Amazon Elastik Bilgi İşlem Bulutu (Amazon EC2) Göl Formasyonu ile entegre edilmiştir. Apache Hudi, artımlı veri işlemeyi ve veri işlem hatlarının geliştirilmesini büyük ölçüde basitleştiren açık kaynaklı bir işlemsel veri gölü çerçevesidir. Bu yeni FGAC özelliği tüm OTF'leri destekler. Burada Hudi ile göstermenin yanı sıra diğer bloglarla da diğer OTF tablolarını takip edeceğiz. Kullanırız dizüstü bilgisayarlar in Amazon SageMaker Stüdyosu Hudi verilerini bir EMR kümesi aracılığıyla farklı kullanıcı erişim izinleri aracılığıyla okumak ve yazmak. Bu, gerçek dünyadaki veri erişim senaryolarını yansıtır; örneğin, bir mühendislik kullanıcısının bir veri platformunda sorun gidermek için tam veri erişimine ihtiyacı varsa, veri analistlerinin ise bu verilerin yalnızca kişisel olarak tanımlanabilir bilgiler içermeyen bir alt kümesine erişmesi gerekebilir (PII). ). Göl Oluşumu ile bütünleşme Amazon EMR çalışma zamanı rolü ayrıca veri güvenliği duruşunuzu geliştirmenize olanak tanır ve Amazon EMR iş yükleri için veri kontrolü yönetimini basitleştirir. Bu çözüm, bir kuruluştaki farklı kullanıcıların ve rollerin farklı ihtiyaçlarını ve güvenlik gereksinimlerini karşılayarak veri erişimi için güvenli ve kontrollü bir ortam sağlar.

Aşağıdaki şemada çözüm mimarisi gösterilmektedir.

Çözüm mimarisi

Bir Hudi veri kümesini yeni bir sürüme yükseltmek (güncellemek ve eklemek) için bir veri alma süreci yürütüyoruz. Amazon Basit Depolama Hizmeti (Amazon S3) paketini oluşturun ve tablo şemasını sürdürün veya güncelleyin. AWS Tutkal Veri Kataloğu. Sıfır veri hareketi ile Lake Formation tarafından yönetilen Hudi tablosunu aşağıdaki gibi çeşitli AWS servisleri aracılığıyla sorgulayabiliriz. Amazon Atina, Amazon EMR ve Amazon Adaçayı Yapıcı.

Kullanıcılar herhangi bir EMR kümesi uç noktası (EMR Steps, Livy, EMR Studio ve SageMaker) aracılığıyla bir Spark işi gönderdiğinde Lake Formation onların ayrıcalıklarını doğrular ve EMR kümesine PII verileri gibi hassas verileri filtrelemesi talimatını verir.

Bu çözüm, Hudi verilerine erişim için farklı düzeylerde izinlere sahip üç farklı kullanıcı tipine sahiptir:

  • hudi-db-yaratıcı-rolü – Bu, veritabanı nesnelerini oluşturma, değiştirme ve silme gibi DDL işlemlerini yürütme ayrıcalıklarına sahip olan veri gölü yöneticisi tarafından kullanılır. Satır düzeyinde ve sütun düzeyinde veri erişim kontrolü için Lake Formation'da veri filtreleme kuralları tanımlayabilirler. Bu FGAC kuralları, veri gölünün güvenliğinin sağlanmasını ve gerekli veri gizliliği düzenlemelerinin yerine getirilmesini sağlar.
  • hudi-tablo-pii-rolü – Bu, mühendislik kullanıcıları tarafından kullanılır. Mühendislik kullanıcıları, hem Yazırken Kopyala (CoW) hem de Okurken Birleştir (MoR) üzerinde zaman yolculuğu ve artımlı sorgular gerçekleştirebilir. Ayrıca herhangi bir zaman damgasına dayalı olarak PII verilerine erişme ayrıcalığına da sahiptirler.
  • hudi-tablo-pii-olmayan-rolü – Bu veri analistleri tarafından kullanılır. Veri analistlerinin veri erişim hakları, veri gölü yöneticileri tarafından kontrol edilen FGAC tarafından yetkilendirilen kurallara tabidir. İsimler ve adresler gibi PII verilerini içeren sütunlarda görünürlükleri yoktur. Ayrıca belirli koşulları karşılamayan veri satırlarına da erişemezler. Örneğin kullanıcılar yalnızca kendi ülkelerine ait veri satırlarına erişebilirler.

Önkoşullar

Bu yazıda kullanılan üç not defterini şuradan indirebilirsiniz: GitHub repo.

Çözümü dağıtmadan önce aşağıdakilere sahip olduğunuzdan emin olun:

İzinlerinizi ayarlamak için aşağıdaki adımları tamamlayın:

  1. Yönetici IAM kullanıcınızla AWS hesabınızda oturum açın.

İçinde olduğunuzdan emin olun.us-east-1Bölge.

  1. İçinde bir S3 klasörü oluşturun us-east-1 Bölge (örneğin,emr-fgac-hudi-us-east-1-<ACCOUNT ID>).

Daha sonra Göl Oluşumunu şu şekilde etkinleştiriyoruz: varsayılan izin modelini değiştirme.

  1. Lake Formation konsolunda yönetici kullanıcı olarak oturum açın.
  2. Klinik Veri Kataloğu ayarları altında Yönetim Gezinti bölmesinde.
  3. Altında Yeni oluşturulan veritabanları ve tablolar için varsayılan izinler, seçimi kaldır Yeni veritabanları için yalnızca IAM erişim kontrolünü kullanın ve Yeni veritabanlarındaki yeni tablolar için yalnızca IAM erişim kontrolünü kullanın.
  4. Klinik İndirim.

Veri Kataloğu ayarları

Alternatif olarak, Lake Formation'ı varsayılan seçenekle başlattıysanız oluşturulan kaynaklardaki (veritabanları ve tablolar) IAMAllowedPrincipals'ı iptal etmeniz gerekir.

Son olarak Amazon EMR için bir anahtar çifti oluşturuyoruz.

  1. Amazon EC2 konsolunda şunu seçin: Anahtar çiftleri Gezinti bölmesinde.
  2. Klinik Anahtar çifti oluştur.
  3. İçin Name, bir ad girin (örneğinemr-fgac-hudi-keypair).
  4. Klinik Anahtar çifti oluştur.

Anahtar çifti oluştur

Oluşturulan anahtar çifti (bu yazı için, emr-fgac-hudi-keypair.pem) yerel bilgisayarınıza kaydedecektir.

Ardından, bir AWS Bulut9 etkileşimli geliştirme ortamı (IDE).

  1. AWS Cloud9 konsolunda seçin <span style="font-size:14px;">ortamları</span> Gezinti bölmesinde.
  2. Klinik Ortam oluştur.
  3. İçin Name¸ bir isim girin (örneğin,emr-fgac-hudi-env).
  4. Diğer ayarları varsayılan olarak bırakın.

Cloud9 ortamı

  1. Klinik oluşturmak.
  2. IDE hazır olduğunda, Açılış açmak için.

cloud9 ortamı

  1. AWS Cloud9 IDE'de, fileto menü seç Yerel Dosyaları Yükle.

Yerel dosya yükle

  1. Anahtar çifti dosyasını yükleyin (emr-fgac-hudi-keypair.pem).
  2. Artı işaretini seçin ve seçin Yeni Terminal.

yeni terminal

  1. Terminalde aşağıdaki komut satırlarını girin:
#Create encryption certificates for EMR in transit encryption
openssl req -x509 
-newkey rsa:1024 
-keyout privateKey.pem 
-out certificateChain.pem 
-days 365 
-nodes 
-subj '/C=US/ST=Washington/L=Seattle/O=MyOrg/OU=MyDept/CN=*.compute.internal'
cp certificateChain.pem trustedCertificates.pem

# Zip certificates
zip -r -X my-certs.zip certificateChain.pem privateKey.pem trustedCertificates.pem

# Upload the certificates zip file to S3 bucket
# Replace <ACCOUNT ID> with your AWS account ID
aws s3 cp ./my-certs.zip s3://emr-fgac-hudi-us-east-1-<ACCOUNT ID>/my-certs.zip

Örnek kodun yalnızca gösterim amaçlı bir kavram kanıtı olduğunu unutmayın. Üretim sistemlerinde sertifika vermek için güvenilir bir sertifika yetkilisi (CA) kullanın. Bakınız Aktarım halindeki verilerin Amazon EMR şifrelemesiyle şifrelenmesi için sertifikaların sağlanması Ayrıntılar için.

Çözümü AWS CloudFormation aracılığıyla dağıtın

Biz bir AWS CloudFormation Aşağıdaki hizmetleri ve bileşenleri otomatik olarak ayarlayan şablon:

  • Veri gölü için bir S3 paketi. Örnek TPC-DS veri kümesini içerir.
  • Güvenlik yapılandırmasına ve genel DNS'nin etkin olduğu bir EMR kümesi.
  • Lake Formation ayrıntılı izinlerine sahip EMR çalışma zamanı IAM rolleri:
    • -hudi-db-yaratıcı-rolü – Bu rol Apache Hudi veritabanı ve tabloları oluşturmak için kullanılır.
    • -hudi-tablo-pii-rolü – Bu rol, PII içeren sütunlar da dahil olmak üzere Hudi tablolarının tüm sütunlarının sorgulanmasına izin verir.
    • -hudi-tablo-pii-olmayan-rolü – Bu rol, PII sütunlarını Lake Formation'a göre filtreleyen Hudi tablolarını sorgulama izni sağlar.
  • Kullanıcıların karşılık gelen EMR çalışma zamanı rollerini üstlenmelerine olanak tanıyan SageMaker Studio yürütme rolleri.
  • VPC, alt ağlar ve güvenlik grupları gibi ağ kaynakları.

Kaynakları dağıtmak için aşağıdaki adımları tamamlayın:

  1. Klinik Hızlı yığın oluşturma CloudFormation yığınını başlatmak için.
  2. İçin Yığın adı, bir yığın adı girin (örneğin,rsv2-emr-hudi-blog).
  3. İçin Ec2KeyPair, anahtar çiftinizin adını girin.
  4. İçin Boşta Kalma Zaman Aşımı, kullanılmadığında kümeye ödeme yapılmasını önlemek amacıyla EMR kümesi için bir boşta kalma zaman aşımı değeri girin.
  5. İçin InitS3BucketAmazon EMR şifreleme sertifikası .zip dosyasını kaydetmek için oluşturduğunuz S3 klasör adını girin.
  6. İçin S3CertsZipAmazon EMR şifreleme sertifikası .zip dosyasının S3 URI'sini girin.

CloudFormation şablonu

  1. seç AWS CloudFormation'ın özel adlarla IAM kaynakları oluşturabileceğini kabul ediyorum.
  2. Klinik Yığın oluştur.

CloudFormation yığın dağıtımı yaklaşık 10 dakika sürer.

Amazon EMR entegrasyonu için Lake Formation'ı kurun

Göl Formasyonunu ayarlamak için aşağıdaki adımları tamamlayın:

  1. Göl Oluşumu konsolunda seçin Uygulama entegrasyon ayarları altında Yönetim Gezinti bölmesinde.
  2. seç Harici motorların Lake Formation'a kayıtlı Amazon S3 konumlarındaki verileri filtrelemesine izin ver.
  3. Klinik Amazon EMR'si için Oturum etiketi değerleri.
  4. AWS hesap kimliğinizi girin AWS hesap kimlikleri.
  5. Klinik İndirim.

LF - Uygulama entegrasyon ayarları

  1. Klinik veritabanları altında Veri Kataloğu Gezinti bölmesinde.
  2. Klinik Veritabanı oluştur.
  3. İçin Name, varsayılanı girin.
  4. Klinik Veritabanı oluştur.

LF - veritabanı oluştur

  1. Klinik Veri gölü izinleri altında İzinler Gezinti bölmesinde.
  2. Klinik Hibe.
  3. seç IAM kullanıcıları ve rolleri.
  4. IAM rollerinizi seçin.
  5. İçin veritabanları, varsayılanı seçin.
  6. İçin Veritabanı izinleriseçin Tanımlamak.
  7. Klinik Hibe.

LF - Veri izinleri verin

Hudi JAR dosyasını Amazon EMR HDFS'ye kopyalayın

için Hudi'yi Jupyter not defterleriyle kullanınHudi'yi kullanacak bir Spark oturumu yapılandırabilmeniz için, Amazon EMR yerel dizininden HDFS depolama alanına bir Hudi JAR dosyasının kopyalanmasını içeren EMR kümesi için aşağıdaki adımları tamamlamanız gerekir:

  1. Gelen SSH trafiğini yetkilendirin (bağlantı noktası 22).
  2. Değerini kopyalayın Birincil düğüm genel DNS'si (örneğin, EMR kümesinden ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com) Özet Bölüm.

EMR kümesi özeti

  1. EC9 anahtar çiftini oluşturmak için kullandığınız önceki AWS Cloud2 terminaline geri dönün.
  2. EMR birincil düğümünde SSH'ye aşağıdaki komutu çalıştırın. Yer tutucuyu EMR DNS ana bilgisayar adınızla değiştirin:
chmod 400 emr-fgac-hudi-keypair.pem
ssh -i emr-fgac-hudi-keypair.pem hadoop@ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com

  1. Hudi JAR dosyasını HDFS'ye kopyalamak için aşağıdaki komutu çalıştırın:
hdfs dfs -mkdir -p /apps/hudi/lib
hdfs dfs -copyFromLocal /usr/lib/hudi/hudi-spark-bundle.jar /apps/hudi/lib/hudi-spark-bundle.jar

Lake Formation'da Hudi veritabanını ve tablolarını oluşturun

Artık EMR çalışma zamanı rolü tarafından etkinleştirilen FGAC ile Hudi veritabanını ve tablolarını oluşturmaya hazırız. EMR çalışma zamanı rolü bir EMR kümesine bir iş veya sorgu gönderdiğinizde belirtebileceğiniz bir IAM rolüdür.

Veritabanı oluşturucusuna izin ver

Öncelikle Lake Formation veritabanı oluşturucusuna şunu yapma iznini verelim:<STACK-NAME>-hudi-db-creator-role:

  1. AWS hesabınızda yönetici olarak oturum açın.
  2. Göl Oluşumu konsolunda seçin İdari roller ve görevler altında Yönetim Gezinti bölmesinde.
  3. AWS oturum açma kullanıcınızın veri gölü yöneticisi olarak eklendiğini doğrulayın.
  4. içinde Veritabanı yaratıcısı bölümü, seçim Hibe.
  5. İçin IAM kullanıcıları ve rolleri, seçmek<STACK-NAME>-hudi-db-creator-role.
  6. İçin Katalog izinleriseçin Veritabanı oluştur.
  7. Klinik Hibe.

Veri gölü konumunu kaydetme

Ardından S3 veri gölü konumunu Lake Formation'a kaydedelim:

  1. Göl Oluşumu konsolunda seçin Veri gölü konumları altında Yönetim Gezinti bölmesinde.
  2. Klinik Konumu kaydet.
  3. İçin Amazon S3 yolu, Seçmek Araştır ve data lake S3 paketini seçin. (<STACK_NAME>s3bucket-XXXXXXX) CloudFormation yığınından oluşturuldu.
  4. İçin IAM rolü, seçmek<STACK-NAME>-hudi-db-creator-role.
  5. İçin izin moduseçin Göl Oluşumu.
  6. Klinik Konumu kaydet.

LF - Konumu kaydet

Veri konumu izni ver

Daha sonra, hibe etmemiz gerekiyor<STACK-NAME>-hudi-db-creator-roleveri konumu izni:

  1. Göl Oluşumu konsolunda seçin Veri konumları altında İzinler Gezinti bölmesinde.
  2. Klinik Hibe.
  3. İçin IAM kullanıcıları ve rolleri, seçmek<STACK-NAME>-hudi-db-creator-role.
  4. İçin Depolama yerleri, S3 paketini girin (<STACK_NAME>-s3bucket-XXXXXXX).
  5. Klinik Hibe.

LF - İzinleri ver

EMR kümesine bağlanın

Şimdi, veritabanı oluşturucu EMR çalışma zamanı rolüyle EMR kümesine bağlanmak için SageMaker Studio'da bir Jupyter not defteri kullanalım:

  1. SageMaker konsolunda, Alanlar Gezinti bölmesinde.
  2. etki alanını seçin<STACK-NAME>-Studio-EMR-LF-Hudi.
  3. Üzerinde Başlatmak kullanıcı profilinin yanındaki menü<STACK-NAME>-hudi-db-creator, seçmek Stüdyo.

SM - Alan adı ayrıntıları

  1. Not defterini indirin rsv2-hudi-db-yaratıcı-dizüstü bilgisayar.
  2. Yükleme simgesini seçin.

SM Studio - Yükle

  1. İndirilen Jupyter not defterini seçin ve Açılış.
  2. Yüklenen not defterini açın.
  3. İçin Resim, seçmek Kıvılcım Büyüsü.
  4. İçin çekirdek, seçmek PyKıvılcım.
  5. Diğer yapılandırmaları varsayılan olarak bırakın ve seç.

SM Studio - Ortamı değiştir

  1. Klinik Küme EMR kümesine bağlanmak için.

SM Studio - EMR kümesini bağlayın

  1. EC2 kümesindeki EMR'yi seçin (<STACK-NAME>-EMR-Cluster) CloudFormation yığınıyla oluşturuldu.
  2. Klinik Sosyal medya.
  3. İçin EMR yürütme rolü, seçmek<STACK-NAME>-hudi-db-creator-role.
  4. Klinik Sosyal medya.

Veritabanı ve tablolar oluşturun

Artık Hudi veritabanını ve tablolarını oluşturmak için not defterindeki adımları takip edebilirsiniz. Başlıca adımlar aşağıdaki gibidir:

  1. Dizüstü bilgisayarı başlattığınızda yapılandırın“spark.sql.catalog.spark_catalog.lf.managed":"true"Spark_catalog'un Lake Formation tarafından korunduğunu Spark'a bildirmek için.
  2. Aşağıdaki Spark SQL'i kullanarak Hudi tabloları oluşturun.
%%sql 
CREATE TABLE IF NOT EXISTS ${hudi_catalog}.${hudi_db}.${cow_table_name_sql}(
    c_customer_id string,
    c_birth_country string,
    c_customer_sk integer,
    c_email_address string,
    c_first_name string,
    c_last_name string,
    ts bigint
) USING hudi
LOCATION '${cow_table_location_sql}'
OPTIONS (
  type = 'cow',
  primaryKey = '${hudi_primary_key}',
  preCombineField = '${hudi_pre_combined_field}'
 ) 
PARTITIONED BY (${hudi_partitioin_field});

  1. Kaynak tablodaki verileri Hudi tablolarına ekleyin.
%%sql
INSERT OVERWRITE ${hudi_catalog}.${hudi_db}.${cow_table_name_sql}
SELECT 
    c_customer_id ,  
    c_customer_sk,
    c_email_address,
    c_first_name,
    c_last_name,
    unix_timestamp(current_timestamp()) AS ts,
    c_birth_country
FROM ${src_df_view}
WHERE c_birth_country = 'HONG KONG' OR c_birth_country = 'CHINA' 
LIMIT 1000

  1. Hudi tablolarına tekrar veri ekleyin.
%%sql
INSERT INTO ${hudi_catalog}.${hudi_db}.${cow_table_name_sql}
SELECT 
    c_customer_id ,  
    c_customer_sk,
    c_email_address,
    c_first_name,
    c_last_name,
    unix_timestamp(current_timestamp()) AS ts,
    c_birth_country
FROM ${insert_into_view}

FGAC ile Göl Oluşumu aracılığıyla Hudi tablolarını sorgulama

Hudi veritabanını ve tablolarını oluşturduktan sonra Lake Formation ile ayrıntılı erişim kontrolünü kullanarak tabloları sorgulamaya hazırsınız. İki tür Hudi tablosu oluşturduk: Yazıldığında Kopyala (COW) ve Okuduğunda Birleştir (MOR). COW tablosu, verileri sütunlu bir biçimde (Parke) saklar ve her güncelleme, yazma sırasında dosyaların yeni bir sürümünü oluşturur. Bu, her güncellemede Hudi'nin tüm dosyayı yeniden yazdığı anlamına gelir; bu da daha fazla kaynak tüketebilir ancak daha hızlı okuma performansı sağlar. Öte yandan MOR, COW'un özellikle yazma veya değişiklik ağırlıklı iş yükleri için ideal olmayabileceği durumlar için tanıtıldı. Bir MOR tablosunda, her güncelleme olduğunda Hudi yalnızca değiştirilen kaydın satırını yazar, bu da maliyeti azaltır ve düşük gecikmeli yazmalara olanak tanır. Ancak okuma performansı COW tablolarına göre daha yavaş olabilir.

Tablo erişim izni ver

IAM rolünü kullanıyoruz<STACK-NAME>-hudi-table-pii-roleHudi COW ve MOR içeren PII sütunlarını sorgulamak için. Tabloya ilk olarak Lake Formation üzerinden erişim izni veriyoruz:

  1. Göl Oluşumu konsolunda seçin Veri gölü izinleri altında İzinler Gezinti bölmesinde.
  2. Klinik Hibe.
  3. Klinik<STACK-NAME>-hudi-table-pii-roleiçin IAM kullanıcıları ve rolleri.
  4. Seçinrsv2_blog_hudi_db_1için veritabanı veritabanları.
  5. İçin tablolarJupyter not defterinde oluşturduğunuz dört Hudi tablosunu seçin.

LF - Veri izinleri verin

  1. İçin Tablo izinleriseçin seç.
  2. Klinik Hibe.

LF - tablo izinleri

Kimlik bilgisi sütunlarını sorgula

Artık Hudi tablolarını sorgulamak için not defterini çalıştırmaya hazırsınız. Not defterini SageMaker Studio'da çalıştırmak için önceki bölüme benzer adımları izleyelim:

  1. SageMaker konsolunda, şuraya gidin:<STACK-NAME>-Studio-EMR-LF-Hudietki.
  2. Üzerinde Başlatmak yanındaki menü<STACK-NAME>-hudi-table-readerkullanıcı profili, seçin Stüdyo.
  3. İndirilen not defterini yükleyin rsv2-hudi-tablo-pii-okuyucu-not defteri.
  4. Yüklenen not defterini açın.
  5. Dizüstü bilgisayar kurulum adımlarını tekrarlayın ve aynı EMR kümesine bağlanın ancak rolü kullanın<STACK-NAME>-hudi-table-pii-role.

Mevcut aşamada, FGAC özellikli EMR kümesinin, artımlı sorgular ve zaman yolculuğu gerçekleştirmek için Hudi'nin taahhüt süresi sütununu sorgulaması gerekiyor. Spark'ın "timestamp as of" sözdizimini desteklemez ve Spark.read(). FGAC'ın etkin olduğu gelecekteki Amazon EMR sürümlerine her iki eylem için de destek eklemek için aktif olarak çalışıyoruz.

Artık not defterindeki adımları takip edebilirsiniz. Aşağıda öne çıkan bazı adımlar verilmiştir:

  1. Anlık görüntü sorgusu çalıştırın.
%%sql 
SELECT c_birth_country, count(*) FROM ${hudi_catalog}.${hudi_db}.${cow_table_name_sql} GROUP BY c_birth_country;

  1. Artımlı bir sorgu çalıştırın.
incremental_df = spark.sql(f"""
SELECT * FROM {HUDI_CATALOG}.{HUDI_DATABASE}.{COW_TABLE_NAME_SQL} WHERE _hoodie_commit_time >= {commit_ts[-1]}
""")

incremental_df.createOrReplaceTempView("incremental_view")

%%sql
SELECT 
    c_birth_country, 
    count(*) 
FROM incremental_view
GROUP BY c_birth_country;

  1. Bir zaman yolculuğu sorgusu çalıştırın.
%%sql
SELECT
    c_birth_country, COUNT(*) as count
FROM ${hudi_catalog}.${hudi_db}.${cow_table_name_sql}
WHERE _hoodie_commit_time IN
(
    SELECT DISTINCT _hoodie_commit_time FROM ${hudi_catalog}.${hudi_db}.${cow_table_name_sql} ORDER BY _hoodie_commit_time LIMIT 1 
)
GROUP BY c_birth_country

  1. MOR okuma için optimize edilmiş ve gerçek zamanlı tablo sorgularını çalıştırın.
%%sql
SELECT
    a.email_label,
    count(*)
FROM (
    SELECT
        CASE
            WHEN c_email_address = 'UNKNOWN' THEN 'UNKNOWN'
            ELSE 'NOT_UNKNOWN'
        END AS email_label
    FROM ${hudi_catalog}.${hudi_db}.${mor_table_name_sql}_ro
    WHERE c_birth_country = 'HONG KONG'
) a
GROUP BY a.email_label;

%%sql
SELECT *  
FROM ${hudi_catalog}.${hudi_db}.${mor_table_name_sql}_ro
WHERE 
    c_birth_country = 'INDIA' OR c_first_name = 'MASKED'

Hudi tablolarını sütun düzeyinde ve satır düzeyinde veri filtreleriyle sorgulama

IAM rolünü kullanıyoruz<STACK-NAME>-hudi-table-non-pii-roleHudi tablolarını sorgulamak için. Bu rolün PII içeren herhangi bir sütunu sorgulamasına izin verilmez. Ayrıntılı erişim kontrolünü uygulamak için Göl Oluşumu sütun düzeyinde ve satır düzeyinde veri filtrelerini kullanıyoruz:

  1. Göl Oluşumu konsolunda seçin Veri filtreleri altında Veri Kataloğu Gezinti bölmesinde.
  2. Klinik Yeni filtre oluştur.
  3. İçin Veri filtresi adı, girmekcustomer-pii-filter.
  4. Klinikrsv2_blog_hudi_db_1için Hedef veritabanı.
  5. Klinikrsv2_blog_hudi_mor_sql_dl_customer_1için Hedef tablo.
  6. seç Sütunları hariç tut ve seçinizc_customer_id,c_email_address, vec_last_namesütunlar.
  7. Keşfetc_birth_country != 'HONG KONG'için Satır filtresi ifadesi.
  8. Klinik Filtre oluştur.

LF - veri filtresi oluştur

  1. Klinik Veri gölü izinleri altında İzinler Gezinti bölmesinde.
  2. Klinik Hibe.
  3. Klinik<STACK-NAME>-hudi-table-non-pii-roleiçin IAM kullanıcıları ve rolleri.
  4. Klinikrsv2_blog_hudi_db_1için veritabanları.
  5. Klinikrsv2_blog_hudi_mor_sql_dl_tpc_customer_1için tablolar.
  6. Klinikcustomer-pii-filteriçin Veri filtreleri.
  7. İçin Veri filtresi izinleriseçin seç.
  8. Klinik Hibe.

LF - Veri izinleri verin

Notebook'u SageMaker Studio'da çalıştırmak için benzer adımları takip edelim:

  1. SageMaker konsolunda etki alanına gidinStudio-EMR-LF-Hudi.
  2. Üzerinde Başlatmak için menühudi-table-readerkullanıcı profili, seçin Stüdyo.
  3. İndirilen not defterini yükleyin rsv2-hudi-tablo-pii-olmayan-okuyucu-not defteri Ve seç Açılış.
  4. Dizüstü bilgisayar kurulum adımlarını tekrarlayın ve aynı EMR kümesine bağlanın ancak rolü seçin<STACK-NAME>-hudi-table-non-pii-role.

Artık not defterindeki adımları takip edebilirsiniz. Sorgu sonuçlarından Göl Oluşumu veri filtresi aracılığıyla FGAC'ın uygulandığını görebilirsiniz. Rol, PII sütunlarını göremiyorc_customer_id,c_last_name, vec_email_address. Ayrıca, gelen satırlarHONG KONGfiltrelendi.

filtrelenmiş sorgu sonucu

Temizlemek

Çözümle ilgili denemelerinizi tamamladıktan sonra beklenmedik maliyetlerden kaçınmak için aşağıdaki adımları uygulayarak kaynakları temizlemenizi öneririz:

  1. SageMaker Studio uygulamalarını kapatın Kullanıcı profilleri için.

EMR kümesi, boşta kalma zaman aşımı değerinden sonra otomatik olarak silinecektir.

  1. silmek Amazon Elastik Dosya Sistemi (Amazon EFS) birimi etki alanı için oluşturuldu.
  2. S3 kovalarını boşaltın CloudFormation yığını tarafından oluşturuldu.
  3. AWS CloudFormation konsolunda yığını silin.

Sonuç

Bu yazıda, Amazon EMR'de ayrıntılı erişim kontrolünü zorunlu kılan bu yeni özelliği göstermek için OTF tablolarından biri olan Apachi Hudi'yi kullandık. OTF tabloları için Lake Formation'da ayrıntılı izinler tanımlayabilir ve bunları EMR kümelerindeki Spark SQL sorguları aracılığıyla uygulayabilirsiniz. Anlık görüntü sorgularını çalıştırma, artımlı sorgular, zaman yolculuğu ve DML sorgusu gibi işlemsel veri gölü özelliklerini de kullanabilirsiniz. Bu yeni özelliğin tüm OTF tablolarını kapsadığını lütfen unutmayın.

Bu özellik, Amazon EMR 6.15 sürümünden itibaren kullanıma sunuldu bölgeler Amazon EMR'nin mevcut olduğu yerler. Amazon EMR'nin Lake Formation ile entegrasyonu sayesinde büyük verileri güvenle yönetip işleyebilir, içgörülerin kilidini açabilir ve veri güvenliğini ve yönetişimini korurken bilinçli karar almayı kolaylaştırabilirsiniz.

Daha fazla bilgi edinmek için bkz. Amazon EMR ile Göl Oluşumunu Etkinleştirin ve veri yolculuğunuz boyunca size yardımcı olabilecek AWS Çözüm Mimarlarınızla iletişime geçmekten çekinmeyin.


Yazar Hakkında

Raymond LaiRaymond Lai büyük kurumsal müşterilerin ihtiyaçlarını karşılama konusunda uzmanlaşmış bir Kıdemli Çözüm Mimarıdır. Uzmanlığı, karmaşık kurumsal sistemleri ve veritabanlarını AWS'ye geçirme, kurumsal veri ambarı ve veri gölü platformları oluşturma konusunda müşterilere yardımcı olmakta yatmaktadır. Raymond, AI/ML kullanım senaryolarına yönelik çözümleri belirleme ve tasarlama konusunda uzmandır ve özellikle AWS Sunucusuz çözümlere ve Olay Odaklı Mimari tasarımına odaklanmaktadır.

Bin Wang, PhD, AWS'de Kıdemli Analitik Uzman Çözüm Mimarıdır ve özellikle reklamcılığa odaklanarak makine öğrenimi sektöründe 12 yıldan fazla deneyime sahiptir. Doğal dil işleme (NLP), öneri sistemleri, çeşitli makine öğrenimi algoritmaları ve makine öğrenimi operasyonları konularında uzmanlığa sahiptir. Gerçek dünyadaki sorunları çözmek için ML/DL ve büyük veri tekniklerini uygulama konusunda derin bir tutkuya sahiptir.

Aditya Şah AWS'de Yazılım Geliştirme Mühendisidir. Veritabanları ve Veri ambarı motorları ile ilgilenmektedir ve Apache Hive ve Apache Spark gibi motorlar için performans optimizasyonları, güvenlik uyumluluğu ve ACID uyumluluğu üzerinde çalışmıştır.

Melodi Yang AWS'de Amazon EMR için Kıdemli Büyük Veri Çözüm Mimarıdır. Veri dönüşümünde başarılarına yardımcı olmak için en iyi uygulama rehberliği ve teknik tavsiye sağlamak üzere AWS müşterileriyle birlikte çalışan deneyimli bir analitik lideridir. İlgi alanları açık kaynaklı çerçeveler ve otomasyon, veri mühendisliği ve DataOps'tur.

spot_img

En Son İstihbarat

spot_img