JupyterHub 구성 및 관리 - Amazon EMR

JupyterHub 구성 및 관리

JupyterHub 및 관련 구성 요소는 Ubuntu 운영 체제를 실행하는 jupyterhub라는 Docker 컨테이너 내에서 실행됩니다. 컨테이너 내에서 실행 중인 구성 요소를 관리하는 방법에는 여러 가지가 있습니다.

주의

컨테이너 내에서 수행하는 사용자 지정 작업은 컨테이너를 다시 시작하는 경우 유지되지 않을 수 있습니다. 스크립트를 구성하거나 아니면 컨테이너 구성을 자동화하여 보다 쉽게 사용자 지정 구성을 재현할 수 있도록 하는 것이 좋습니다.

명령줄을 사용하여 관리

SSH를 사용하여 마스터 노드에 연결되면 Docker 명령줄 인터페이스(CLI)를 사용하고 이름(jupyterhub)이나 ID로 컨테이너를 지정하여 명령을 실행할 수 있습니다. 예를 들어, sudo docker exec jupyterhub command는 컨테이너 내에서 실행 중인 애플리케이션이나 운영 체제에 의해 인식되는 명령을 실행합니다. 이 명령을 사용하면 운영 체제에 사용자를 추가하고 추가 애플리케이션 및 라이브러리를 Docker 컨테이너 내에 설치할 수 있습니다. 예를 들어, 기본 컨테이너 이미지에는 패키지 설치 시 사용할 Conda가 들어 있으므로 마스터 노드 명령줄에서 다음 명령을 실행하면 애플리케이션, Keras를 컨테이너 내에 설치할 수 있습니다.

sudo docker exec jupyterhub conda install keras

단계를 제출하여 관리

단계는 작업을 클러스터에 제출하는 방법입니다. 단계는 클러스터를 실행할 때 제출할 수도 있고, 실행 중인 클러스터에 제출할 수도 있습니다. 명령줄에서 실행하는 명령은 command-runner.jar를 사용하여 단계로 제출될 수 있습니다. 자세한 내용은 Amazon EMR 관리 안내서에서 CLI 및 콘솔을 사용하여 단계 작업Amazon EMR 클러스터에서 명령 및 스크립트 실행 섹션을 참조하세요.

예를 들어, 로컬 컴퓨터에서 다음 AWS CLI 명령을 사용하면 앞의 예에서 마스터 노드의 명령줄에서 했던 것과 동일한 방법으로 keras를 설치할 수 있습니다.

aws emr add-steps --cluster-id MyClusterID --steps Name="Command Runner",Jar="command-runner.jar",Args="/usr/bin/sudo","/usr/bin/docker","exec","jupyterhub","conda","install","keras"

또한 일련의 단계를 스크립트로 구성하고 스크립트를 Amazon S3에 업로드한 다음 script-runner.jar을 사용하여 클러스터를 생성하거나 스크립트를 단계로 추가할 때 스크립트를 실행할 수 있습니다. 자세한 내용은 Amazon EMR 클러스터에서 명령 및 스크립트 실행 섹션을 참조하세요. 예시는 예제: 여러 사용자를 추가하는 Bash 스크립트에서 확인하세요.

REST API를 사용하여 관리

Jupyter, JupyterHub 및 JupyterHub용 HTTP 프록시는 요청을 보내는 데 사용할 수 있는 REST API를 제공합니다. JupyterHub에 요청을 보내려면, 요청이 있는 API 토큰을 전달해야 합니다. 마스터 노드 명령줄에서 curl 명령을 사용하면 REST 명령을 실행할 수 있습니다. 자세한 정보는 다음 자료를 참조하세요.

다음은 JupyterHub용 REST API를 사용하여 사용자 목록을 가져오는 방법을 보여주는 예제입니다. 이 명령은 이전에 생성된 관리 토큰을 전달하고 기본 포트 9443를 JupyterHub에 사용하여 보다 쉽게 볼 수 있도록 결과를 jq에 보냅니다.

curl -XGET -s -k https://$HOST:9443/hub/api/users \ -H "Authorization: token $admin_token" | jq .