Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan EMR Tanpa Server dengan kontrol akses AWS Lake Formation berbutir halus
Gambaran Umum
Dengan Amazon EMR merilis 7.2.0 dan yang lebih tinggi, Anda dapat memanfaatkan AWS Lake Formation untuk menerapkan kontrol akses berbutir halus pada tabel Katalog Data yang didukung oleh S3. Kemampuan ini memungkinkan Anda mengonfigurasi kontrol akses tingkat tabel, baris, kolom, dan sel untuk read kueri dalam pekerjaan Amazon EMR Serverless Spark Anda. Untuk mengonfigurasi kontrol akses berbutir halus untuk pekerjaan batch Apache Spark dan sesi interaktif, gunakan Studio. EMR Lihat bagian berikut untuk mempelajari lebih lanjut tentang Lake Formation dan cara menggunakannya dengan Tanpa EMR Server.
Menggunakan Amazon EMR Tanpa Server dengan AWS Lake Formation dikenakan biaya tambahan. Untuk informasi selengkapnya, lihat EMRharga Amazon
Bagaimana EMR Serverless bekerja dengan AWS Lake Formation
Menggunakan EMR Tanpa Server dengan Lake Formation memungkinkan Anda menerapkan lapisan izin pada setiap pekerjaan Spark untuk menerapkan kontrol izin Lake Formation saat Tanpa Server mengeksekusi pekerjaan. EMR EMRTanpa server menggunakan profil sumber daya Spark untuk membuat dua profil
Saat Anda menggunakan kapasitas pra-inisialisasi dengan Lake Formation, kami sarankan Anda memiliki minimal dua driver Spark. Setiap pekerjaan yang mendukung Lake Formation menggunakan dua driver Spark, satu untuk profil pengguna dan satu untuk profil sistem. Untuk kinerja terbaik, Anda harus menggunakan dua kali lipat jumlah driver untuk pekerjaan yang mendukung Lake Formation dibandingkan jika Anda tidak menggunakan Lake Formation.
Saat Anda menjalankan pekerjaan Spark di EMR Tanpa Server, Anda juga harus mempertimbangkan dampak alokasi dinamis pada manajemen sumber daya dan kinerja klaster. Konfigurasi spark.dynamicAllocation.maxExecutors
jumlah maksimum pelaksana per profil sumber daya berlaku untuk pengguna dan pelaksana sistem. Jika Anda mengonfigurasi angka tersebut agar sama dengan jumlah maksimum pelaksana yang diizinkan, pekerjaan Anda mungkin macet karena satu jenis pelaksana yang menggunakan semua sumber daya yang tersedia, yang mencegah pelaksana lain saat Anda menjalankan pekerjaan.
Agar Anda tidak kehabisan sumber daya, EMR Tanpa Server menetapkan jumlah maksimum pelaksana default per profil sumber daya menjadi 90% dari nilai. spark.dynamicAllocation.maxExecutors
Anda dapat mengganti konfigurasi ini ketika Anda menentukan spark.dynamicAllocation.maxExecutorsRatio
dengan nilai antara 0 dan 1. Selain itu, Anda juga dapat mengonfigurasi properti berikut untuk mengoptimalkan alokasi sumber daya dan kinerja keseluruhan:
-
spark.dynamicAllocation.cachedExecutorIdleTimeout
-
spark.dynamicAllocation.shuffleTracking.timeout
-
spark.cleaner.periodicGC.interval
Berikut ini adalah ikhtisar tingkat tinggi tentang bagaimana EMR Tanpa Server mendapatkan akses ke data yang dilindungi oleh kebijakan keamanan Lake Formation.
-
Pengguna mengirimkan pekerjaan Spark ke aplikasi Tanpa Server AWS Lake Formation yang diaktifkanEMR.
-
EMRTanpa server mengirimkan pekerjaan ke driver pengguna dan menjalankan pekerjaan di profil pengguna. Driver pengguna menjalankan versi lean Spark yang tidak memiliki kemampuan untuk meluncurkan tugas, meminta pelaksana, mengakses S3 atau Glue Catalog. Ini membangun rencana kerja.
-
EMRTanpa server mengatur driver kedua yang disebut driver sistem dan menjalankannya di profil sistem (dengan identitas istimewa). EMRTanpa server menyiapkan TLS saluran terenkripsi antara dua driver untuk komunikasi. Driver pengguna menggunakan saluran untuk mengirim rencana pekerjaan ke driver sistem. Driver sistem tidak menjalankan kode yang dikirimkan pengguna. Ini menjalankan Spark penuh dan berkomunikasi dengan S3, dan Katalog Data untuk akses data. Ini meminta pelaksana dan mengkompilasi Job Plan ke dalam urutan tahapan eksekusi.
-
EMRServerless kemudian menjalankan tahapan pada pelaksana dengan driver pengguna atau driver sistem. Kode pengguna dalam tahap apa pun dijalankan secara eksklusif pada pelaksana profil pengguna.
-
Tahapan yang membaca data dari tabel Katalog Data yang dilindungi oleh AWS Lake Formation atau yang menerapkan filter keamanan didelegasikan ke pelaksana sistem.
Mengaktifkan Lake Formation di Amazon EMR
Untuk mengaktifkan Lake Formation, Anda harus mengatur spark.emr-serverless.lakeformation.enabled
ke true
bawah spark-defaults
klasifikasi untuk parameter konfigurasi runtime saat membuat aplikasi Tanpa EMR Server.
aws emr-serverless create-application \ --release-label emr-7.3.0 \ --runtime-configuration '{ "classification": "spark-defaults", "properties": { "spark.emr-serverless.lakeformation.enabled": "true" } }' \ --type "SPARK"
Anda juga dapat mengaktifkan Lake Formation saat membuat aplikasi baru di EMR Studio. Pilih Gunakan Lake Formation untuk kontrol akses berbutir halus, tersedia di bawah Konfigurasi tambahan.
Enkripsi antar pekerja diaktifkan secara default saat Anda menggunakan Lake Formation dengan EMR Tanpa Server, jadi Anda tidak perlu mengaktifkan enkripsi antar-pekerja secara eksplisit lagi.
Mengaktifkan Lake Formation untuk pekerjaan Spark
Untuk mengaktifkan Lake Formation untuk pekerjaan Spark individual, setel spark.emr-serverless.lakeformation.enabled
ke true saat menggunakanspark-submit
.
--conf spark.emr-serverless.lakeformation.enabled=true
Izin peran IAM runtime Job
Izin Lake Formation mengontrol akses ke sumber daya Katalog Data AWS Glue, lokasi Amazon S3, dan data dasar di lokasi tersebut. IAMizin mengontrol akses ke Lake Formation dan AWS Glue APIs dan sumber daya. Meskipun Anda mungkin memiliki izin Lake Formation untuk mengakses tabel di Data Catalog (SELECT), operasi Anda gagal jika Anda tidak memiliki IAM izin pada glue:Get*
API operasi.
Berikut ini adalah contoh kebijakan tentang cara memberikan IAM izin untuk mengakses skrip di S3, mengunggah log ke S3, izin AWS API Glue, dan izin untuk mengakses Lake Formation.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ScriptAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.amzn-s3-demo-bucket/scripts", "arn:aws:s3:::*.amzn-s3-demo-bucket/*" ] }, { "Sid": "LoggingAccess", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/logs/*" ] }, { "Sid": "GlueCatalogAccess", "Effect": "Allow", "Action": [ "glue:Get*", "glue:Create*", "glue:Update*" ], "Resource": ["*"] }, { "Sid": "LakeFormationAccess", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": ["*"] } ] }
Menyiapkan izin Lake Formation untuk peran runtime pekerjaan
Pertama, daftarkan lokasi meja Hive Anda dengan Lake Formation. Kemudian buat izin untuk peran runtime pekerjaan Anda di tabel yang Anda inginkan. Untuk detail lebih lanjut tentang Lake Formation, lihat Apa itu AWS Lake Formation? di Panduan AWS Lake Formation Pengembang.
Setelah mengatur izin Lake Formation, Anda dapat mengirimkan pekerjaan Spark di Amazon EMR Tanpa Server. Untuk informasi selengkapnya tentang pekerjaan Spark, lihat contoh Spark.
Mengirimkan pekerjaan
Setelah Anda selesai menyiapkan hibah Lake Formation, Anda dapat mengirimkan pekerjaan Spark di EMR Tanpa Server. Untuk menjalankan pekerjaan Iceberg, Anda harus menyediakan properti berikutspark-submit
.
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog --conf spark.sql.catalog.spark_catalog.warehouse=<
S3_DATA_LOCATION
> --conf spark.sql.catalog.spark_catalog.glue.account-id=<ACCOUNT_ID
> --conf spark.sql.catalog.spark_catalog.client.region=<REGION
> --conf spark.sql.catalog.spark_catalog.glue.endpoint=https://glue.<REGION
>.amazonaws.com
Dukungan format meja terbuka
Amazon EMR rilis 7.2.0 mencakup dukungan untuk kontrol akses berbutir halus berdasarkan Lake Formation. EMRServerless mendukung jenis tabel Hive dan Iceberg. Tabel berikut menjelaskan semua operasi yang didukung.
Operasi | Hive | Gunung es |
---|---|---|
DDLperintah | Dengan izin IAM peran saja | Dengan izin IAM peran saja |
Kueri tambahan | Tidak berlaku | Sepenuhnya didukung |
Pertanyaan perjalanan waktu | Tidak berlaku untuk format tabel ini | Sepenuhnya didukung |
Tabel metadata | Tidak berlaku untuk format tabel ini | Didukung, tetapi tabel tertentu disembunyikan. Lihat pertimbangan dan batasan untuk informasi lebih lanjut. |
DML INSERT |
Hanya dengan IAM izin | Hanya dengan IAM izin |
DML UPDATE | Tidak berlaku untuk format tabel ini | Hanya dengan IAM izin |
DML DELETE |
Tidak berlaku untuk format tabel ini | Hanya dengan IAM izin |
Operasi baca | Sepenuhnya didukung | Sepenuhnya didukung |
Prosedur tersimpan | Tidak berlaku | Didukung dengan pengecualian register_table danmigrate . Lihat pertimbangan dan batasan untuk informasi lebih lanjut. |