Les fichiers de configuration personnalisés vous permettent de définir les paramètres d'environnement pour des tâches telles que les jobs et les sessions. Plusieurs formats de fichier sont pris en charge, notamment XML et JSON, garantissant la cohérence et la sécurité de la configuration sur l'ensemble de vos charges de travail.
Prérequis
Vous avez créé un espace de travail. Pour plus d'informations, consultez la rubrique Gérer les espaces de travail.
Créer un fichier de configuration personnalisé
-
Accédez à la page Gestion de la configuration.
Connectez-vous à la console E-MapReduce.
Dans le volet de navigation de gauche, sélectionnez EMR Serverless > Spark.
Sur la page Spark, cliquez sur le nom de l'espace de travail cible.
Sur la page EMR Serverless Spark, cliquez sur Gestion de la configuration dans le volet de navigation de gauche.
Sur la page Configurations, cliquez sur l'onglet ConfigMaps.
Cliquez sur Create Custom Configuration File.
-
Sur la page Create Custom Configuration File, configurez les paramètres suivants et cliquez sur create.
|
**Paramètre**
|
**Description**
| | --- | --- | |
**Path**
|
Sélectionnez le chemin de stockage du fichier.
| |
**Name**
|
Spécifiez le nom du fichier et son extension. Sélectionnez `.txt`, `.xml` ou `.json` en fonction du type de fichier.
| |
**File Content**
|
Saisissez le contenu de la configuration. Le contenu doit respecter le format du type de fichier sélectionné.
| |
**Description**
|
(Facultatif) Description de l'objectif du fichier pour faciliter son identification.
|RemarqueLe système inclut des fichiers de configuration prédéfinis qui ne peuvent pas être renommés ni écrasés. Les noms de fichier suivants sont réservés :
spark-defaults.conf,kyuubi-defaults.conf,executorPodTemplate.yaml,spark-pod-template.yaml,driver_log4j.xml,executor_log4j.xml,session_log4j.xml,spark.propertiesetsyncer_log4j.xml.
Une fois le fichier de configuration personnalisé créé, cliquez sur Path ou Name dans la colonne Actions pour le modifier ou le supprimer.
Utiliser les fichiers de configuration personnalisés
Exemple 1 : Activer l'authentification Ranger
Activez l'authentification Ranger pour un serveur Spark Thrift dans EMR Serverless à l'aide d'un fichier de configuration personnalisé.
-
Créez un fichier de configuration personnalisé.
Créez un fichier de configuration nommé
ranger-spark-security.xmlet enregistrez-le dans/etc/spark/conf. Utilisez le contenu suivant :<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>Remplacez
<ranger_admin_ip>et<ranger_admin_port>par l'adresse IP interne et le port de votre service Ranger Admin. Si vous vous connectez au service Ranger dans un cluster EMR on ECS, utilisez l'adresse IP interne du nœud maître pour<ranger_admin_ip>et 6080 pour<ranger_admin_port>. -
Configurez le serveur Spark Thrift.
Pour activer l'authentification Ranger pour une session de serveur Spark Thrift, commencez par arrêter la session. Dans la liste déroulante File Content, sélectionnez le nom de connexion que vous avez créé. Ajoutez ensuite les configurations suivantes dans Description. Redémarrez la session pour que les modifications prennent effet.
spark.emr.serverless.user.defined.jars /opt/ranger/ranger-spark.jar spark.sql.extensions org.apache.kyuubi.plugin.spark.authz.ranger.RangerSparkExtension -
Testez la connexion.
Utilisez Spark Beeline pour tester la connexion. Pour plus d'informations sur les méthodes de connexion, consultez la rubrique Se connecter au serveur Spark Thrift. Si vous tentez d'accéder à une base de données, une table ou une autre ressource sans les autorisations requises, le système renvoie une erreur d'autorisation refusée.
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)
Exemple 2 : Accéder aux fichiers OSS
Lors de la migration de jobs non SQL d'EMR on ECS vers EMR Serverless, les jobs accédant à Alibaba Cloud Object Storage Service (OSS) ou à OSS-HDFS peuvent échouer avec une erreur UnsupportedFileSystemException car EMR Serverless ne charge pas automatiquement le fichier core-site.xml. Pour résoudre ce problème, fournissez manuellement la configuration, sauf si le code de votre job initialise déjà le FileSystem via SparkContext#hadoopConfiguration.
Sur l'onglet Edit de la page Delete, créez un fichier de configuration nommé core-site.xml et enregistrez-le dans /etc/spark/conf. Le contenu du fichier est le suivant :
<?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>Your AccessKey ID for OSS or OSS-HDFS</value>
</property>
<property>
<name>fs.oss.accessKeySecret</name>
<value>Your AccessKey Secret for OSS or OSS-HDFS</value>
</property>
</configuration>
Remplacez <region> par la région OSS que vous utilisez, par exemple hangzhou.