【问题标题】:GCP Dataproc: Directly working with Spark over Yarn ClusterGCP Dataproc:通过 Yarn Cluster 直接使用 Spark
【发布时间】:2019-03-16 10:31:00
【问题描述】:

我正在尽量减少对代码的更改,因此我想知道是否有办法从我的个人 PC/VM 提交火花流作业,如下所示:

spark-submit --class path.to.your.Class --master yarn --deploy-mode client \
    [options] <app jar> [app options]

不使用 GCP SDK。

我还必须指定一个目录,其中包含我可以从 Ambari 下载的配置文件 HADOOP_CONF_DIR。 有没有办法做同样的事情?

谢谢

【问题讨论】:

  • 没有不涉及云 sdk 的方法。可以使用dataproc jobs submitcompute ssh -c。为什么不想使用 cloud sdk?
  • @tix 以前我在独立模式下使用 Spark,并且在每个 batchFinish 上我都在执行一个外部脚本。所以我想在本地运行 Spark 驱动程序,在客户端进程 --deploy-mode client(我将修复我的示例)中能够运行外部脚本。
  • 为了能够使用本地工具,您需要打开 VM 端口,除非您有桥接的 VPC,否则不建议这样做。如果问题是运行脚本,您可以通过初始化操作将其下载到主 VM,或者将其作为资源打包到您的 jar 中,并在程序启动时提取。
  • 此脚本在我的主服务的上下文中运行,因此我无法将其提取到 Dataproc 主服务器中。如果我将在与 Dataproc 相同的项目中的 GCP 中创建 VM 并配置网络,您认为可以在 VM 上运行 spark 驱动程序吗?我只是不确定我在哪里可以得到HADOOP CONFIGURATION FILES

标签: google-cloud-dataproc


【解决方案1】:

将外部机器设置为 YARN 客户端节点通常很难做到,也不是一个可以轻松使用 Dataproc 的工作流。

在评论中你提到你真正想做的是

  1. 向 Dataproc 集群提交 Spark 作业。
  2. 在每个“batchFinish”(StreamingListener.onBatchCompleted?) 上运行一个本地脚本。
    • 脚本具有依赖关系,这意味着它无法在 Dataproc 主节点内运行。

同样,在 Dataproc 集群外部配置客户端节点并使其与spark-submit 一起工作不会直接起作用。但是,如果您可以配置您的网络,使 Spark 驱动程序(在 Dataproc 中运行)可以访问您需要运行的服务/脚本,然后在需要时调用它。

如果您在可以访问 Dataproc 集群网络的虚拟机上运行服务,那么您的 Spark 驱动程序应该能够访问该服务。

【讨论】:

  • 感谢您的回复。你是对的,这就是我要做的,但我还有另一种情况,我必须在计算之间保存 sparkContext,因为我要保留一些(不是全部)结果以在以后的计算中使用它。所以我需要每个计算=火花作业相同的火花上下文。据我了解,我无法将 job1 和 job2 提交给 Dataproc 并在 job2 中使用 job1 的持久数据
猜你喜欢
  • 2017-05-08
  • 1970-01-01
  • 2019-03-29
  • 2018-08-09
  • 1970-01-01
  • 1970-01-01
  • 2016-01-18
  • 2016-01-23
  • 2015-12-05
相关资源
最近更新 更多