如何从 Sparklyr 连接 Google Dataproc 集群?

Posted

技术标签:

【中文标题】如何从 Sparklyr 连接 Google Dataproc 集群?【英文标题】:How may I connect Google Dataproc cluster from Sparklyr? 【发布时间】:2017-02-07 00:34:18 【问题描述】:

我是 Spark 和 GCP 的新手。我尝试使用

连接到它
sc <- spark_connect(master = "IP address")

但它显然无法工作(例如,没有身份验证)。

我该怎么做?是否可以从 Google Cloud 外部连接到它?

【问题讨论】:

【参考方案1】:

从集群外部连接到 Spark on Dataproc 存在两个问题:配置和网络访问。它通常有点困难并且不完全支持,所以我建议在集群内使用 sparklyr。

配置

Google Cloud Dataproc 在 Hadoop YARN 上运行 Spark。你实际上需要使用yarn-cluster:

sc <- spark_connect(master = 'yarn-client')

但是,您还需要在您的 $SPARK_HOME 目录中添加一个 yarn-site.xml 以将 Spark 指向正确的主机名。

网络访问

虽然您可以在 Google Compute Engine 网络上使用 firewall rules 为您的 IP 地址打开端口,但这并不是一种好的安全做法。您还需要将 YARN 配置为使用实例的外部 IP 地址或有办法解析您机器上的主机名。

在 Dataproc 上使用 sparklyr

sparklyr 可以通过 SSH 连接到主节点并运行 R REPL 来安装和运行:

$ # Needed for the curl library
$ sudo apt-get install -y libcurl4-openssl-dev
$ R
> install.packages('sparklyr')
> library(sparklyr)
> sc <- spark_connect(master = 'yarn-client')

我相信RStudio Server支持SOCKS代理,可以设置as described here,但是我对RStudio不是很熟悉。

我将Apache Zeppelin on Dataproc 用于 R 笔记本,但它会自动加载 SparkR,我认为目前它不能与 sparklyr 配合使用。

【讨论】:

以上是关于如何从 Sparklyr 连接 Google Dataproc 集群?的主要内容,如果未能解决你的问题,请参考以下文章

使用 sparklyr 时无法在本地 Spark 连接中加载 .csv 数据

从 Sparklyr 中提取和可视化模型树

Sparklyr:使用 group_by,然后连接组中行中的字符串

SparklyR 从 Spark 上下文中删除表

使用 SparklyR“选择”从 Spark 数组列中提取元素

如何使用 'sparklyr::replace.na()' 替换一列上的 NaN?