2016-03-30 21 views
6

Spark 1.6.0を1台のMaster(スタンドアローン)、8G RAM搭載の2xワーカー、2CPUの3つのVMで使用しています。Jupyter&PySpark:複数のノートブックを実行するには

私は下にカーネルの設定を使用しています:

{ 
"display_name": "PySpark ", 
"language": "python3", 
"argv": [ 
    "/usr/bin/python3", 
    "-m", 
    "IPython.kernel", 
    "-f", 
    "{connection_file}" 
], 
"env": { 
    "SPARK_HOME": "<mypath>/spark-1.6.0", 
    "PYTHONSTARTUP": "<mypath>/spark-1.6.0/python/pyspark/shell.py", 
    "PYSPARK_SUBMIT_ARGS": "--master spark://<mymaster>:7077 --conf spark.executor.memory=2G pyspark-shell --driver-class-path /opt/vertica/java/lib/vertica-jdbc.jar" 
} 
} 

は現在、これは動作します。 pysparkシェルのように、スパークコンテキストsc & をインポートせずに使用できます。

複数のノートブックを使用すると問題が発生します。 私のスパークマスターでは、ちょっと意味が分かりますが、一度に1つしか実行できない2つの 'pyspark-shell'アプリがあります。しかしここで、「走っている」とは、何かを実行することを意味するものではなく、私がノートブックで何かを動かしていなくても、「走っている」と表示されます。これを考えると、ノートブック間でリソースを共有することはできません。これはかなり悲しいです(私は現在、2番目のシェルを実行するために最初のシェル(=ノートブックカーネル)をkillする必要があります)。

どうすればいいか教えてください! また、私はカーネルで作業している方法が「ベストプラクティス」であるかどうかは分かりませんが、私はすでに火花を設定するだけで問題が生じました& jupyterが一緒に働くこと。

Thxをすべての

+0

@AlbertoBonsanto? :) – eliasah

+0

@eliasahこれは間違いない。いくつかのアドバイスを得るのにまだ良い:p – pltrdy

+1

sparkcontextを共有しようとしていますか? – eliasah

答えて

0

問題は、メタストア(ダービー)を格納するためにスパークによって使用されるデータベースです。 Derbyは軽量データベースシステムであり、一度に1つのSparkインスタンスしか実行できません。 解決策は、複数インスタンス(postgres、mysql ...)を処理する別のデータベースシステムをセットアップすることです。

たとえば、postgres DBを使用できます。

  • スパークでpostgres jarファイルを追加/瓶
  • スパーク用のユーザー、パスワード、およびデシベルを追加
  • がマシン
  • 上のpostgresをインストールし、スパークのconfで設定ファイル(ハイブ-site.xmlの)を追加しますLinuxのシェル上のpostgresで/ハイブ(ハイブ-site.xmlの中で自分の価値観に依存します)

例:

# download postgres jar 
wget https://jdbc.postgresql.org/download/postgresql-42.1.4.jar 

# install postgres on your machine 
pip install postgres 

# add user, pass and db to postgres 
psql -d postgres -c "create user hive" 
psql -d postgres -c "alter user hive with password 'pass'" 
psql -d postgres -c "create database hive_metastore" 
psql -d postgres -c "grant all privileges on database hive_metastore to hive" 

ハイブ-site.xmlを:それは並行性の問題を解決する方法を

<configuration> 

<property> 
    <name>javax.jdo.option.ConnectionURL</name> 
    <value>jdbc:postgresql://localhost:5432/hive_metastore</value> 
</property> 

<property> 
    <name>javax.jdo.option.ConnectionDriverName</name> 
    <value>org.postgresql.Driver</value> 
</property> 

<property> 
<name>javax.jdo.option.ConnectionUserName</name> 
    <value>hive</value> 
</property> 

<property> 
    <name>javax.jdo.option.ConnectionPassword</name> 
    <value>pass</value> 
</property> 

</configuration> 
関連する問題