Apache Spark プラグイン - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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 が表示されます)。

Ranger Admin に登録SPARKされたAMAZON「-EMR-」。

ステップ 5: AMAZON-EMR-SPARK アプリケーションのインスタンスを作成する

[Service Name] (サービス名): 使用されるサービス名 (表示されている場合)。推奨値は amazonemrspark です。EMR セキュリティ設定を作成するときに必要になるため、このサービス名を書き留めます。

[Display Name] (表示名): このインスタンスに表示される名前。推奨値は amazonemrspark です。

[Common Name For Certificate] (証明書の共通名): クライアントプラグインから管理サーバーに接続するために使用する証明書内の CN フィールド。この値は、プラグイン用に作成されたTLS証明書の CN フィールドと一致する必要があります。

Ranger 管理のサービス作成。
注記

このプラグインのTLS証明書は、Ranger 管理サーバーの信頼ストアに登録されている必要があります。詳細については、「TLS 証明書」を参照してください。

SparkSQL ポリシーの作成

新しいポリシーを作成する場合、入力するフィールドは次のとおりです。

[Policy Name] (ポリシー名): このポリシーの名前。

[Policy Label] (ポリシーラベル): このポリシーにつけることができるラベル。

[Database] (データベース): このポリシーが適用されるデータベース。ワイルドカード「*」はすべてのデータベースを表します。

[Table] (テーブル): このポリシーが適用されるテーブル。ワイルドカード「*」はすべてのテーブルを表します。

EMR Spark 列 : このポリシーが適用される列。ワイルドカード「*」はすべての列を表します。

[Description] (説明): このポリシーの説明。

Ranger Admin は SparkSQL ポリシーの詳細を作成します。

ユーザーとグループを指定するには、以下のユーザーおよびグループを入力してアクセス許可を付与します。[許可] 条件および [拒否] 条件の除外を指定することもできます。

Ranger Admin SparkSQL ポリシーの詳細で条件を許可できます。

許可条件と拒否条件を指定したら、[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、パーティションの場所はテーブルの場所の子ディレクトリである必要があります。パーティションの場所がテーブルの場所と異なるパーティションへのデータの挿入はサポートされていません。