Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Plugin Apache Spark
Amazon EMR telah terintegrasi EMR RecordServer untuk menyediakan kontrol akses berbutir halus untuk Spark. SQL EMR's RecordServer adalah proses istimewa yang berjalan di semua node pada cluster yang mendukung Apache Ranger. Ketika driver atau eksekutor Spark menjalankan SQL pernyataan Spark, semua metadata dan permintaan data melewati file. RecordServer Untuk mempelajari lebih lanjut EMR RecordServer, lihat EMRKomponen Amazon halaman.
Topik
Fitur yang didukung
SQLPernyataan/tindakan ranger | STATUS | EMRRilis yang didukung |
---|---|---|
SELECT |
Didukung |
Pada 5.32 |
SHOW DATABASES |
Didukung |
Pada 5.32 |
SHOW COLUMNS |
Didukung |
Pada 5.32 |
SHOW TABLES |
Didukung |
Pada 5.32 |
SHOW TABLE PROPERTIES |
Didukung |
Pada 5.32 |
DESCRIBE TABLE |
Didukung |
Pada 5.32 |
INSERT OVERWRITE |
Didukung |
Pada 5,34 dan 6,4 |
INSERT INTO | Didukung | Pada 5,34 dan 6,4 |
ALTER TABLE |
Didukung |
Pada 6.4 |
CREATE TABLE |
Didukung |
Pada 5,35 dan 6,7 |
CREATE DATABASE |
Didukung |
Pada 5,35 dan 6,7 |
DROP TABLE |
Didukung |
Pada 5,35 dan 6,7 |
DROP DATABASE |
Didukung |
Pada 5,35 dan 6,7 |
DROP VIEW |
Didukung |
Pada 5,35 dan 6,7 |
CREATE VIEW |
Tidak Didukung |
Fitur-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 diserahkan ke CloudWatch Log.
Menerapkan ulang definisi layanan untuk menggunakanINSERT,ALTER, atau pernyataan DDL
catatan
Dimulai dengan Amazon EMR 6.4, Anda dapat menggunakan Spark SQL dengan pernyataan: INSERTINTO, INSERTOVERWRITE, 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 EMR definisi layanan Apache Spark mengharuskan server Admin Ranger disiapkan. Lihat Atur server Admin Ranger.
Ikuti langkah-langkah untuk menginstal definisi layanan Apache Spark:
Langkah 1: SSH ke server Admin Apache Ranger
Sebagai contoh:
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 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 dari AMAZON - EMR - SPARK aplikasi
Nama Layanan (Jika ditampilkan): Nama layanan yang akan digunakan. Nilai yang direkomendasikan adalah amazonemrspark
. Perhatikan nama layanan ini karena akan diperlukan saat membuat konfigurasi EMR keamanan.
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 sesuai dengan bidang CN di TLS sertifikat Anda yang dibuat untuk plugin.
catatan
TLSSertifikat untuk plugin ini seharusnya telah terdaftar di toko kepercayaan di server Admin Ranger. Lihat TLSsertifikat untuk detail selengkapnya.
Membuat kebijakan Spark SQL
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.
EMRKolom Percikan: Kolom tempat kebijakan ini berlaku. 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 penolakan.
Setelah menentukan mengizinkan dan tolak syarat, klik Simpan.
Pertimbangan
Setiap node dalam EMR cluster harus dapat terhubung ke node utama pada port 9083.
Batasan
Berikut ini adalah batasan saat ini untuk plugin Apache Spark:
-
Record Server akan selalu terhubung untuk HMS berjalan di EMR cluster Amazon. Konfigurasikan HMS untuk terhubung 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.
-
Tabel Delta Lake dan Hudi tidak didukung.
-
Pengguna harus memiliki akses ke basis data default. Ini adalah persyaratan untuk Apache Spark.
-
Server Admin Ranger tidak support selesai otomatis.
-
SQLPlugin Spark untuk Amazon EMR tidak mendukung filter baris atau penyembunyian data.
-
Saat menggunakan ALTER TABLE dengan SparkSQL, lokasi partisi harus menjadi direktori anak dari lokasi tabel. Memasukkan data ke dalam partisi di mana lokasi partisi berbeda dari lokasi tabel tidak didukung.