Plugin Apache Spark untuk integrasi Ranger dengan Amazon EMR - Amazon EMR

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 berbutir halus untuk SparkSQL. EMR RecordServer adalah proses istimewa yang berjalan di semua node pada cluster yang mendukung Apache Ranger. Ketika driver atau eksekutor Spark menjalankan pernyataan SparkSQL, semua metadata dan permintaan data akan melalui. RecordServer Untuk mempelajari lebih lanjut tentang EMR RecordServer, lihat halaman. Komponen Amazon EMR untuk digunakan dengan Apache Ranger

Fitur yang didukung

Tindakan SQL statement/Ranger 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

SISIPKAN TIMPA

Didukung

Pada 5,34 dan 6,4

MASUKKAN KE DALAM Didukung Pada 5,34 dan 6,4

ALTER TABLE

Didukung

Pada 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

TAMPILAN DROP

Didukung

Pada 5,35 dan 6,7

BUAT TAMPILAN

Tidak Didukung

Fitur berikut didukung saat menggunakan SparkSQL:

  • Kendali akses lancar pada tabel di Metastore Hive, dan kebijakan dapat dibuat pada tingkat basis data, tabel, dan kolom.

  • Kebijakan Apache Ranger dapat mencakup kebijakan hibah dan tolak kebijakan untuk pengguna dan grup.

  • Acara audit dikirimkan ke CloudWatch Log.

Menerapkan kembali 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 menjatuhkan database dan tabel. Jika Anda memiliki instalasi yang ada di server Apache Ranger dengan definisi layanan Apache Spark digunakan, gunakan kode berikut untuk menerapkan 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 Admin Apache Ranger

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 berhasil, Anda akan melihat layanan baru di Anda UI Admin Ranger yang disebut "AMAZON-EMR-SPARK", seperti yang ditunjukkan pada citra berikut (Ranger versi 2.0 ditampilkan).

"AMAZON-EMR-Spark" terdaftar di Admin Ranger.

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.

Admin Ranger membuat layanan.
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.

Admin Ranger membuat detail kebijakan SparkSQL.

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 penolakan.

Detail kebijakan SparkSQL Admin Ranger mengizinkan syarat.

Setelah menentukan mengizinkan dan tolak syarat, klik Simpan.

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 harus config nilai-nilai di file konfigurasi Apache Spark Hive-site.xml.

  • Tabel yang dibuat menggunakan sumber data Spark pada CSV atau Avro tidak dapat dibaca menggunakan EMR. RecordServer Gunakan Hive untuk membuat dan tulis data, dan membaca menggunakan Catatan.

  • Meja 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.