

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Apache Ranger를 지원하는 Amazon EMR 클러스터를 위한 Zeppelin 구성
<a name="emr-ranger-configure-zeppelin"></a>

이 주제에서는 Zeppelin을 사용한 대화형 데이터 탐색을 위해 Apache Ranger 지원 Amazon EMR 클러스터에 대해 [Apache Zeppelin](https://zeppelin.apache.org/)을 구성하는 방법을 다룹니다. 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/ko_kr/emr/latest/ManagementGuide/images/per_user.png)

1. **`zeppelin-env.sh` 수정**

   Zeppelin이 최종 사용자로 인터프리터를 시작할 수 있도록 `zeppelin-env.sh`에 다음을 추가합니다.

   ```
   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"
   ```

   마지막으로 첫 번째 `CLASSPATH` 문 뒤에 EMR RecordServer 클래스 경로를 포함하도록 `zeppelin-env.sh`에 다음을 추가합니다.

   ```
   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
   ```