全部产品
Search
文档中心

E-MapReduce:Mengelola profil kustom

更新时间:Nov 10, 2025

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

  1. Buka halaman manajemen konfigurasi.

    1. Masuk ke Konsol E-MapReduce.

    2. Pada panel navigasi sebelah kiri, pilih EMR Serverless > Spark.

    3. Pada halaman Spark, klik nama ruang kerja yang dituju.

    4. Pada halaman EMR Serverless Spark, klik Manajemen Konfigurasi di panel navigasi sebelah kiri.

  2. Pada halaman Configuration Management, klik tab Custom Profiles.

  3. Klik Create Custom Profile.

  4. 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 .json berdasarkan 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.

    Catatan

    Sistem 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, dan syncer_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.

  1. Buat profil kustom.

    Buat file konfigurasi bernama ranger-spark-security.xml dan 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.

  2. 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.RangerSparkExtension
  3. Uji 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.