AWS JupyterHubとは?AWSでJupyterHubを構築する方法について解説

この記事でわかること
JupyterHubとは?
JupyterHubとは、Jupyterノートブックを複数のユーザーで使用するための環境です。
Jupyterノートブックは、オープンソースの対話型Webアプリケーションで、Pythonなどのプログラムを記述・実行できます。ほかにも、データ分析やドキュメントの作成・共有もできるため、様々な場面で活用できるツールです。
Jupyterノートブックはシングルユーザーで使用しますが、JupyterHubを構築することでJupyterノートブックをグループ管理できるようになり、複数のユーザーで使用することができるようになります。
AWSにはAmazon EMRというコンポーネントが提供されており、その中にJupyterHubクラスターがあります。JupyterHubクラスターを作成すると、Dockerコンテナが作成されて、Jupyterノートブックに必要なコンポーネントがDockerコンテナ内で実行されます。
AWSでJupyterHubを構築する方法
AWSでJupyterHubを構築するには、Amazon EMRを使用します。Amazon EMRを使用してJupyterHubクラスターを作成すると、AWS上にDockerコンテナが作成され、このDockerコンテナ内でJupyterHubとSparkmagicのコンポーネントが実行されます。
Sparkmagicは、分散処理フレームワークのApache SparkとJupyterノートブックを連携させるためのカーネルのライブラリです。
デフォルトでインストールされるSparkmagicだけでなく、カーネルとライブラリは後から手動で追加することもできます。
JupyterHubクラスターの作成
AWSでJupyterHubクラスターを作成するには、AWS マネジメントコンソールを使用します。
JupyterHubクラスターは以下の手順で作成します。
①AWS マネジメントコンソールにサインインします。
②Amazon EMR コンソールを開きます。
③「クラスターの作成」>「詳細オプションに移動」を選択します。
④「ソフトウェア設定」で「JupyterHub」を指定して「次へ」を選択します。
⑤「ハードウェア構成」で「次へ」を選択します。
⑥「クラスターの全般設定」で「次へ」を選択します。
⑦「セキュリティオプション」でキーペアを指定して「クラスターの作成」を選択します。
AWS CLIを使用してクラスターを作成する
AWS マネジメントコンソールだけでなく、AWS CLIのcreate-clusterコマンドを使用してクラスターを作成することもできます。
クラスターを作成するには以下のコマンドを実行します。
1
|
aws emr create-cluster --name=[クラスター名] --release-label emr-5.32.0 --applications Name=JupyterHub --log-uri s3://MyBucket/MyJupyterClusterLogs --use-default-roles --instance-type m5.xlarge --instance-count 2 --ec2-attributes KeyName=[キーペア]
|
JupyterHubクラスターへの接続
JupyterHub の管理者やJupyterノートブックのユーザーは、JupyterHubクラスターのマスターノードにSSH接続します。
JupyterHubとJupyter Web UIにアクセスするために、デフォルトでは9443番ポートを利用しますが、設定ファイル(jupyterhub_config.py)を編集して別のポートを指定することもできます。
なお、マスターノードに接続するためには、JupyterHubクラスターが実行中である必要があります。
SSHアクセスの許可
JupyterHubクラスターに接続できるようにするには、クラスターに対してSSHアクセスを許可する必要があります。
クラスターにSSH接続を許可するには以下の手順で設定します。
①AWS マネジメントコンソールにサインインします。
②Amazon EMR コンソールを開きます。
③対象のクラスターを選択します。
④「セキュリティとアクセス」で「マスター」>「セキュリティグループ」を選択します。
⑤リストから「ElasticMapReduce-master」を選択します。
⑥「受信」>「編集」>「ルールの追加」
⑦SSHアクセスのルールを入力して「保存」を選択します。
JupyterHubの設定
JupyterHubやJupyterノートブックの設定をカスタマイズするには、JupyterHubクラスターのマスターノードの設定ファイルを編集します。
「jupyterhub_config.py」ファイルを編集することで、JupyterHubの設定を変更できます。
「jupyter_notebook_config.py」ファイルを編集することで、Jupyterノートブックの設定を変更できます。
「jupyter-sparkmagic-conf」ファイルを編集することで、Sparkmagicの設定を変更できます。
設定ファイルを編集したら、jupyterhubコンテナを再起動することで設定が適用されます。
JupyterHubでPAM 認証の使用
JupyterHubでユーザーを認証させるには、JupyterHubのPluggable Authentication Module (PAM) を使用します。
PAM認証を使用するには、2ステップの作業が必要となります。
①JupyterHubコンテナにオペレーティングシステムのユーザーを追加する
②オペレーティングシステムのユーザーをJupyterHubユーザーとして追加する
それぞれのステップの詳細を説明します。
JupyterHubコンテナにオペレーティングシステムのユーザーを追加する
jupyterhubコンテナにオペレーティングシステムのユーザーを追加するには以下のコマンドを実行します。
1
2
|
sudo docker exec jupyterhub useradd -m -s /bin/bash -N diego
sudo docker exec jupyterhub bash -c "echo diego:diego | chpasswd"
|
オペレーティングシステムのユーザーをJupyterHubユーザーとして追加する
オペレーティングシステムのユーザーをJupyterHubユーザーとして追加するには、jupyterHubの管理者パネルを使用するか、REST APIを使用します。
jupyterHubの管理者パネルを使用する場合は、以下の手順で操作します。
①SSHでマスターノードに接続して、管理者権限を持つIDでサインインします。
②「コントロールパネル」>「管理者」を選択します。
③「ユーザーの追加」を選択します。
④「ユーザーの追加」または「管理者」>「管理者の追加」を選択します。
REST APIを使用する場合は、以下の手順で操作します。
①SSHでマスターノードに接続します。
②以下のコマンドを実行します。
1
|
curl -XPOST -H "Authorization: token AdminToken" "https:$([ホスト名]):9443/hub/api/users/[ユーザー名]
|
AWSのJupyterHubを使用して効率的な開発をしよう!
jupyterHubをAWSに構築するということは、AWS上で開発~運用にかかわるツールやリソースがまとまることになり、効率的に開発、運用、管理ができるようになります。
設定することは多いように見えますが、オンプレミス環境でjupyterHubを構築するよりも簡単で、Dockerコンテナで提供されているため、平準化された環境を提供することができます。
一度環境を構築してしまえばあとは管理するだけなので、ぜひともAWSのjupyterHubを活用して効率的な開発作業を目指しましょう。
Search キーワード検索
Popular 人気の記事
-
AWS EBSとは?8つの特徴とEBSボリュームについても解説
公開: 更新: -
AWSのT2とT3の違いとは?用途に合った選択をしよう!
公開: 更新:
reccomended おすすめ記事
-
AWSエンジニアの将来性は?年収と必要なスキル6つをご紹介!
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
通信キャリア向け基盤構築/東京都渋谷区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/在宅ワーク
月給65万~65万円東京都渋谷区(神泉駅) -
各種対応/東京都新宿区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給60万~60万円東京都新宿区(高田馬場駅) -
要件定義、構築/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給60万~60万円東京都千代田区(飯田橋駅) -
運用構築/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給56万~56万円東京都千代田区(飯田橋駅) -
監視システムの保守、更改/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給55万~55万円東京都千代田区(神保町駅) -
各種対応/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】
月給60万~60万円東京都千代田区(虎ノ門駅)