1. ホーム
  2. Web プログラミング
  3. その他全般

Jupyter notebookをベースとしたSparkクラスタ開発環境構築の詳細プロセス

2022-01-02 16:13:21

I. コンセプトの紹介

1. Sparkmagic:LivyサーバのSpark RESTを介して、リモートのSparkクラスタとJupyter Notebookで作業するためのツールである。Sparkmagicプロジェクトには、複数の言語でSparkコードを対話的に実行するためのフレームワークのセットと、Jupyter NotebookからSpark環境で実行するためのコード変換に使用できるカーネルが多数含まれています。

2. Livy SparkベースのオープンソースRESTサービスで、コードスニペットやシリアライズしたバイナリコードをREST経由でSparkクラスタに送信して実行させるもの。Scala、Python、RのコードスニペットをリモートSparkクラスタに送信して実行する、Java、Scala、Pythonで書かれたSparkジョブをリモートSparkクラスタに送信して実行する、クラスタで実行するバッチアプリケーションを送信するという基本機能を提供する。

II. 基本フレームワーク

を下図に示します。

III. 準備すること

自分で構築するか、MRSなどのHuaweiクラウド上のサービスを直接利用できるSaprkクラスタを用意し、クラスタにSparkクライアントをインストールします。Jupyter NotebookとLivyを同一ノード(Dockerコンテナでも仮想マシンでも可)にインストールし、インストールパッケージのパスを https://livy.incubator.apache.org/download/

IV. リヴィの設定と起動

livy.confを参照するように修正します。 https://enterprise-docs.anaconda.com/en/latest/admin/advanced/config-livy-server.html

以下の設定を追加します。

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="org.signin.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths" />
</provider>

livy-env.shを修正し、SPARK_HOME、HADOOP_CONF_DIR、その他の環境変数を設定する。

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="org.test.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths" />
</provider>

リヴィを開始します。

. /bin/livy-server start

V. Jupyter Notebookとsparkmagicのインストール

Jupyter Notebookはオープンソースで広く利用されているプロジェクトなので、ここではインストール方法については触れないことにします

sparkmagicはJupyter Notebookのカーネルのようなものと理解すればよく、pip install sparkmagic.をインストールするだけです。インストールが終わると、$HOME/.sarkmagic/config.jsonというファイルが生成されますが、これはsarkmagicの重要な設定ファイルであり、sparkの設定と互換性のあるものです。キーコンフィギュレーションは図のようになります。

ここで、urlはhttpとhttpsの両方のプロトコルをサポートするLivyサービスのipとポートです。

VI. スパークマジックカーネルを追加する

PYTHON3_KERNEL_DIR="$(jupyter kernelspec list | grep -w "python3" | awk '{print $2}')"
KERNELS_FOLDER="$(dirname "${PYTHON3_KERNEL_DIR}")"
SITE_PACKAGES="$(pip show sparkmagic|grep -w "場所" | awk '{print $2}')"
cp -r ${SITE_PACKAGES}/sparkmagic/kernels/pysparkkernel ${KERNELS_FOLDER} です。

VII. Jupyter Notebookでsparkのコードを実行し、検証する。

viii. Livyにアクセスし、現在のセッションログを表示します。

今回はJupyter notebookをベースにしたSparkクラスタ開発環境構築の詳細な流れについて紹介しましたが、Jupyter notebookをベースにしたSparkクラスタ開発環境構築の詳細については、スクリプトハウスの過去記事を検索するか、以下の関連記事を引き続き閲覧してください。