Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Plugin Apache Spark untuk integrasi Ranger dengan Amazon EMR
Amazon EMR telah mengintegrasikan EMR RecordServer untuk menyediakan kontrol akses halus untuk SparkSQL. EMR RecordServer adalah proses istimewa yang berjalan pada semua node pada Ranger-enabled cluster Apache. Ketika driver atau eksekutor Spark menjalankan pernyataan SparkSQL, semua metadata dan permintaan data melewati. RecordServer Untuk mempelajari lebih lanjut tentang EMR RecordServer, lihat Komponen Amazon EMR untuk digunakan dengan Apache Ranger halaman.
Topik
Fitur yang didukung
| T statement/Ranger indakan SQL | STATUS | Rilis EMR yang didukung |
|---|---|---|
|
PILIH |
Didukung |
Pada 5.32 |
|
TAMPILKAN BASIS DATA |
Didukung |
Pada 5.32 |
|
TAMPILKAN KOLOM |
Didukung |
Pada 5.32 |
|
TAMPILKAN TABEL |
Didukung |
Pada 5.32 |
|
TAMPILKAN PROPERTI TABEL |
Didukung |
Pada 5.32 |
|
GAMBAR TABEL |
Didukung |
Pada 5.32 |
|
MASUKKAN OVERWRITE |
Didukung |
Pada 5.34 dan 6.4 |
| MASUKKAN KE | Didukung | Pada 5.34 dan 6.4 |
|
ALTER TABLE |
Didukung |
Sampai 6,4 |
|
CREATE TABLE |
Didukung |
Pada 5,35 dan 6,7 |
|
BUAT BASIS DATA |
Didukung |
Pada 5,35 dan 6,7 |
|
MEJA DROP |
Didukung |
Pada 5,35 dan 6,7 |
|
DROP DATABASE |
Didukung |
Pada 5,35 dan 6,7 |
|
MENJATUHKAN TAMPILAN |
Didukung |
Pada 5,35 dan 6,7 |
|
CREATE VIEW |
Tidak Didukung |
Fitur berikut didukung saat menggunakan SparkSQL:
-
Fine-grained kontrol akses pada tabel dalam Hive Metastore, dan kebijakan dapat dibuat pada tingkat database, tabel, dan kolom.
-
Kebijakan Apache Ranger dapat mencakup kebijakan hibah dan tolak kebijakan untuk pengguna dan grup.
-
Peristiwa audit dikirimkan ke CloudWatch Log.
Menyebarkan ulang definisi layanan untuk menggunakan pernyataan INSERT, ALTER, atau DDL
catatan
Dimulai dengan Amazon EMR 6.4, Anda dapat menggunakan Spark SQL dengan pernyataan: INSERT INTO, INSERT OVERWRITE, atau ALTER TABLE. Dimulai dengan Amazon EMR 6.7, Anda dapat menggunakan Spark SQL untuk membuat atau menghapus database dan tabel. Jika Anda memiliki instalasi yang ada di server Apache Ranger dengan definisi layanan Apache Spark yang diterapkan, gunakan kode berikut untuk menerapkan kembali definisi layanan.
# Get existing Spark service definition id calling Ranger REST API and JSON processor curl --silent -f -u<admin_user_login>:<password_for_ranger_admin_user>\ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef/name/amazon-emr-spark' | jq .id # Download the latest Service definition wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-spark.json # Update the service definition using the Ranger REST API curl -u<admin_user_login>:<password_for_ranger_admin_user>-X PUT -d @ranger-servicedef-amazon-emr-spark.json \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef/<Spark service definition id from step 1>'
Instalasi definisi layanan
Instalasi defenisi layanan EMR Apache Spark memerlukan server Admin Ranger untuk setup. Lihat Siapkan server Admin Ranger untuk diintegrasikan dengan Amazon EMR.
Ikuti langkah-langkah untuk menginstal definisi layanan Apache Spark:
Langkah 1: SSH ke server Admin Apache Ranger
Misalnya:
ssh ec2-user@ip-xxx-xxx-xxx-xxx.ec2.internal
Langkah 2: Unduh definisi layanan dan plugin server Apache Ranger Admin
Di direktori sementara, unduh definisi layanan. Definisi layanan ini didukung oleh versi Ranger 2.x.
mkdir /tmp/emr-spark-plugin/ cd /tmp/emr-spark-plugin/ wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-spark-plugin-2.x.jar wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-spark.json
Langkah 3: Instal plugin Apache Spark untuk Amazon EMR
export RANGER_HOME=.. # Replace this Ranger Admin's home directory eg /usr/lib/ranger/ranger-2.0.0-admin mkdir $RANGER_HOME/ews/webapp/WEB-INF/classes/ranger-plugins/amazon-emr-spark mv ranger-spark-plugin-2.x.jar $RANGER_HOME/ews/webapp/WEB-INF/classes/ranger-plugins/amazon-emr-spark
Langkah 4: Daftarkan definisi layanan Apache Spark untuk Amazon EMR
curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-spark.json \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef'
Jika perintah ini berjalan dengan sukses, Anda melihat layanan baru di UI Admin Ranger Anda yang disebut "AMAZON-EMR-SPARK“, seperti yang ditunjukkan pada gambar berikut (Ranger versi 2.0 ditampilkan).
Langkah 5: Buat instance AMAZON-EMR-SPARK aplikasi
Nama Layanan (Jika ditampilkan): Nama layanan yang akan digunakan. Nilai yang direkomendasikan adalah amazonemrspark. Catat nama layanan ini saat membuat konfigurasi keamanan EMR.
Nama tampilan: Nama yang akan ditampilkan untuk instans ini. Nilai yang direkomendasikan adalah amazonemrspark.
Nama Umum Untuk Sertifikat: Bidang CN di sertifikat yang digunakan untuk connect ke server admin dari plugin klien. Nilai ini harus cocok dengan bidang CN di sertifikat TLS Anda yang dibuat untuk plugin.
catatan
Sertifikat TLS untuk plugin ini harus telah terdaftar di penyimpanan kepercayaan pada server Admin Ranger. Lihat Sertifikat TLS untuk integrasi Apache Ranger dengan Amazon EMR untuk detail selengkapnya.
Membuat kebijakan SparkSQL
Saat membuat kebijakan baru, bidang yang harus diisi adalah:
Nama Kebijakan: Nama kebijakan ini.
Label Kebijakan: Label yang dapat Anda tempatkan di kebijakan ini.
Basis data: Basis data yang berlaku untuk kebijakan ini. Wildcard “*” mewakili semua database.
Tabel: Tabel yang berlaku untuk kebijakan ini. Wildcard “*” mewakili semua tabel.
Kolom EMR Spark: Kolom yang berlaku untuk kebijakan ini. Wildcard "*" mewakili semua kolom.
Deskripsi: Deskripsi dari kebijakan ini.
Untuk menentukan pengguna dan grup, Anda perlu memasukkan pengguna dan grup di bawah ini untuk memberikan izin. Anda juga dapat menentukan pengecualian untuk kondisi izinkan dan kondisi menolak.
Setelah menentukan mengizinkan dan tolak syarat, klik Simpan.
Pertimbangan-pertimbangan
Setiap node dalam cluster EMR harus dapat terhubung ke node utama pada port 9083.
Batasan
Berikut ini adalah batasan saat ini untuk plugin Apache Spark:
-
Server Catatan akan selalu terhubung ke HMS yang berjalan pada klaster Amazon EMR. Konfigurasikan HMS untuk connect ke Mode Jarak Jauh, jika diperlukan. Anda tidak boleh meletakkan nilai konfigurasi di dalam file Hive-site.xml konfigurasi Apache Spark.
-
Tabel yang dibuat menggunakan sumber data Spark di CSV atau Avro tidak dapat dibaca menggunakan EMR. RecordServer Gunakan Hive untuk membuat dan tulis data, dan membaca menggunakan Catatan.
-
Tabel Delta Lake, Hudi, dan Iceberg tidak didukung.
-
Pengguna harus memiliki akses ke basis data default. Ini adalah persyaratan untuk Apache Spark.
-
Server Admin Ranger tidak support selesai otomatis.
-
Plugin SparkSQL untuk Amazon EMR tidak support filter baris atau masking data.
-
Saat menggunakan ALTER TABLE dengan Spark SQL, lokasi partisi harus menjadi direktori anak dari lokasi tabel. Memasukkan data ke dalam partisi di mana lokasi partisi berbeda dari lokasi tabel tidak didukung.