3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS EC2へのJupyterHub(+R)導入についての備忘録

Last updated at Posted at 2019-09-26

目次

  • はじめに
  • JupyterHubとは
  • EC2上への環境構築
    • JupyterHubのinstallと起動
    • JupyterHub上でRも使えるようにする
  • まとめ
  • 参考情報

はじめに

アドホック分析のためのリソースとしてAWS EC2を用意してもらったものの、環境構築は自分でなんとかしなければならない、ということがありそうなのでEC2上に最低限の分析環境を構築する手順をまとめ自分用の備忘録としておきます。

JupyterHubとは

詳しくはDocumentation for JupyterHubに説明がありますが、JupyterHubを利用すると複数人向けのJupyterNotebook利用環境を整備することができます。1つのサーバを複数人のアナリストで共用する際などに便利です。RにおけるRstudioServerのような位置づけだと思います。

EC2上への環境構築

EC2のAMIはAmazon Linux 2を使っています。以下、EC2へssh接続(ユーザはデフォルトのec2-user)できている前提での手順を記載しています。

STEP1:Python3のinstall

EC2上で以下コマンドを実行します。

$sudo amazon-linux-extras install python3

STEP2:pipとJupyterのinstall

以下コマンドを実行します。今回使ったEC2にはデフォルトでPython2系が入っていますが、先程installしたpython3を指定してpipを実行したいため、「$python3 -m pip」として実行しています( 詳しくはpython.jpの環境構築ガイドに記載があります)。

$sudo python3 -m pip install --upgrade pip
$sudo python3 -m pip install jupyter

STEP3:nodejs, npm (Node Package Manager) のinstall

※ここからはrootユーザにスイッチして作業を進めます。
EC2ではデフォルトのユーザであるec2-userで以下コマンドを実行すればrootユーザに切り替えることができます。

$sudo su

(ec2-userのままで作業を進めると、構築したJupyterHub環境が他のユーザからは見られなくなるため、途中でrootユーザに切り替えて作業を行っています。)

次に、以下コマンドでnvm(Node Version Manager)をinstallします。

$curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

ターミナルから一度出て再ログインし、以下コマンドを実行してnvmのバージョンが表示されればOKです。

$nvm --version

以下コマンドでnodejsをinstallします。ここでnpmも一緒にinstallされます。

$nvm install node

STEP4:JupyterHubのinstall

以下コマンドを実行してJupyterHubをinstallします。

# まず、configurable-http-proxyをinstallしておく
$npm install -g configurable-http-proxy

# JupyterHubのinstall
$python3 -m pip install jupyterhub==0.9.6

# installに成功していればJupyterHubのヘルプが表示されます
$jupyterhub -h

今回JupyterHubのバージョンを0.9.6に指定してinstallしていますが、指定しなければ最新版(2019/09/24時点では最新版はv1.0.0)がinstallされます。私の環境では、v1.0.0をinstallするとjupyterhub -h コマンド実行時に謎のエラー文言(参考:Error message when executing jupyterhub -h
)が出たため、敢えて古いバージョンのv0.9.6を指定してinstallすることにしました。

STEP5:configファイル作成

configファイルを作成したいディレクトリに移動して、以下コマンドを実行します。

$jupyterhub --generate-config

STEP6:configファイルの編集

アクセス権限付与するユーザをホワイトリスト形式でconfigファイルに記載します。詳しくはAuthentication and User Basicsに記載されています。

# アクセス許可するユーザをホワイトリスト形式で記載。デフォルトの認証方法はPAM
c.Authenticator.whitelist = {'user01', 'user02'}

# 管理者権限のユーザを記載
c.Authenticator.admin_users = {'user01'}

以下コマンドで試しに起動してみます。

$jupyterhub

「http://<*ec2のip*>:8000」をブラウザで開くと以下のログイン画面が表示されます。configファイルに設定したユーザ、パスワードでログインできるようになっています。
スクリーンショット 2019-09-24 22.33.48.png

ログイン後の画面。(既に.ipynbファイルが置いてありますが、初めてログインした際は何もないです。)
スクリーンショット 2019-09-24 22.42.24.png
Pythonを使うだけならこれでOKなのですが、欲張ってJupyterからRも実行できるようにしてみようと思います。

STEP7:R環境の準備

R実行環境の準備はクラスメソッドさんの記事(AWS EC2(Ubuntu 16.04)にJupyterHub+R実行環境を構築する)でほぼ問題なく進めることができました。ただ、内容がやや昔のものであるためか、自分の環境(EC2)ではapt-getコマンドが使えなかったため、Rのinstallにamazon-linux-extrasを使う点は変更しています。

EC2にec2-userとしてssh接続して以下コマンドを実行します。

$sudo amazon-linux-extras install R3.4

installが問題なければ、以下コマンドでRのバージョン情報が表示されます。

$R --version

以下のように$R を実行するとR環境に入ります。

$ R

# (以下、実行結果)
# R version 3.4.3 (2017-11-30) -- "Kite-Eating Tree"
# Copyright (C) 2017 The R Foundation for Statistical Computing
# Platform: x86_64-koji-linux-gnu (64-bit)

# R は、自由なソフトウェアであり、「完全に無保証」です。
# 一定の条件に従えば、自由にこれを再配布することができます。
# 配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。

# R は多くの貢献者による共同プロジェクトです。
# 詳しくは 'contributors()' と入力してください。
# また、R や R のパッケージを出版物で引用する際の形式については
# 'citation()' と入力してください。

# 'demo()' と入力すればデモをみることができます。
# 'help()' とすればオンラインヘルプが出ます。
# 'help.start()' で HTML ブラウザによるヘルプがみられます。
# 'q()' と入力すれば R を終了します。

>

R環境で以下コマンドを実行し、パッケージinstallとJupyter上で実行する準備をします。

# パッケージのinstall
> install.packages(c('rzmq','repr','IRkernel','IRdisplay'), repos = c('http://irkernel.github.io/', getOption('repos')))

# kernelをJupyter上で使えるようにする
> IRkernel::installspec()

# R環境から出る
> q()
# Save workspace image? [y/n/c]: y
$ 

JupyterHubを再起動すると、以下のように「New」からRのNotebookが選択できるようになっていました。
スクリーンショット 2019-09-24 22.47.13.png
試しにRコードを実行してみたところ、問題なく実行できました。
スクリーンショット 2019-09-24 22.49.08.png

まとめ

EC2ではapt-getが使えなかったり、ec2-userのまま作業を進めると他ユーザからJupyterHubが見えなかったりするなど、色々な壁にぶち当たりましたが、なんとか試行錯誤の末、最低限の環境を作るに至りました。本来はsysmdを使用した自動実行までやっておくと良いと思います。インフラ周りの知識、AWSの知識がまだまだ足りないと感じますが、データ分析とバランスをとりつつ勉強していければと思います。

参考情報

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?