翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Apache Spark プラグイン
Amazon EMR は を統合しEMR RecordServer て、Spark のきめ細かなアクセスコントロールを提供していますSQL。EMRの RecordServer は、Apache Ranger 対応クラスターのすべてのノードで実行される特権プロセスです。Spark ドライバーまたはエグゼキュターが SparkSQL ステートメントを実行すると、すべてのメタデータとデータリクエストが を経由します RecordServer。の詳細についてはEMR RecordServer、Amazon EMR コンポーネント「」ページを参照してください。
トピック
サポートされている機能
SQL ステートメント/Ranger アクション | STATUS | サポートされているEMRリリース |
---|---|---|
SELECT |
サポート |
5.32 以降 |
SHOW DATABASES |
サポート |
5.32 以降 |
SHOW COLUMNS |
サポート |
5.32 以降 |
SHOW TABLES |
サポート |
5.32 以降 |
SHOW TABLE PROPERTIES |
サポート |
5.32 以降 |
DESCRIBE TABLE |
サポート |
5.32 以降 |
INSERT OVERWRITE |
サポート |
5.34 および 6.4 以降 |
INSERT INTO | サポート | 5.34 および 6.4 以降 |
ALTER TABLE |
サポート |
6.4 以降 |
CREATE TABLE |
サポート |
5.35 および 6.7 以降 |
CREATE DATABASE |
サポート |
5.35 および 6.7 以降 |
DROP TABLE |
サポート |
5.35 および 6.7 以降 |
DROP DATABASE |
サポート |
5.35 および 6.7 以降 |
DROP VIEW |
サポート |
5.35 および 6.7 以降 |
CREATE VIEW |
サポート外 |
Spark を使用する場合、以下の機能がサポートされますSQL。
-
Hive Metastore 内のテーブルに対するきめ細かいアクセスコントロール、およびポリシーを、データベース、テーブル、および列レベルで作成できます。
-
Apache Ranger ポリシーには、ユーザーおよびグループへの付与ポリシーと拒否ポリシーを含めることができます。
-
監査イベントは CloudWatch ログに送信されます。
、INSERT、ALTERまたは DDLステートメントを使用するようにサービス定義を再デプロイする
注記
Amazon 6EMR.4 以降では、、INTO、OVERWRITEまたは INSERT ステートメントSQLで Spark INSERT を使用できますALTERTABLE。Amazon 6EMR.7 以降では、Spark を使用してデータベースとテーブルSQLを作成または削除できます。Apache Spark サービス定義がデプロイされた Apache Ranger サーバー上の既存のインストール環境がある場合は、次のコードを使用してサービス定義を再デプロイします。
# Get existing Spark service definition id calling Ranger REST API and JSON processor curl --silent -f -u
<admin_user_login>
:<password_for_ranger_admin_user>
\ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>
*:6182/service/public/v2/api/servicedef/name/amazon-emr-spark' | jq .id # Download the latest Service definition wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-spark.json # Update the service definition using the Ranger REST API curl -u<admin_user_login>
:<password_for_ranger_admin_user>
-X PUT -d @ranger-servicedef-amazon-emr-spark.json \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>
*:6182/service/public/v2/api/servicedef/<Spark service definition id from step 1>
'
サービス定義のインストール
の EMRApache Spark サービス定義をインストールするには、Ranger 管理サーバーを設定する必要があります。「Ranger 管理サーバーを設定する」を参照してください。
Apache Spark サービス定義をインストールするには、次の手順に従います。
ステップ 1: Apache Ranger 管理サーバーSSH内
例:
ssh ec2-user@ip-xxx-xxx-xxx-xxx.ec2.internal
ステップ 2: サービス定義および Apache Ranger 管理サーバープラグインをダウンロードする
一時ディレクトリに、サービス定義をダウンロードします。このサービス定義は Ranger 2.x バージョンでサポートされています。
mkdir /tmp/emr-spark-plugin/ cd /tmp/emr-spark-plugin/ wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-spark-plugin-2.x.jar wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-spark.json
ステップ 3: Amazon 用の Apache Spark プラグインをインストールする EMR
export RANGER_HOME=.. # Replace this Ranger Admin's home directory eg /usr/lib/ranger/ranger-2.0.0-admin mkdir $RANGER_HOME/ews/webapp/WEB-INF/classes/ranger-plugins/amazon-emr-spark mv ranger-spark-plugin-2.x.jar $RANGER_HOME/ews/webapp/WEB-INF/classes/ranger-plugins/amazon-emr-spark
ステップ 4: Amazon の Apache Spark サービス定義を登録する EMR
curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-spark.json \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef'
このコマンドが正常に実行されると、次のイメージに示すようにSPARK、Ranger 管理 UI にAMAZON「-EMR-」という新しいサービスが表示されます (Ranger バージョン 2.0 が表示されます)。
ステップ 5: AMAZON-EMR-SPARK アプリケーションのインスタンスを作成する
[Service Name] (サービス名): 使用されるサービス名 (表示されている場合)。推奨値は amazonemrspark
です。EMR セキュリティ設定を作成するときに必要になるため、このサービス名を書き留めます。
[Display Name] (表示名): このインスタンスに表示される名前。推奨値は amazonemrspark
です。
[Common Name For Certificate] (証明書の共通名): クライアントプラグインから管理サーバーに接続するために使用する証明書内の CN フィールド。この値は、プラグイン用に作成されたTLS証明書の CN フィールドと一致する必要があります。
注記
このプラグインのTLS証明書は、Ranger 管理サーバーの信頼ストアに登録されている必要があります。詳細については、「TLS 証明書」を参照してください。
SparkSQL ポリシーの作成
新しいポリシーを作成する場合、入力するフィールドは次のとおりです。
[Policy Name] (ポリシー名): このポリシーの名前。
[Policy Label] (ポリシーラベル): このポリシーにつけることができるラベル。
[Database] (データベース): このポリシーが適用されるデータベース。ワイルドカード「*」はすべてのデータベースを表します。
[Table] (テーブル): このポリシーが適用されるテーブル。ワイルドカード「*」はすべてのテーブルを表します。
EMR Spark 列 : このポリシーが適用される列。ワイルドカード「*」はすべての列を表します。
[Description] (説明): このポリシーの説明。
ユーザーとグループを指定するには、以下のユーザーおよびグループを入力してアクセス許可を付与します。[許可] 条件および [拒否] 条件の除外を指定することもできます。
許可条件と拒否条件を指定したら、[Save] (保存) をクリックします。
考慮事項
EMR クラスター内の各ノードは、ポート 9083 のメインノードに接続できる必要があります。
制限事項
Apache Spark プラグインの現在の制限事項は次のとおりです。
-
Record Server は、常に Amazon EMRクラスターでHMS実行されている に接続します。必要に応じて、リモートモードに接続するHMSように を設定します。Apache Spark Hive-site.xml 設定ファイル内に設定値を入れないでください。
-
CSV または Avro で Spark データソースを使用して作成されたテーブルは、 では読み取れませんEMR RecordServer。Hive を使用してデータの作成および書き込みを行い、Record を使用して読み取りを行います。
-
Delta Lake および Hudi テーブルはサポートされていません。
-
ユーザーは、デフォルトのデータベースにアクセスできる必要があります。これは Apache Spark の要件です。
-
Ranger 管理サーバーはオートコンプリートをサポートしていません。
-
Amazon 用 SparkSQL プラグインEMRは、行フィルターやデータマスキングをサポートしていません。
-
Spark ALTERTABLEで を使用する場合SQL、パーティションの場所はテーブルの場所の子ディレクトリである必要があります。パーティションの場所がテーブルの場所と異なるパーティションへのデータの挿入はサポートされていません。