Plugin Apache Spark - 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

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.

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

“AMAZON- EMR -SPARK" terdaftar di Admin Ranger.

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.

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

Admin Ranger membuat detail SQL kebijakan Spark.

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.

Rincian SQL kebijakan Spark Admin Ranger memungkinkan kondisi.

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.