Arquivos de configuração personalizados permitem definir configurações de ambiente para tarefas como jobs e sessões. Vários formatos de arquivo são suportados, incluindo XML e JSON, garantindo consistência e segurança nas configurações em todas as cargas de trabalho.
Pré-requisitos
Crie um workspace. Para mais informações, consulte Manage workspaces.
Criar um arquivo de configuração personalizado
-
Acesse a página Configuration Management.
Faça login no console do E-MapReduce.
No painel de navegação à esquerda, escolha EMR Serverless > Spark.
Na página Spark, clique no nome do workspace desejado.
Na página EMR Serverless Spark, clique em Configuration Management no painel de navegação à esquerda.
Na página Configurations, clique na aba ConfigMaps.
Clique em Create Custom Configuration File.
-
Na página Create Custom Configuration File, configure os parâmetros a seguir e clique em create.
Parâmetro
Descrição
Path
Selecione o caminho de armazenamento do arquivo.
Name
Especifique o nome e a extensão do arquivo. Escolha
.txt,.xmlou.jsonconforme o tipo de arquivo.File Content
Insira o conteúdo da configuração. O conteúdo deve obedecer aos requisitos de formato do tipo de arquivo selecionado.
Description
Opcional. Descreva a finalidade do arquivo para facilitar a identificação.
NotaO sistema inclui arquivos de configuração predefinidos que não podem ser renomeados ou sobrescritos. Os seguintes nomes de arquivo são reservados:
spark-defaults.conf,kyuubi-defaults.conf,executorPodTemplate.yaml,spark-pod-template.yaml,driver_log4j.xml,executor_log4j.xml,session_log4j.xml,spark.propertiesesyncer_log4j.xml.
Após criar um arquivo de configuração personalizado, clique em Edit ou Delete na coluna Actions para modificá-lo ou removê-lo.
Usar arquivos de configuração personalizados
Exemplo 1: Ativar autenticação do Ranger
Ative a autenticação do Ranger para um Spark Thrift Server no EMR Serverless usando um arquivo de configuração personalizado.
-
Crie um arquivo de configuração personalizado.
Crie um arquivo de configuração chamado
ranger-spark-security.xmle salve-o em/etc/spark/conf. Use o seguinte conteúdo:<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>Substitua
<ranger_admin_ip>e<ranger_admin_port>pelo endereço IP interno e pela porta do serviço Ranger Admin. Caso se conecte ao serviço Ranger em um cluster EMR on ECS, use o endereço IP interno do nó mestre para<ranger_admin_ip>e 6080 para<ranger_admin_port>. -
Configure o Spark Thrift Server.
Para ativar a autenticação do Ranger em uma sessão do Spark Thrift Server, primeiro pare a sessão. Na lista suspensa Normal Network Connection, selecione o nome da conexão criada. Em seguida, adicione as configurações abaixo em Spark Configuration. Após editar, reinicie a sessão para aplicar as alterações.
spark.emr.serverless.user.defined.jars /opt/ranger/ranger-spark.jar spark.sql.extensions org.apache.kyuubi.plugin.spark.authz.ranger.RangerSparkExtension -
Teste a conexão.
Use o Spark Beeline para testar a conexão. Para mais informações sobre métodos de conexão, consulte Connect to Spark Thrift Server. Ao tentar acessar um banco de dados, tabela ou outro recurso sem as permissões necessárias, o sistema retorna um erro de permissão negada.
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)
Exemplo 2: Acessar arquivos do OSS
Ao migrar jobs não SQL do EMR on ECS para o EMR Serverless, jobs que acessam o Object Storage Service (OSS) ou OSS-HDFS da Alibaba Cloud podem falhar com o erro UnsupportedFileSystemException, pois o EMR Serverless não carrega automaticamente o arquivo core-site.xml. Para resolver isso, forneça a configuração manualmente, a menos que o código do job já inicialize o FileSystem por meio de SparkContext#hadoopConfiguration.
Na aba ConfigMaps da página Configurations, crie um arquivo de configuração chamado core-site.xml e salve-o em /etc/spark/conf. O conteúdo do arquivo é o seguinte:
<?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>
Substitua <region> pela região do OSS utilizada, por exemplo, hangzhou.