目次


Jupyter で BigInsights の pyspark を実行する

Comments

はじめに

IBM InfoSphere BigInsights は、大量の構造化データと非構造化データをそのままの形式で分析するためのエンタープライズ・レベルの豊富な先進的なアナリティクス機能を提供します。オープンソースの Apache Hadoop と IBM の先進機能(先進的なテキスト・アナリティクス機能、データ探索のための IBM BigSheets、パフォーマンス、セキュリティー、管理用のさまざまな機能など)を組み合わせたソフトウェアです。

BigInsights は Spark を含んでおり、Spark を利用して Hadoop に貯めたデータの分析や機械学習の実行が可能です。Spark のソースコードの記述や実行はシェルからも可能ですが、インタラクティブに実行と確認ができる開発環境の方が、より生産性が高まります。

本稿では、IBM BigInsights に Jupyter を導入して Spark から利用する方法を記述します。

今回の構成について

以下の構成で、インストールおよび動作確認をしています。また、各ノードは外部へのネットワーク接続があることを前提としています。ネットワーク接続がない場合は各種インストールバイナリをローカルにダウンロードしておく必要があります。

  • Redhat Enterprise Linux: 7.2
  • BigInsights: v4.2 (管理ノード 1、データノード 1)
  • Python: 2.7

インストールの手順は以下となります

  1. pip のインストール
  2. Jupyter のインストール
  3. Jupyter の起動

以下詳細を記述します。

1

pip のインストール

python のパッケージ管理は pip を使って行うことができます。今回の環境では python2.7 がインストールされていますが、pip がインストールされていないため、pip のインストールを実行します。Hadoop で Spark を動作させる場合には、各ノードにパッケージがインストールされている必要があります。よって、pip のインストールはすべてのノードで実行してください。

command> wget https://bootstrap.pypa.io/get-pip.py

Resolving bootstrap.pypa.io (bootstrap.pypa.io)... python getpip.py

151.101.40.175
Connecting to bootstrap.pypa.io (bootstrap.pypa.io)|151.101.40.175|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1595408 (1.5M) [text/x-python]
Saving to: ‘get-pip.py’

> python get-pip.py

Collecting pip
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
    100% |????????????????????????????????| 1.3MB 799kB/s
Collecting wheel
  Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
    100% |????????????????????????????????| 71kB 7.0MB/s
Installing collected packages: pip, wheel
Successfully installed pip-9.0.1 wheel-0.29.0
[root@bigjp2 ~]# pip install numpy
Collecting numpy
  Downloading numpy-1.12.0-cp27-cp27mu-manylinux1_x86_64.whl (16.5MB)
    100% |????????????????????????????????| 16.5MB 47kB/s

インストール後の確認を行います。

command> python -m pip –V

pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)
2

Jupyter のインストール

Jupyter のインストールを行います。Jupyter サービスを起動したいノードで実行してください。インストール後、jupyter コマンドが動作することを確認します。

command> pip install jupyter

command> jupyter --version
4.2.1
3

Jupyter の利用

3.1 環境確認

3.1.1 hosts ファイル

/etc/hosts に localhost があることを確認します。

command> cat /etc/hosts | grep localhost

127.0.0.1   localhost

3.1.2 ライブラリ

Spark の Yarn モードで実行する場合は、実際に実行が行われるデータノードに python のライブラリが存在する必要があります。利用するライブラリがあれば必ずデータノード側でも「pip install」を実行してください。

3.2 Jupyter の起動

以下コマンドで Jupyter を起動します。以下コマンドは複数行にわたっていますが、1 行に記述します。Jupyter のオプション指定は「PYSPARK_DRIVER_PYTHIN_OPTS」を利用します。この例では、すべての IP からの接続を許可、実行時にブラウザを立ち上げない、という指定をしています。Spark に関するオプションは「pyspark」の後に続いて記述します。 この例では、yarn での動作を指定しています。

command> PYSPARK_DRIVER_PYTHON="jupyter" PYSPARK_DRIVER_PYTHON_OPTS="notebook --ip='*' --no-browser" pyspark --master yarn

[W 15:58:22.254 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[I 15:58:22.260 NotebookApp] Serving notebooks from local directory: /root
[I 15:58:22.260 NotebookApp] 0 active kernels
[I 15:58:22.261 NotebookApp] The Jupyter Notebook is running at: http://[all ip addresses on your system]:8888/?token=be9537eafc8c7ba0e9cfe271599e30a1a4db0eb49939201d
[I 15:58:22.261 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 15:58:22.261 NotebookApp]

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://localhost:8888/?token=be9537eafc8c7ba0e9cfe271599e30a1a4db0eb49939201d

このコマンドは起動スクリプトとして作成しておくことをお勧めします。

3.3 Jupyter への接続と利用

Web ブラウザを起動して Jupyter への接続を行います。起動後に表示される URL(赤文字)が接続 URL となります。外部サーバーから接続する場合はホスト名を修正してください。

以下のような画面が立ち上がります。

以下のように補完やマジックコマンドの実行が確認できます。

*コード補完(TAB ボタン)*

*マジックコマンド*

*Spark 機械学習の実行*

3.4 パスワードの設定

Jupyter への接続は 3.3 で実施した通り token を使うことができますが、毎回 token を入力するのは面倒なのでパスワードを設定します。パスワードログインを実行するためには以下の 2 ステップを実施します。

3.4.1 コンフィグファイルの作成

command> jupyter notebook --generate-config

Writing default config to: /home/kai/.jupyter/jupyter_notebook_config.py

3.4.2 パスワードの設定

Jupyter の画面から以下の通り入力して password を入力します。なお、ipython シェルからの実行でも構いません。

出力されたハッシュを config ファイルに記述します。パラメータ c.NotebookApp.password のコメントアウトを外してハッシュ値を記述します。

command> cat /home/kai/.jupyter/jupyter_notebook_config.py | grep password

## Hashed password to use for web authentication.
#  The string should be of the form type:salt:hashed-password.
c.NotebookApp.password = u'sha1:0ea6d021be9e:3ff443fbd601510e982cb83564c3445f11d86c9c'

ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management, ビジネス・アナリティクス
ArticleID=1042269
ArticleTitle=Jupyter で BigInsights の pyspark を実行する
publish-date=03022017