4
2

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 3 years have passed since last update.

SageMaker NotebookからEMRのSparkクラスターに接続する

Last updated at Posted at 2021-03-13

概要

SageMaker NotebookからEMRで構築したSparkクラスターに接続する際の手順についてまとめてみました。

1. EMRクラスターの作成

EMRのマネジメントコンソールを開いて [クラスターを作成] を押下し、さらに [詳細オプションに移動する] を押下して詳細オプション画面に遷移します。

ステップ1. ソフトウェアおよびステップ

「ソフトウェア設定」で、必要なソフトウェアにチェックを入れます。ここではデフォルトで選択されているHadoop, Pig, Hive, Hueに加え以下のソフトウェアを選択し、[次へ] を押下します。

  • Livy 0.7.0 ... SparkのRESTサービス
  • JupyterEnterpriseGateway 2.1.0 ... EMR Notebookを利用する際に必要
  • Spark 2.4.7

スクリーンショット 2021-03-13 16.48.00.png

「ソフトウェア設定の編集」のテキストボックスに以下を追記します。この設定により、PySparkでPython3が使用されるようになります。

[{
  "Classification": "spark-env",
  "Configurations": [{
    "Classification": "export",
    "Properties": {
      "PYSPARK_PYTHON": "/usr/bin/python3"
    }
  }]
}]

ステップ2. ハードウェア設定

デフォルトのまま [次へ] を押下します。(クラスタスケーリングなど、必要に応じて設定してください)

スクリーンショット 2021-03-13 16.52.05.png

ステップ3. クラスター全般設定

「クラスター名」に任意の名前を入力し、[次へ] を押下します。

スクリーンショット 2021-03-13 16.54.39.png

ステップ4. セキュリティ

「EC2キーペア」に、マスターノード接続時に使用するキーペアを選択し、[クラスターを作成] を押下します。

スクリーンショット 2021-03-13 16.56.36.png

しばらく待つと、クラスターのステータスが「開始中」から「実行中」または「待機中」に変化します。

2. セキュリティグループの設定

EC2マネジメントコンソールの [セキュリティグループ] メニューから、SageMaker Notebookインスタンスにアタッチするセキュリティグループを作成します。

スクリーンショット 2021-03-13 17.05.02.png

作成したEMRクラスターのマスターノード用のセキュリティグループのインバウンドルールに以下を追加します。

  • タイプ : カスタムTCP
  • プロトコル : TCP
  • ポート範囲 : 8998
  • ソース : (作成したSageMaker Notebook用セキュリテイグループ)

スクリーンショット 2021-03-13 17.28.20.png

3. SageMaker Notebook の作成

SageMakerマネジメントコンソールに移動し、ノートブックを作成します。Sparkインスタンスへの接続に必要な設定は以下の2つです。

ノートブックインスタンス設定

[ノートブックインスタンス設定]-[追加設定]-[ライフサイクル設定] で「新しいライフサイクル設定の作成」を押下し、以下のスクリプトを追記します。

# PARAMETERS
EMR_MASTER_IP=your.emr.master.ip

cd /home/ec2-user/.sparkmagic

echo "Fetching Sparkmagic example config from GitHub..."
wget https://raw.githubusercontent.com/jupyter-incubator/sparkmagic/master/sparkmagic/example_config.json

echo "Replacing EMR master node IP in Sparkmagic config..."
sed -i -- "s/localhost/$EMR_MASTER_IP/g" example_config.json
mv example_config.json config.json

echo "Sending a sample request to Livy.."
curl "$EMR_MASTER_IP:8998/sessions"

EMR_MASTER_IP を、作成したEMRクラスターのマスターノードのものに書き換えます。

セキュリティグループ設定

[ネットワーク] より、VPCおよびサブネットを選択し、セキュリティグループに既に作成した "SageMakerSecurityGroup" を選択します。

4. EMRインスタンスとの接続確認

起動したノートブックインスタンスからJupyterLabを開きます。"Sparkmagic (pyspark)" カーネルを選択し、ノートブックを開きます。

スクリーンショット 2021-03-13 17.46.41.png

セルで以下を実行し、以下のような出力が得られることを確認します。

In
%%info
Out
Current session configs: {'driverMemory': '1000M', 'executorCores': 2, 'kind': 'pyspark'}
No active sessions.

参考

4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?