sequenceiq/sparkのDockerイメージはCentOS 6.5を使っているので、そのままではIPythonのインスト-ルに失敗してしまいます。SequenceIQにはUbuntuのbaseimageもあります。これから自分でSparkのDockerfileを作ろうと思いましたが、ちょどよいイメージがLogBaseInc/docker-spark-ipythonがありました。
このシリーズ
- Spark on Dockerで分散型機械学習を始める - Part 1: インストール
- Spark on Dockerで分散型機械学習を始める - Part 2: UbuntuでIPython Notebookを使う
- Spark on Dockerで分散型機械学習を始める - Part 3: ローカルモードでspark-shellを起動する
- Spark on Dockerで分散型機械学習を始める - Part 4: AmbariでHadoopとSparkのsingle nodeセットアップ
CentOS 6.5の場合
前回作成したDockerコンテナはCentOS 6.5のbaseimageを使っています。
$ cat /etc/redhat-release
CentOS release 6.5 (Final)
Pythonのバージョンは2.6.6です。
$ python -V
Python 2.6.6
Python 2.7以上を使わないとiPythonがインストールできません。
$ curl https://bootstrap.pypa.io/get-pip.py -o - | sudo python
$ sudo pip install ipython
Collecting ipython
Downloading ipython-2.3.1.tar.gz (11.9MB)
100% |################################| 11.9MB 1.1MB/s
ERROR: IPython requires Python version 2.7 or 3.3 or above.
Complete output from command python setup.py egg_info:
ERROR: IPython requires Python version 2.7 or 3.3 or above.
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-bzXfTe/ipython
Ubuntu 14.04.1の場合
LogBaseInc/docker-spark-ipythonを使いDockerコンテナを起動します。
$ docker pull logbase/spark-ipython
$ docker run -d --name spark-ipython -p 8888:8888 logbase/spark-ipython
シェルを起動してバージョンを確認します。
$ docker exec -it spark-ipython /bin/bash
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"
Pythonのバージョンは2.7.6、IPythonは2.3.1です。
$ python -V
Python 2.7.6
$ ipython -V
2.3.1
IPython Notebookを使う
ngrokを使いDockerホストの8888ポートをトンネルします。
$ docker run -it --rm wizardapps/ngrok:latest ngrok $(docker inspect --format="{{ .NetworkSettings.IPAddress }}" spark-ipython):8888
ブラウザでIPython Notebookを開いて簡単なテストで動作確認します。