如何一次运行多个 Spark 2.0 实例(在多个 Jupyter Notebook 中)?
Posted
技术标签:
【中文标题】如何一次运行多个 Spark 2.0 实例(在多个 Jupyter Notebook 中)?【英文标题】:How to run multiple instances of Spark 2.0 at once (in multiple Jupyter Notebooks)? 【发布时间】:2017-02-06 22:41:55 【问题描述】:我有一个脚本,可以方便地在 Jupyter Notebook 中使用 Spark。这很好,除非我在第二个笔记本中运行 spark 命令(例如测试一些临时工作)。
我收到一条很长的错误消息,其中的关键部分似乎是:
Py4JJavaError:调用 o31.json 时出错。 : java.lang.RuntimeException: java.lang.RuntimeException: 无法实例化 org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient`
。 . .
原因:ERROR XSDB6:另一个 Derby 实例可能已经启动了数据库 /metastore_db
问题似乎是我一次只能运行一个 Spark 实例。
如何设置 Spark 以同时在多个笔记本中运行?
【问题讨论】:
【参考方案1】:默认情况下,Spark 在 Hive 和 Hadoop 之上运行,并将其用于数据库转换的指令存储在 Derby - 一个轻量级数据库系统中。 Derby 一次只能运行一个 Spark 实例,因此当您启动第二个笔记本并开始运行 Spark 命令时,它会崩溃。
要解决这个问题,您可以将 Spark 的 Hive 安装连接到 Postgres 而不是 Derby。
Brew 安装 postgres,如果您还没有安装它。
然后下载postgresql-9.4.1212.jar
(假设你运行的是java 1.8 aka java8)
来自https://jdbc.postgresql.org/download.html
将此 .jar 文件移动到您的 Spark 安装的 /libexec/jars/
目录。
例如:/usr/local/Cellar/apache-spark/2.0.1/
(在 Mac 上,您可以通过在命令行中输入 brew info apache-spark
来查找 Spark 的安装位置)
接下来在 /libexec/conf
目录中为您的 Spark 安装创建 hive-site.xml。
例如:/usr/local/Cellar/apache-spark/2.0.1/libexec/conf
这可以通过文本编辑器完成 - 只需使用“.xml”扩展名保存文件。
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>mypassword</value>
</property>
</configuration>
'hive' 和 'mypassword' 可以替换为对您有意义的任何内容 - 但必须与下一步匹配。
最后在 Postgress 中创建用户和密码:在命令行中运行以下命令 -
psql
CREATE USER hive;
ALTER ROLE hive WITH PASSWORD 'mypassword';
CREATE DATABASE hive_metastore;
GRANT ALL PRIVILEGES ON DATABASE hive_metastore TO hive;
\q
就是这样,你完成了。 Spark 现在应该同时在多个 Jupyter Notebook 中运行。
【讨论】:
以上是关于如何一次运行多个 Spark 2.0 实例(在多个 Jupyter Notebook 中)?的主要内容,如果未能解决你的问题,请参考以下文章