【问题标题】:Distribute files on cluster creation with Spark on EC2在 EC2 上使用 Spark 创建集群时分发文件
【发布时间】:2014-08-30 12:49:19
【问题描述】:

我正在 AmazonEC2 基础架构上使用 Spark。在执行我的 Spark 应用程序之前,我需要将自定义文件(在我的情况下是本机库)分发并发送到所有工作节点。我正在寻找类似于 AmazonElastic MapReduce (EMR) 提供的引导功能,开发人员可以使用它在引导时在每个节点上运行自定义脚本阶段。

到目前为止,我使用了 Spark 提供的copy-dir 脚本(位于spark-ec2 文件夹中),它将确定的文件复制到集群中所有可用的节点,其工作原理如下:

想象一个需要存在于所有节点中的本机库 (myLib.so)。第一步是在我们想要通过集群传播的确切目录中找到文件。之后,我们可以运行copy-dir脚本如下:

spark-ec2/ > sh copy-dir my/file/location/myLib.so

但是,这种方法只能在创建集群后使用,我想知道是否存在任何引导的可能性。

【问题讨论】:

  • spark-ec2 中的 --user-data 选项可能就是您要找的。​​span>

标签: amazon-ec2 amazon apache-spark


【解决方案1】:

查看 sc.addFile()。这可用于将文件分发到所有工作节点

【讨论】:

  • 感谢您的回答,但我不是在寻找您提到的内容。相反,我需要在 Spark 执行之前(在集群创建时)分发一个文件,用于不包括 Spark 应用程序的其他目的。
【解决方案2】:

为了将代码从主节点分发到工作节点/从节点 使用 copy-dir 脚本并提及要分发的文件/目录的路径。 示例 - 如果我在 /root/ 目录中有一个 wordcount.py 文件 - 以下代码将文件分发到工作节点/从属节点

sudo /root/spark-ec2/copy-dir /root/wordcount.py 
RSYNC'ing /root/wordcount.py to slaves...
ec2-54-175-163-32.compute-1.amazonaws.com

【讨论】:

  • 感谢@Chaitanya 的回答,但是您所说的解决方案已经包含在问题中了。
  • 啊,是的 - 执行相同脚本的另一种方式。对
猜你喜欢
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 2019-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多