GCEでjupyter notebookを実装!~2020.06.18~


こんにちはkittyomoです!

今日は寝違えたのかわからないですが頭痛がすごいです……

でも、これまで苦戦していたjupyter notebookの実装をうれしいことにやっと実装することが出来ました!!またkaggleからデータをダウンロードすることもできました。なにが原因であったことも踏まえて環境構築の方法もお伝えしていきたいと思います!​

<jupyternotebookのエラーの原因>

以前、私はjupyter notebookをGCEで実行できるように試しましたがたくさんのエラーが起きてしまい断念しました。今回そのエラーの原因がわかり、jupyter notebookを使えるようになりました。

このエラーの原因というのが、http;//ipアドレス:ポート番号のところをhttps://ipアドレス:ポート番号にしていたというミスでした。。。

実際1日目でできてはいたものの本当に初歩的な間違いでずっとできずにいました。悔しいですね!でも、今回の失敗でたくさんのことを学べたのでそれはそれでよかったかなと思います!

そしてこれまで私が苦戦してきたjupyter notebookの環境構築の方法を以下に記したいと思うのでぜひ参考してみてください!


①jupyter notebookの環境構築

まずはGCEでインスタンスを作成します!

作成する際にこの記事を参考に作成しました。

そしてそのあとにSSH接続してシェルに移り以下のコマンドを打つだけです。

#まずはインスタンス立てたらとりあえずupdateしましょう!
$ sudo apt update
$ sudo apt upgrade

#pyenvを使用できるようにします!
#pyenvでインストールしたほうがyumが利用できないといった問題が起こりにくいようです。
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="${PYENV_ROOT}/bin:$PATH"' >> ~/.bash_profile
$ echo 'export PATH="${PYENV_ROOT}/shims:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

Anacondaのインストール

$ echo 'export PATH="$PYENV_ROOT/versions/anaconda3-2019.03/bin:$PATH"'
$ source ~/.bash_profile
$ pyenv global anaconda3-2019.03

これでAnaconda環境を使用することができます。

次にjupyter notebookに入るときのpasswardを設定します。

$ ipython

>>> from IPython.lib import passwd
>>> passwd()


#passwardの設定後
exit()

パスワードはjupyter notebookに入るときに使用するので忘れないようにメモしておきましょう。

またパスワードを設定したときに'sha1:###'という文字列が表示されるのでこれもメモしましょう。後で使用します!

$ jupyter notebook --generate-config

これを実行すると~/.jupyter/jupyter_notebook_config.pyというファイルが生成されると思います。そしたらvimなど自分が使い慣れているもので実行します。

開いたら,以下を張り付けて保存します

c = get_config()
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.password = 'sha1.....'#先ほどメモしていたやつです 
c.NotebookApp.port=ポート番号になります。ファイヤーウォールで設定したものをここに!

そしてjupyter notebookとshellに打ち込めば実行することができると思います。もし接続ができない場合の原因の一つとしてファイアウォールの設定があると思います。ファイアウォールの設定もここの記事に書いてあるので参考にしてみるといいかもしれません!

②GCEとGCSの接続方法に関して

この記事を参照に行いました!

#もろもろインストール
$ export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s`
$ echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list
$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install gcsfuse

#アカウント認証を行う
$ gcloud auth login

#kaggle コマンドを使用できるようにする
$ pip install kaggle

# ↓これによりsampleと「バケット」が接続されている状態になる
$ mkdir sample
$ gcsfuse バケット名 sample


この後に自分のkaggleアカウントに行きcreate new API Tokenでjsonファイルを取得する!そのjsonファイルを自分のバケットにアップロードする!

その後


# .kaggleにjsonファイルを移動する
$ mkdir .kaggle
$ gsutil cp gs://自分のバケットの名前/kaggle.json ./.kaggle


これによりkaggleからデータを取得することができるようになりました!


#kaggleからデータを持ってくる方法
#コンペのAPIから持ってくる!
kaggle competitions download -c titanic


#バケットにデータを移す方法
gsutil cp 移したいデータ gs://バケットの名前/

以上です!

できるまで私は時間が掛かりましたが、いい勉強になりました。

この記事が誰かのためになればと思います!

では






いいなと思ったら応援しよう!