カスタムプロファイル機能を使用すると、特定の要件に基づいてパーソナライズされた構成を作成し、タスク実行環境を柔軟に制御できます。XML や JSON などの複数のファイル形式をサポートし、構成のセキュリティと一貫性を確保し、バッチ処理やセッションなどのさまざまなタスクに直接適用できます。
前提条件
ワークスペースが作成されている必要があります。 詳細については、「ワークスペース管理」をご参照ください。
カスタムプロファイルの作成
構成管理ページに移動します。
E-MapReduce コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[Spark] ページで、対象のワークスペースの名前をクリックします。
[EMR Serverless Spark] ページで、左側のナビゲーションウィンドウの [構成管理] をクリックします。
[構成管理] ページで、[カスタムプロファイル] タブをクリックします。
[カスタムプロファイルの作成] をクリックします。
[カスタムプロファイルの作成] ページで、パラメーターを設定し、[作成] をクリックします。
パラメーター
説明
パス
ファイルストレージパスを選択します。
ファイル名
ファイル名と拡張子を定義します。ファイルの種類に基づいて
.txt、.xml、または.jsonを選択します。ファイル内容
特定の構成内容を入力します。内容が選択したファイルタイプのフォーマット要件に準拠していることを確認してください。
説明
後の管理とメンテナンスを容易にするために、ファイルの目的の説明を追加します。
説明システムは、いくつかの主要な構成ファイルを事前定義します。これらのファイルの名前と内容はシステムによって維持されます。名前を直接変更したり、内容を上書きしたりすることはできません。変更できないファイル名には、
spark-defaults.conf、kyuubi-defaults.conf、executorPodTemplate.yaml、spark-pod-template.yaml、driver_log4j.xml、executor_log4j.xml、session_log4j.xml、spark.properties、およびsyncer_log4j.xmlが含まれます。
カスタムプロファイルを作成した後、[操作] 列の [編集] または [削除] をクリックして、カスタムプロファイルを変更または削除できます。
カスタムプロファイルの使用
例 1: Spark Thrift Server での Ranger 認証の有効化
このトピックでは、Serverless Spark Thrift Server の Ranger 認証を有効にする例を使用して、カスタムプロファイルの作成方法と使用方法を説明します。
カスタムプロファイルを作成します。
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>パラメーターをマスターノードの内部 IP アドレスに設定し、<ranger_admin_port>パラメーターを 6080 に設定します。Spark Thrift Server を構成します。
Ranger 認証を有効にする必要がある Spark Thrift Server セッションの場合、まずセッションを停止する必要があります。作成した接続名を [ネットワーク接続] ドロップダウンリストから選択し、[Spark 構成] に次の構成項目を追加します。Spark Thrift Server を変更した後、再起動して変更を有効にする必要があります。
spark.emr.serverless.user.defined.jars /opt/ranger/ranger-spark.jar spark.sql.extensions org.apache.kyuubi.plugin.spark.authz.ranger.RangerSparkExtension接続をテストします。
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: OSS ファイルにアクセスする EMR on ECS 移行タスク
EMR on ECS から Serverless Spark に移行する際に、SQL 以外のタイプのタスクが Alibaba Cloud 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> を、hangzhou など、使用している実際の OSS リージョンに置き換えます。