Fitur profil kustom memungkinkan Anda membuat konfigurasi yang dipersonalisasi sesuai kebutuhan tertentu dan mengontrol lingkungan eksekusi tugas secara fleksibel. Fitur ini mendukung berbagai format file (seperti XML dan JSON), menjamin keamanan dan konsistensi konfigurasi, serta dapat langsung diterapkan pada berbagai tugas (seperti Pemrosesan batch dan Sesi).
Prasyarat
Anda telah membuat ruang kerja. Untuk informasi selengkapnya, lihat Manajemen ruang kerja.
Buat profil kustom
Buka halaman manajemen konfigurasi.
Masuk ke Konsol E-MapReduce.
Pada panel navigasi sebelah kiri, pilih .
Pada halaman Spark, klik nama ruang kerja yang dituju.
Pada halaman EMR Serverless Spark, klik Manajemen Konfigurasi di panel navigasi sebelah kiri.
Pada halaman Configuration Management, klik tab Custom Profiles.
Klik Create Custom Profile.
Pada halaman Create Custom Profile, konfigurasikan parameter dan klik Create.
Parameter
Deskripsi
Path
Pilih path penyimpanan file.
File Name
Tentukan nama dan ekstensi file. Pilih
.txt,.xml, atau.jsonberdasarkan jenis file.File Content
Masukkan konten konfigurasi spesifik. Pastikan konten sesuai dengan persyaratan format jenis file yang dipilih.
Description
Tambahkan deskripsi mengenai tujuan file untuk memudahkan pengelolaan dan pemeliharaan selanjutnya.
CatatanSistem telah menetapkan beberapa file konfigurasi utama secara default. Nama dan konten file-file tersebut dikelola oleh sistem. Anda tidak dapat mengubah nama atau menimpa kontennya secara langsung. Nama file yang tidak dapat diubah meliputi:
spark-defaults.conf,kyuubi-defaults.conf,executorPodTemplate.yaml,spark-pod-template.yaml,driver_log4j.xml,executor_log4j.xml,session_log4j.xml,spark.properties, dansyncer_log4j.xml.
Setelah membuat profil kustom, Anda dapat mengklik Edit atau Delete di kolom Tindakan untuk mengubah atau menghapus profil kustom tersebut.
Gunakan profil kustom
Contoh 1: Mengaktifkan autentikasi Ranger di Spark Thrift Server
Topik ini menggunakan contoh pengaktifan autentikasi Ranger untuk Serverless Spark Thrift Server untuk menunjukkan cara membuat dan menggunakan profil kustom.
Buat profil kustom.
Buat file konfigurasi bernama
ranger-spark-security.xmldan simpan ke path/etc/spark/conf. Contoh berikut menunjukkan data dalam file tersebut.<configuration> <property> <name>ranger.plugin.spark.policy.cache.dir</name> <value>/opt/emr-hive/policycache</value> </property> <property> <name>ranger.plugin.spark.ambari.cluster.name</name> <value>serverless-spark</value> </property> <property> <name>ranger.plugin.spark.service.name</name> <value>emr-hive</value> </property> <property> <name>ranger.plugin.spark.policy.rest.url</name> <value>http://<ranger_admin_ip>:<ranger_admin_port></value> </property> <property> <name>ranger.plugin.spark.policy.source.impl</name> <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value> </property> <property> <name>ranger.plugin.spark.super.users</name> <value>root</value> </property> </configuration><ranger_admin_ip>dan<ranger_admin_port>menentukan alamat IP internal dan nomor port Ranger Admin. Konfigurasikan parameter sesuai kebutuhan bisnis Anda. Jika Anda terhubung ke layanan Ranger yang diterapkan di kluster EMR on ECS, atur parameter<ranger_admin_ip>ke alamat IP internal node master dan parameter<ranger_admin_port>ke 6080.Konfigurasikan Spark Thrift Server.
Untuk sesi Spark Thrift Server yang perlu mengaktifkan autentikasi Ranger, Anda harus menghentikan sesi terlebih dahulu. Pilih nama koneksi yang telah dibuat dari daftar drop-down Network Connectivity dan tambahkan item konfigurasi berikut di Spark Configuration. Setelah mengubah Spark Thrift Server, Anda harus me-restart-nya agar perubahan berlaku.
spark.emr.serverless.user.defined.jars /opt/ranger/ranger-spark.jar spark.sql.extensions org.apache.kyuubi.plugin.spark.authz.ranger.RangerSparkExtensionUji koneksi.
Gunakan Spark Beeline untuk menguji koneksi. Untuk metode koneksi lainnya, lihat Menghubungkan ke Spark Thrift Server. Jika Anda mengakses database, tabel, atau sumber daya lain tanpa izin, sistem akan mengembalikan pesan kesalahan kegagalan izin.
Error: org.apache.hive.service.cli.HiveSQLException: Error running query: org.apache.kyuubi.plugin.spark.authz.AccessControlException: Permission denied: user [test] does not have [update] privilege on [database=default/table=students/column=name] at org.apache.spark.sql.hive.thriftserver.HiveThriftServerErrors$.runningQueryError(HiveThriftServerErrors.scala:46) at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation.org$apache$spark$sql$hive$thriftserver$SparkExecuteStatementOperation$$execute(SparkExecuteStatementOperation.scala:262) at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation$$anon$2$$anon$3.$anonfun$run$2(SparkExecuteStatementOperation.scala:166) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) at org.apache.spark.sql.hive.thriftserver.SparkOperation.withLocalProperties(SparkOperation.scala:79) at org.apache.spark.sql.hive.thriftserver.SparkOperation.withLocalProperties$(SparkOperation.scala:63) at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation.withLocalProperties(SparkExecuteStatementOperation.scala:41) at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation$$anon$2$$anon$3.run(SparkExecuteStatementOperation.scala:166) at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation$$anon$2$$anon$3.run(SparkExecuteStatementOperation.scala:161) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1730) at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation$$anon$2.run(SparkExecuteStatementOperation.scala:175) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750)
Contoh 2: Tugas migrasi EMR on ECS mengakses file OSS
Saat melakukan migrasi dari EMR on ECS ke Serverless Spark, jika tugas jenis non-SQL perlu mengakses Alibaba Cloud OSS/OSS-HDFS, dan kode tugas tidak menginisialisasi FileSystem melalui SparkContext#hadoopConfiguration, Anda harus mengonfigurasi secara manual kelas implementasi dan parameter akses terkait untuk sistem file OSS/OSS-HDFS. Jika tidak, karena Serverless Spark tidak menyuntikkan file core-site.xml secara default, tugas yang dimigrasikan akan menghasilkan error seperti UnsupportedFileSystemException akibat kurangnya dukungan untuk OSS/OSS-HDFS.
Pada halaman Configuration Management, klik tab Custom Profiles, buat file konfigurasi bernama core-site.xml, dan simpan ke path /etc/spark/conf. Contoh berikut menunjukkan kode dalam file tersebut:
<?xml version="1.0" ?>
<configuration>
<property>
<name>fs.AbstractFileSystem.oss.impl</name>
<value>com.aliyun.jindodata.oss.OSS</value>
</property>
<property>
<name>fs.oss.endpoint</name>
<value>oss-cn-<region>-internal.aliyuncs.com</value>
</property>
<property>
<name>fs.oss.impl</name>
<value>com.aliyun.jindodata.oss.JindoOssFileSystem</value>
</property>
<property>
<name>fs.oss.credentials.provider</name>
<value>com.aliyun.jindodata.oss.auth.SimpleCredentialsProvider</value>
</property>
<property>
<name>fs.oss.accessKeyId</name>
<value>The AccessKey ID that is used to access OSS or OSS-HDFS.</value>
</property>
<property>
<name>fs.oss.accessKeySecret</name>
<value>The AccessKey secret that is used to access OSS or OSS-HDFS.</value>
</property>
</configuration>Ganti <region> dengan wilayah OSS aktual yang Anda gunakan, misalnya hangzhou.