View a markdown version of this page

Apache Ranger 対応の Amazon EMR クラスター用に Zeppelin を設定する - Amazon EMR

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

Apache Ranger 対応の Amazon EMR クラスター用に Zeppelin を設定する

このトピックでは、Apache Ranger 対応の Amazon EMR クラスター用に Apache Zeppelin を設定して、インタラクティブなデータ探索用のノートブックとして Zeppelin を使用できるようにする方法について説明します。Zeppelin は、Amazon EMR リリースバージョン 5.0.0 以降に含まれています。以前のリリースバージョンには、サンドボックスアプリケーションとして Zeppelin が含まれています。詳細については、「Amazon EMR リリースガイド」の「Amazon EMR 4.x リリースバージョン」を参照してください。

デフォルトでは、Zeppelin はデフォルトのログインとパスワードで設定されており、これはマルチテナント環境では安全ではありません。

Zeppelin を設定するには、以下のステップを実行します。

  1. 認証メカニズムを変更する

    shiro.ini ファイルを変更して、優先認証メカニズムを実装します。Zeppelin は Active Directory、LDAP、PAM、Knox SSO をサポートしています。詳細については、「Apache Shiro authentication for Apache Zeppelin」を参照してください。

  2. エンドユーザーを偽装するように Zeppelin を設定する

    Zeppelin がエンドユーザーを偽装することを許可すると、Zeppelin から送信されたジョブを、そのエンドユーザーとして実行できます。以下の設定を core-site.xml に追加します。

    [ { "Classification": "core-site", "Properties": { "hadoop.proxyuser.zeppelin.hosts": "*", "hadoop.proxyuser.zeppelin.groups": "*" }, "Configurations": [ ] } ]

    次に、/etc/hadoop/conf にある hadoop-kms-site.xml に次の設定を追加します。

    [ { "Classification": "hadoop-kms-site", "Properties": { "hadoop.kms.proxyuser.zeppelin.hosts": "*", "hadoop.kms.proxyuser.zeppelin.groups": "*" }, "Configurations": [ ] } ]

    コンソールでのインスタンスグループの再設定」の手順に従って、コンソールを使用して Amazon EMR クラスターにこれらの設定を追加することもできます。

  3. Zeppelin にエンドユーザーとして sudo を許可する

    以下が含まれているファイル /etc/sudoers.d/90-zeppelin-user を作成します。

    zeppelin ALL=(ALL) NOPASSWD:ALL
  4. インタプリタの設定を変更して、自分のプロセスでユーザージョブを実行する

    すべてのインタープリタについて、「分離された」プロセスでインタープリタを「ユーザーごとに」インスタンス化するように設定します。

    Amazon EMR と Apache Ranger のアーキテクチャ図。
  5. zeppelin-env.sh を変更する

    以下を zeppelin-env.sh に追加し、Zeppelin がエンドユーザーとして起動インタプリタを開始するようにします。

    ZEPPELIN_IMPERSONATE_USER=`echo ${ZEPPELIN_IMPERSONATE_USER} | cut -d @ -f1` export ZEPPELIN_IMPERSONATE_CMD='sudo -H -u ${ZEPPELIN_IMPERSONATE_USER} bash -c'

    以下を zeppelin-env.sh に追加し、デフォルトのノートブックアクセス許可を作成者のみの読み取り専用に変更します。

    export ZEPPELIN_NOTEBOOK_PUBLIC="false"

    最後に、以下を zeppelin-env.sh に追加し、最初の CLASSPATH ステートメントの後に EMR RecordServer クラスパスを含めます。

    export CLASSPATH="$CLASSPATH:/usr/share/aws/emr/record-server/lib/aws-emr-record-server-connector-common.jar:/usr/share/aws/emr/record-server/lib/aws-emr-record-server-spark-connector.jar:/usr/share/aws/emr/record-server/lib/aws-emr-record-server-client.jar:/usr/share/aws/emr/record-server/lib/aws-emr-record-server-common.jar:/usr/share/aws/emr/record-server/lib/jars/secret-agent-interface.jar"
  6. Zeppelin を再起動する

    以下のコマンドを実行して、Zeppelin を再起動します。

    sudo systemctl restart zeppelin