

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
<a name="emr-ranger-spark"></a>

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](emr-ranger-components.md)

**Topics**
+ [Fitur yang didukung](#emr-ranger-spark-supported-features)
+ [Menerapkan kembali definisi layanan untuk menggunakan pernyataan INSERT, ALTER, atau DDL](#emr-ranger-spark-redeploy-service-definition)
+ [Instalasi definisi layanan](#emr-ranger-spark-install-servicedef)
+ [Membuat kebijakan SparkSQL](#emr-ranger-spark-create-sparksql)
+ [Pertimbangan-pertimbangan](#emr-ranger-spark-considerations)
+ [Batasan](#emr-ranger-spark-limitations)

## Fitur yang didukung
<a name="emr-ranger-spark-supported-features"></a>


| 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  | 
|  MASUKKAN TIMPA  |  Didukung  |  Pada 5,34 dan 6,4  | 
| MASUKKAN KE | 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  | 
|  CREATE VIEW  |  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
<a name="emr-ranger-spark-redeploy-service-definition"></a>

**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
<a name="emr-ranger-spark-install-servicedef"></a>

Instalasi defenisi layanan EMR Apache Spark memerlukan server Admin Ranger untuk setup. Lihat [Siapkan server Admin Ranger untuk diintegrasikan dengan Amazon EMR](emr-ranger-admin.md).

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.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-amazon-emr-spark.png)


**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.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-create-service.png)


**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](emr-ranger-admin-tls.md) untuk detail selengkapnya.

## Membuat kebijakan SparkSQL
<a name="emr-ranger-spark-create-sparksql"></a>

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 “\$1” mewakili semua database.

**Tabel**: Tabel yang berlaku untuk kebijakan ini. Wildcard “\$1” mewakili semua tabel.

**Kolom EMR Spark**: Kolom yang berlaku untuk kebijakan ini. Wildcard "\$1" mewakili semua kolom.

**Deskripsi**: Deskripsi dari kebijakan ini.

![\[Admin Ranger membuat detail kebijakan SparkSQL.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-create-policy-details.png)


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.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-create-policy-allow-conditions.png)


Setelah menentukan mengizinkan dan tolak syarat, klik **Simpan**.

## Pertimbangan-pertimbangan
<a name="emr-ranger-spark-considerations"></a>

Setiap node dalam cluster EMR harus dapat terhubung ke node utama pada port 9083.

## Batasan
<a name="emr-ranger-spark-limitations"></a>

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.