全部產品
Search
文件中心

E-MapReduce:管理自訂設定檔

更新時間:Jul 05, 2025

自訂設定檔功能支援根據特定需求建立個人化配置,靈活控制任務執行環境。支援多種檔案格式(如XML和JSON),確保配置的安全性和一致性,並可直接應用於各類任務(如批處理、會話等)。

前提條件

已建立工作空間,詳情請參見管理工作空間

建立自訂設定檔

  1. 進入組態管理頁面。

    1. 登入E-MapReduce控制台

    2. 在左側導覽列,選擇EMR Serverless > Spark

    3. Spark頁面,單擊目標工作空間的名稱。

    4. EMR Serverless Spark頁面,單擊左側導覽列中的組態管理。

  2. 組態管理頁面,單擊自訂設定檔頁簽。

  3. 單擊建立自訂設定檔

  4. 建立自訂設定檔頁面,配置以下參數,單擊建立

    參數

    說明

    路徑

    選擇檔案儲存體路徑。

    檔案名稱

    定義檔案名稱及尾碼,根據檔案類型選擇 .txt.xml.json

    檔案內容

    填寫具體的配置內容,確保符合所選檔案類型的格式要求。

    描述

    添加檔案的用途說明,便於後續管理和維護。

    說明

    系統預定義了一些關鍵設定檔,這些檔案的名稱和內容由系統維護,您無法直接修改其名稱或覆蓋其內容。不支援更改的檔案名稱包括:spark-defaults.confkyuubi-defaults.confexecutorPodTemplate.yamlspark-pod-template.yamldriver_log4j.xmlexecutor_log4j.xmlsession_log4j.xmlspark.propertiessyncer_log4j.xml

建立自訂設定檔後,您可以單擊操作列的編輯刪除,以修改或移除自訂設定檔。

使用自訂設定檔

樣本1:在Spark Thrift Server中啟用Ranger鑒權

本文通過為Serverless Spark Thrift Server啟用Ranger鑒權為例,示範如何建立並使用自訂設定檔。

  1. 建立自訂設定檔。

    建立一個名為ranger-spark-security.xml的設定檔,並將其儲存在路徑/etc/spark/conf中。檔案內容如下所示。

    <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><ranger_admin_port>,填寫為Ranger Admin服務的內網IP地址和連接埠。如果您串連的是阿里雲EMR on ECS叢集的Ranger服務,<ranger_admin_ip>可填寫為Master節點的內網IP地址,<ranger_admin_port>為6080。

  2. 配置Spark Thrift Server。

    對於希望開啟Ranger鑒權功能的Spark Thrift Server會話,需先停止該會話。在網路連接下拉式清單中選擇已建立的串連名稱,在Spark配置中添加以下配置項。編輯完成後,請務必重新啟動會話,以確保配置更改生效。

    spark.emr.serverless.user.defined.jars     /opt/ranger/ranger-spark.jar
    spark.sql.extensions                       org.apache.kyuubi.plugin.spark.authz.ranger.RangerSparkExtension
  3. 測試連接。

    使用Spark Beeline進行串連測試,更多串連方式請參見串連Spark Thrift Server。如果您訪問無許可權的資料庫、表或其他資源,系統將返回許可權失敗的錯誤提示。

    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)

樣本2:EMR on ECS遷移任務訪問OSS檔案

在從EMR on ECS遷移至Serverless Spark時,如果非SQL類型的任務需要訪問阿里雲OSS/OSS-HDFS,並且任務代碼中未通過SparkContext#hadoopConfiguration初始化FileSystem,則必須手動設定OSS/OSS-HDFS檔案系統的實作類別及相關訪問參數。否則,由於Serverless Spark預設不會注入core-site.xml檔案,遷移後的任務將因缺少對OSS/OSS-HDFS的支援而拋出UnsupportedFileSystemException等錯誤。

組態管理自訂設定檔頁簽,建立一個名為core-site.xml的設定檔,並將其儲存到路徑/etc/spark/conf中。該檔案內容如下所示。

<?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>OSS/OSS-HDFS的AccessKey ID</value>
    </property>
    <property>
        <name>fs.oss.accessKeySecret</name>
        <value>OSS/OSS-HDFS的AccessKey Secret</value>
    </property>
</configuration>

請將<region>替換為您實際使用的OSS地區,例如hangzhou