

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

# Apache Ranger 対応の Amazon EMR クラスター用に Zeppelin を設定する
<a name="emr-ranger-configure-zeppelin"></a>

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

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

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

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

   `shiro.ini` ファイルを変更して、優先認証メカニズムを実装します。Zeppelin は Active Directory、LDAP、PAM、Knox SSO をサポートしています。詳細については、「[Apache Shiro authentication for Apache Zeppelin](https://zeppelin.apache.org/docs/0.8.2/setup/security/shiro_authentication.html)」を参照してください。

1. **エンドユーザーを偽装するように 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": [
       ]
     }
   ]
   ```

   「[コンソールでのインスタンスグループの再設定](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps-running-cluster.html#emr-configure-apps-running-cluster-console)」の手順に従って、コンソールを使用して Amazon EMR クラスターにこれらの設定を追加することもできます。

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

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

   ```
   zeppelin ALL=(ALL) NOPASSWD:ALL
   ```

1. **インタプリタの設定を変更して、自分のプロセスでユーザージョブを実行する**。

   すべてのインタープリタについて、「分離された」プロセスでインタープリタを「ユーザーごとに」インスタンス化するように設定します。  
![Amazon EMR と Apache Ranger のアーキテクチャ図。](http://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/images/per_user.png)

1. **`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"
   ```

1. **Zeppelin を再起動する**

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

   ```
   sudo systemctl restart zeppelin
   ```